Refresh docs
diff --git a/docs/build.sh b/docs/build.sh
index b0eb937..d5cdeb6 100755
--- a/docs/build.sh
+++ b/docs/build.sh
@@ -25,4 +25,4 @@
export GOOGLE_APPENGINE=$HOME/projects/google_appengine/
export DJANGO_SETTINGS_MODULE=fakesettings
export PYTHONPATH=`pwd`/..:$GOOGLE_APPENGINE
-epydoc --output epy --graph classtree --parse-only --docformat plaintext apiclient oauth2client
+epydoc --output epy --graph all --parse-only --docformat plaintext apiclient oauth2client
diff --git a/docs/dyn/adexchangebuyer_v1_2.accounts.html b/docs/dyn/adexchangebuyer_v1_2.accounts.html
new file mode 100644
index 0000000..3cc70b1
--- /dev/null
+++ b/docs/dyn/adexchangebuyer_v1_2.accounts.html
@@ -0,0 +1,258 @@
+<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="adexchangebuyer_v1_2.html">Ad Exchange Buyer API</a> . <a href="adexchangebuyer_v1_2.accounts.html">accounts</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#get">get(id)</a></code></p>
+<p class="firstline">Gets one account by ID.</p>
+<p class="toc_element">
+ <code><a href="#list">list()</a></code></p>
+<p class="firstline">Retrieves the authenticated user's list of accounts.</p>
+<p class="toc_element">
+ <code><a href="#patch">patch(id, body)</a></code></p>
+<p class="firstline">Updates an existing account. This method supports patch semantics.</p>
+<p class="toc_element">
+ <code><a href="#update">update(id, body)</a></code></p>
+<p class="firstline">Updates an existing account.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="get">get(id)</code>
+ <pre>Gets one account by ID.
+
+Args:
+ id: integer, The account id (required)
+
+Returns:
+ An object of the form:
+
+ { # Configuration data for an Ad Exchange buyer account.
+ "kind": "adexchangebuyer#account", # Resource type.
+ "maximumTotalQps": 42, # The sum of all bidderLocation.maximumQps values cannot exceed this. Please contact your technical account manager if you need to change this.
+ "bidderLocation": [ # Your bidder locations that have distinct URLs.
+ {
+ "url": "A String", # The URL to which the Ad Exchange will send bid requests.
+ "region": "A String", # The geographical region the Ad Exchange should send requests from. Only used by some quota systems, but always setting the value is recommended. Allowed values:
+ # - ASIA
+ # - EUROPE
+ # - US_EAST
+ # - US_WEST
+ "maximumQps": 42, # The maximum queries per second the Ad Exchange will send.
+ },
+ ],
+ "cookieMatchingNid": "A String", # The nid parameter value used in cookie match requests. Please contact your technical account manager if you need to change this.
+ "id": 42, # Account id.
+ "cookieMatchingUrl": "A String", # The base URL used in cookie match requests.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="list">list()</code>
+ <pre>Retrieves the authenticated user's list of accounts.
+
+Args:
+
+Returns:
+ An object of the form:
+
+ { # An account feed lists Ad Exchange buyer accounts that the user has access to. Each entry in the feed corresponds to a single buyer account.
+ "items": [ # A list of accounts.
+ { # Configuration data for an Ad Exchange buyer account.
+ "kind": "adexchangebuyer#account", # Resource type.
+ "maximumTotalQps": 42, # The sum of all bidderLocation.maximumQps values cannot exceed this. Please contact your technical account manager if you need to change this.
+ "bidderLocation": [ # Your bidder locations that have distinct URLs.
+ {
+ "url": "A String", # The URL to which the Ad Exchange will send bid requests.
+ "region": "A String", # The geographical region the Ad Exchange should send requests from. Only used by some quota systems, but always setting the value is recommended. Allowed values:
+ # - ASIA
+ # - EUROPE
+ # - US_EAST
+ # - US_WEST
+ "maximumQps": 42, # The maximum queries per second the Ad Exchange will send.
+ },
+ ],
+ "cookieMatchingNid": "A String", # The nid parameter value used in cookie match requests. Please contact your technical account manager if you need to change this.
+ "id": 42, # Account id.
+ "cookieMatchingUrl": "A String", # The base URL used in cookie match requests.
+ },
+ ],
+ "kind": "adexchangebuyer#accountsList", # Resource type.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="patch">patch(id, body)</code>
+ <pre>Updates an existing account. This method supports patch semantics.
+
+Args:
+ id: integer, The account id (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # Configuration data for an Ad Exchange buyer account.
+ "kind": "adexchangebuyer#account", # Resource type.
+ "maximumTotalQps": 42, # The sum of all bidderLocation.maximumQps values cannot exceed this. Please contact your technical account manager if you need to change this.
+ "bidderLocation": [ # Your bidder locations that have distinct URLs.
+ {
+ "url": "A String", # The URL to which the Ad Exchange will send bid requests.
+ "region": "A String", # The geographical region the Ad Exchange should send requests from. Only used by some quota systems, but always setting the value is recommended. Allowed values:
+ # - ASIA
+ # - EUROPE
+ # - US_EAST
+ # - US_WEST
+ "maximumQps": 42, # The maximum queries per second the Ad Exchange will send.
+ },
+ ],
+ "cookieMatchingNid": "A String", # The nid parameter value used in cookie match requests. Please contact your technical account manager if you need to change this.
+ "id": 42, # Account id.
+ "cookieMatchingUrl": "A String", # The base URL used in cookie match requests.
+ }
+
+
+Returns:
+ An object of the form:
+
+ { # Configuration data for an Ad Exchange buyer account.
+ "kind": "adexchangebuyer#account", # Resource type.
+ "maximumTotalQps": 42, # The sum of all bidderLocation.maximumQps values cannot exceed this. Please contact your technical account manager if you need to change this.
+ "bidderLocation": [ # Your bidder locations that have distinct URLs.
+ {
+ "url": "A String", # The URL to which the Ad Exchange will send bid requests.
+ "region": "A String", # The geographical region the Ad Exchange should send requests from. Only used by some quota systems, but always setting the value is recommended. Allowed values:
+ # - ASIA
+ # - EUROPE
+ # - US_EAST
+ # - US_WEST
+ "maximumQps": 42, # The maximum queries per second the Ad Exchange will send.
+ },
+ ],
+ "cookieMatchingNid": "A String", # The nid parameter value used in cookie match requests. Please contact your technical account manager if you need to change this.
+ "id": 42, # Account id.
+ "cookieMatchingUrl": "A String", # The base URL used in cookie match requests.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="update">update(id, body)</code>
+ <pre>Updates an existing account.
+
+Args:
+ id: integer, The account id (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # Configuration data for an Ad Exchange buyer account.
+ "kind": "adexchangebuyer#account", # Resource type.
+ "maximumTotalQps": 42, # The sum of all bidderLocation.maximumQps values cannot exceed this. Please contact your technical account manager if you need to change this.
+ "bidderLocation": [ # Your bidder locations that have distinct URLs.
+ {
+ "url": "A String", # The URL to which the Ad Exchange will send bid requests.
+ "region": "A String", # The geographical region the Ad Exchange should send requests from. Only used by some quota systems, but always setting the value is recommended. Allowed values:
+ # - ASIA
+ # - EUROPE
+ # - US_EAST
+ # - US_WEST
+ "maximumQps": 42, # The maximum queries per second the Ad Exchange will send.
+ },
+ ],
+ "cookieMatchingNid": "A String", # The nid parameter value used in cookie match requests. Please contact your technical account manager if you need to change this.
+ "id": 42, # Account id.
+ "cookieMatchingUrl": "A String", # The base URL used in cookie match requests.
+ }
+
+
+Returns:
+ An object of the form:
+
+ { # Configuration data for an Ad Exchange buyer account.
+ "kind": "adexchangebuyer#account", # Resource type.
+ "maximumTotalQps": 42, # The sum of all bidderLocation.maximumQps values cannot exceed this. Please contact your technical account manager if you need to change this.
+ "bidderLocation": [ # Your bidder locations that have distinct URLs.
+ {
+ "url": "A String", # The URL to which the Ad Exchange will send bid requests.
+ "region": "A String", # The geographical region the Ad Exchange should send requests from. Only used by some quota systems, but always setting the value is recommended. Allowed values:
+ # - ASIA
+ # - EUROPE
+ # - US_EAST
+ # - US_WEST
+ "maximumQps": 42, # The maximum queries per second the Ad Exchange will send.
+ },
+ ],
+ "cookieMatchingNid": "A String", # The nid parameter value used in cookie match requests. Please contact your technical account manager if you need to change this.
+ "id": 42, # Account id.
+ "cookieMatchingUrl": "A String", # The base URL used in cookie match requests.
+ }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/adexchangebuyer_v1_2.creatives.html b/docs/dyn/adexchangebuyer_v1_2.creatives.html
new file mode 100644
index 0000000..d2ef5ba
--- /dev/null
+++ b/docs/dyn/adexchangebuyer_v1_2.creatives.html
@@ -0,0 +1,308 @@
+<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="adexchangebuyer_v1_2.html">Ad Exchange Buyer API</a> . <a href="adexchangebuyer_v1_2.creatives.html">creatives</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#get">get(accountId, buyerCreativeId)</a></code></p>
+<p class="firstline">Gets the status for a single creative.</p>
+<p class="toc_element">
+ <code><a href="#insert">insert(body)</a></code></p>
+<p class="firstline">Submit a new creative.</p>
+<p class="toc_element">
+ <code><a href="#list">list(pageToken=None, maxResults=None, statusFilter=None)</a></code></p>
+<p class="firstline">Retrieves a list of the authenticated user's active creatives.</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>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="get">get(accountId, buyerCreativeId)</code>
+ <pre>Gets the status for a single creative.
+
+Args:
+ accountId: integer, The id for the account that will serve this creative. (required)
+ buyerCreativeId: string, The buyer-specific id for this creative. (required)
+
+Returns:
+ An object of the form:
+
+ { # A creative and its classification data.
+ "productCategories": [ # Detected product categories, if any. Read-only. This field should not be set in requests.
+ 42,
+ ],
+ "advertiserName": "A String", # The name of the company being advertised in the creative.
+ "kind": "adexchangebuyer#creative", # Resource type.
+ "videoURL": "A String", # The url to fetch a video ad. If set, HTMLSnippet should not be set.
+ "agencyId": "A String", # The agency id for this creative.
+ "width": 42, # Ad width.
+ "attribute": [ # All attributes for the ads that may be shown from this snippet.
+ 42,
+ ],
+ "height": 42, # Ad height.
+ "advertiserId": [ # Detected advertiser id, if any. Read-only. This field should not be set in requests.
+ "A String",
+ ],
+ "HTMLSnippet": "A String", # The HTML snippet that displays the ad when inserted in the web page. If set, videoURL should not be set.
+ "status": "A String", # Creative serving status. Read-only. This field should not be set in requests.
+ "buyerCreativeId": "A String", # A buyer-specific id identifying the creative in this ad.
+ "clickThroughUrl": [ # The set of destination urls for the snippet.
+ "A String",
+ ],
+ "vendorType": [ # All vendor types for the ads that may be shown from this snippet.
+ 42,
+ ],
+ "disapprovalReasons": [ # The reasons for disapproval, if any. Note that not all disapproval reasons may be categorized, so it is possible for the creative to have a status of DISAPPROVED with an empty list for disapproval_reasons. In this case, please reach out to your TAM to help debug the issue. Read-only. This field should not be set in requests.
+ {
+ "reason": "A String", # The categorized reason for disapproval.
+ "details": [ # Additional details about the reason for disapproval.
+ "A String",
+ ],
+ },
+ ],
+ "sensitiveCategories": [ # Detected sensitive categories, if any. Read-only. This field should not be set in requests.
+ 42,
+ ],
+ "accountId": 42, # Account id.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="insert">insert(body)</code>
+ <pre>Submit a new creative.
+
+Args:
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # A creative and its classification data.
+ "productCategories": [ # Detected product categories, if any. Read-only. This field should not be set in requests.
+ 42,
+ ],
+ "advertiserName": "A String", # The name of the company being advertised in the creative.
+ "kind": "adexchangebuyer#creative", # Resource type.
+ "videoURL": "A String", # The url to fetch a video ad. If set, HTMLSnippet should not be set.
+ "agencyId": "A String", # The agency id for this creative.
+ "width": 42, # Ad width.
+ "attribute": [ # All attributes for the ads that may be shown from this snippet.
+ 42,
+ ],
+ "height": 42, # Ad height.
+ "advertiserId": [ # Detected advertiser id, if any. Read-only. This field should not be set in requests.
+ "A String",
+ ],
+ "HTMLSnippet": "A String", # The HTML snippet that displays the ad when inserted in the web page. If set, videoURL should not be set.
+ "status": "A String", # Creative serving status. Read-only. This field should not be set in requests.
+ "buyerCreativeId": "A String", # A buyer-specific id identifying the creative in this ad.
+ "clickThroughUrl": [ # The set of destination urls for the snippet.
+ "A String",
+ ],
+ "vendorType": [ # All vendor types for the ads that may be shown from this snippet.
+ 42,
+ ],
+ "disapprovalReasons": [ # The reasons for disapproval, if any. Note that not all disapproval reasons may be categorized, so it is possible for the creative to have a status of DISAPPROVED with an empty list for disapproval_reasons. In this case, please reach out to your TAM to help debug the issue. Read-only. This field should not be set in requests.
+ {
+ "reason": "A String", # The categorized reason for disapproval.
+ "details": [ # Additional details about the reason for disapproval.
+ "A String",
+ ],
+ },
+ ],
+ "sensitiveCategories": [ # Detected sensitive categories, if any. Read-only. This field should not be set in requests.
+ 42,
+ ],
+ "accountId": 42, # Account id.
+ }
+
+
+Returns:
+ An object of the form:
+
+ { # A creative and its classification data.
+ "productCategories": [ # Detected product categories, if any. Read-only. This field should not be set in requests.
+ 42,
+ ],
+ "advertiserName": "A String", # The name of the company being advertised in the creative.
+ "kind": "adexchangebuyer#creative", # Resource type.
+ "videoURL": "A String", # The url to fetch a video ad. If set, HTMLSnippet should not be set.
+ "agencyId": "A String", # The agency id for this creative.
+ "width": 42, # Ad width.
+ "attribute": [ # All attributes for the ads that may be shown from this snippet.
+ 42,
+ ],
+ "height": 42, # Ad height.
+ "advertiserId": [ # Detected advertiser id, if any. Read-only. This field should not be set in requests.
+ "A String",
+ ],
+ "HTMLSnippet": "A String", # The HTML snippet that displays the ad when inserted in the web page. If set, videoURL should not be set.
+ "status": "A String", # Creative serving status. Read-only. This field should not be set in requests.
+ "buyerCreativeId": "A String", # A buyer-specific id identifying the creative in this ad.
+ "clickThroughUrl": [ # The set of destination urls for the snippet.
+ "A String",
+ ],
+ "vendorType": [ # All vendor types for the ads that may be shown from this snippet.
+ 42,
+ ],
+ "disapprovalReasons": [ # The reasons for disapproval, if any. Note that not all disapproval reasons may be categorized, so it is possible for the creative to have a status of DISAPPROVED with an empty list for disapproval_reasons. In this case, please reach out to your TAM to help debug the issue. Read-only. This field should not be set in requests.
+ {
+ "reason": "A String", # The categorized reason for disapproval.
+ "details": [ # Additional details about the reason for disapproval.
+ "A String",
+ ],
+ },
+ ],
+ "sensitiveCategories": [ # Detected sensitive categories, if any. Read-only. This field should not be set in requests.
+ 42,
+ ],
+ "accountId": 42, # Account id.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="list">list(pageToken=None, maxResults=None, statusFilter=None)</code>
+ <pre>Retrieves a list of the authenticated user's active creatives.
+
+Args:
+ pageToken: string, A continuation token, used to page through ad clients. To retrieve the next page, set this parameter to the value of "nextPageToken" from the previous response. Optional.
+ maxResults: integer, Maximum number of entries returned on one result page. If not set, the default is 100. Optional.
+ statusFilter: string, When specified, only creatives having the given status are returned.
+ Allowed values
+ approved - Creatives which have been approved.
+ disapproved - Creatives which have been disapproved.
+ not_checked - Creatives whose status is not yet checked.
+
+Returns:
+ An object of the form:
+
+ { # The creatives feed lists the active creatives for the Ad Exchange buyer accounts that the user has access to. Each entry in the feed corresponds to a single creative.
+ "nextPageToken": "A String", # Continuation token used to page through creatives. To retrieve the next page of results, set the next request's "pageToken" value to this.
+ "items": [ # A list of creatives.
+ { # A creative and its classification data.
+ "productCategories": [ # Detected product categories, if any. Read-only. This field should not be set in requests.
+ 42,
+ ],
+ "advertiserName": "A String", # The name of the company being advertised in the creative.
+ "kind": "adexchangebuyer#creative", # Resource type.
+ "videoURL": "A String", # The url to fetch a video ad. If set, HTMLSnippet should not be set.
+ "agencyId": "A String", # The agency id for this creative.
+ "width": 42, # Ad width.
+ "attribute": [ # All attributes for the ads that may be shown from this snippet.
+ 42,
+ ],
+ "height": 42, # Ad height.
+ "advertiserId": [ # Detected advertiser id, if any. Read-only. This field should not be set in requests.
+ "A String",
+ ],
+ "HTMLSnippet": "A String", # The HTML snippet that displays the ad when inserted in the web page. If set, videoURL should not be set.
+ "status": "A String", # Creative serving status. Read-only. This field should not be set in requests.
+ "buyerCreativeId": "A String", # A buyer-specific id identifying the creative in this ad.
+ "clickThroughUrl": [ # The set of destination urls for the snippet.
+ "A String",
+ ],
+ "vendorType": [ # All vendor types for the ads that may be shown from this snippet.
+ 42,
+ ],
+ "disapprovalReasons": [ # The reasons for disapproval, if any. Note that not all disapproval reasons may be categorized, so it is possible for the creative to have a status of DISAPPROVED with an empty list for disapproval_reasons. In this case, please reach out to your TAM to help debug the issue. Read-only. This field should not be set in requests.
+ {
+ "reason": "A String", # The categorized reason for disapproval.
+ "details": [ # Additional details about the reason for disapproval.
+ "A String",
+ ],
+ },
+ ],
+ "sensitiveCategories": [ # Detected sensitive categories, if any. Read-only. This field should not be set in requests.
+ 42,
+ ],
+ "accountId": 42, # Account id.
+ },
+ ],
+ "kind": "adexchangebuyer#creativesList", # Resource type.
+ }</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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/adexchangebuyer_v1_2.directDeals.html b/docs/dyn/adexchangebuyer_v1_2.directDeals.html
new file mode 100644
index 0000000..851baf0
--- /dev/null
+++ b/docs/dyn/adexchangebuyer_v1_2.directDeals.html
@@ -0,0 +1,136 @@
+<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="adexchangebuyer_v1_2.html">Ad Exchange Buyer API</a> . <a href="adexchangebuyer_v1_2.directDeals.html">directDeals</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#get">get(id)</a></code></p>
+<p class="firstline">Gets one direct deal by ID.</p>
+<p class="toc_element">
+ <code><a href="#list">list()</a></code></p>
+<p class="firstline">Retrieves the authenticated user's list of direct deals.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="get">get(id)</code>
+ <pre>Gets one direct deal by ID.
+
+Args:
+ id: string, The direct deal id (required)
+
+Returns:
+ An object of the form:
+
+ { # The configuration data for an Ad Exchange direct deal.
+ "advertiser": "A String", # The name of the advertiser this deal is for.
+ "kind": "adexchangebuyer#directDeal", # Resource type.
+ "privateExchangeMinCpm": "A String", # The minimum price for this direct deal. In cpm micros of currency according to currency_code. If set, then this deal is eligible for the private exchange tier of buying (below fixed price priority, run as a second price auction).
+ "currencyCode": "A String", # The currency code that applies to the fixed_cpm value. If not set then assumed to be USD.
+ "fixedCpm": "A String", # The fixed price for this direct deal. In cpm micros of currency according to currency_code. If set, then this deal is eligible for the fixed price tier of buying (highest priority, pay exactly the configured fixed price).
+ "startTime": "A String", # Start time for when this deal becomes active. If not set then this deal is active immediately upon creation. In seconds since the epoch.
+ "endTime": "A String", # End time for when this deal stops being active. If not set then this deal is valid until manually disabled by the publisher. In seconds since the epoch.
+ "sellerNetwork": "A String", # The name of the publisher offering this direct deal.
+ "id": "A String", # Deal id.
+ "accountId": 42, # The account id of the buyer this deal is for.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="list">list()</code>
+ <pre>Retrieves the authenticated user's list of direct deals.
+
+Args:
+
+Returns:
+ An object of the form:
+
+ { # A direct deals feed lists Direct Deals the Ad Exchange buyer account has access to. This includes direct deals set up for the buyer account as well as its merged stream seats.
+ "kind": "adexchangebuyer#directDealsList", # Resource type.
+ "directDeals": [ # A list of direct deals relevant for your account.
+ { # The configuration data for an Ad Exchange direct deal.
+ "advertiser": "A String", # The name of the advertiser this deal is for.
+ "kind": "adexchangebuyer#directDeal", # Resource type.
+ "privateExchangeMinCpm": "A String", # The minimum price for this direct deal. In cpm micros of currency according to currency_code. If set, then this deal is eligible for the private exchange tier of buying (below fixed price priority, run as a second price auction).
+ "currencyCode": "A String", # The currency code that applies to the fixed_cpm value. If not set then assumed to be USD.
+ "fixedCpm": "A String", # The fixed price for this direct deal. In cpm micros of currency according to currency_code. If set, then this deal is eligible for the fixed price tier of buying (highest priority, pay exactly the configured fixed price).
+ "startTime": "A String", # Start time for when this deal becomes active. If not set then this deal is active immediately upon creation. In seconds since the epoch.
+ "endTime": "A String", # End time for when this deal stops being active. If not set then this deal is valid until manually disabled by the publisher. In seconds since the epoch.
+ "sellerNetwork": "A String", # The name of the publisher offering this direct deal.
+ "id": "A String", # Deal id.
+ "accountId": 42, # The account id of the buyer this deal is for.
+ },
+ ],
+ }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/adexchangebuyer_v1_2.html b/docs/dyn/adexchangebuyer_v1_2.html
new file mode 100644
index 0000000..461963b
--- /dev/null
+++ b/docs/dyn/adexchangebuyer_v1_2.html
@@ -0,0 +1,97 @@
+<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="adexchangebuyer_v1_2.html">Ad Exchange Buyer API</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="adexchangebuyer_v1_2.accounts.html">accounts()</a></code>
+</p>
+<p class="firstline">Returns the accounts Resource.</p>
+
+<p class="toc_element">
+ <code><a href="adexchangebuyer_v1_2.creatives.html">creatives()</a></code>
+</p>
+<p class="firstline">Returns the creatives Resource.</p>
+
+<p class="toc_element">
+ <code><a href="adexchangebuyer_v1_2.directDeals.html">directDeals()</a></code>
+</p>
+<p class="firstline">Returns the directDeals Resource.</p>
+
+<p class="toc_element">
+ <code><a href="adexchangebuyer_v1_2.performanceReport.html">performanceReport()</a></code>
+</p>
+<p class="firstline">Returns the performanceReport Resource.</p>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/adexchangebuyer_v1_2.performanceReport.html b/docs/dyn/adexchangebuyer_v1_2.performanceReport.html
new file mode 100644
index 0000000..63f9f2d
--- /dev/null
+++ b/docs/dyn/adexchangebuyer_v1_2.performanceReport.html
@@ -0,0 +1,108 @@
+<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="adexchangebuyer_v1_2.html">Ad Exchange Buyer API</a> . <a href="adexchangebuyer_v1_2.performanceReport.html">performanceReport</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#list">list(accountId, endDateTime, startDateTime)</a></code></p>
+<p class="firstline">Retrieves the authenticated user's list of performance metrics.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="list">list(accountId, endDateTime, startDateTime)</code>
+ <pre>Retrieves the authenticated user's list of performance metrics.
+
+Args:
+ accountId: string, The account id to get the reports for. (required)
+ endDateTime: string, The end time for the reports. (required)
+ startDateTime: string, The start time for the reports. (required)
+
+Returns:
+ An object of the form:
+
+ { # The configuration data for an Ad Exchange performance report list. TODO(nathanbullock): need to add some release tests before releasing this. https://sites.google.com/a/google.com/adx-integration/Home/engineering/binary-releases/rtb-api-release https://cs.corp.google.com/#piper///depot/google3/contentads/adx/tools/rtb_api/adxrtb.py
+ "kind": "adexchangebuyer#performanceReportList", # Resource type.
+ "performance_report": [ # A list of performance reports relevant for the account.
+ {
+ "kind": "adexchangebuyer#performanceReport", # Resource type.
+ "timestamp": "A String", # Timestamp of the starting time of this performance data.
+ "region": "A String", # The trading location of this data.
+ "latency50thPercentile": 3.14, # The Nth percentile round trip latency(ms) as perceived from Google servers for the duration period covered by the report.
+ "latency85thPercentile": 3.14,
+ "latency95thPercentile": 3.14,
+ },
+ ],
+ }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/admin_reports_v1.activities.html b/docs/dyn/admin_reports_v1.activities.html
new file mode 100644
index 0000000..eab3e8a
--- /dev/null
+++ b/docs/dyn/admin_reports_v1.activities.html
@@ -0,0 +1,155 @@
+<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="admin_reports_v1.html">Admin Reports API</a> . <a href="admin_reports_v1.activities.html">activities</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#list">list(userKey, applicationName, eventName=None, actorIpAddress=None, filters=None, maxResults=None, pageToken=None, startTime=None, endTime=None)</a></code></p>
+<p class="firstline">Retrieves a list of activities for a specific customer and application.</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>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="list">list(userKey, applicationName, eventName=None, actorIpAddress=None, filters=None, maxResults=None, pageToken=None, startTime=None, endTime=None)</code>
+ <pre>Retrieves a list of activities for a specific customer and application.
+
+Args:
+ userKey: string, Represents the profile id or the user email for which the data should be filtered. When 'all' is specified as the userKey, it returns usageReports for all users. (required)
+ applicationName: string, Application name for which the events are to be retrieved. (required)
+ eventName: string, Name of the event being queried.
+ actorIpAddress: string, IP Address of host where the event was performed. Supports both IPv4 and IPv6 addresses.
+ filters: string, Event parameters in the form [parameter1 name][operator][parameter1 value],[parameter2 name][operator][parameter2 value],...
+ maxResults: integer, Number of activity records to be shown in each page.
+ pageToken: string, Token to specify next page.
+ startTime: string, Return events which occured at or after this time.
+ endTime: string, Return events which occured at or before this time.
+
+Returns:
+ An object of the form:
+
+ { # JSON template for a collection of activites.
+ "nextPageToken": "A String", # Token for retrieving the next page
+ "items": [ # Each record in read response.
+ { # JSON template for the activity resource.
+ "kind": "admin#reports#activity", # Kind of resource this is.
+ "ownerDomain": "A String", # Domain of source customer.
+ "actor": { # User doing the action.
+ "profileId": "A String", # Obfuscated user id of the user.
+ "email": "A String", # Email address of the user.
+ "key": "A String", # For OAuth 2LO API requests, consumer_key of the requestor.
+ "callerType": "A String", # User or OAuth 2LO request.
+ },
+ "id": { # Unique identifier for each activity record.
+ "applicationName": "A String", # Application name to which the event belongs.
+ "uniqueQualifier": "A String", # Unique qualifier if multiple events have the same time.
+ "customerId": "A String", # Obfuscated customer ID of the source customer.
+ "time": "A String", # Time of occurrence of the activity.
+ },
+ "ipAddress": "A String", # IP Address of the user doing the action.
+ "events": [ # Activity events.
+ {
+ "type": "A String", # Type of event.
+ "name": "A String", # Name of event.
+ "parameters": [ # Parameter value pairs for various applications.
+ {
+ "boolValue": True or False, # Boolean value of the parameter.
+ "intValue": "A String", # Integral value of the parameter.
+ "value": "A String", # String value of the parameter.
+ "name": "A String", # The name of the parameter.
+ },
+ ],
+ },
+ ],
+ },
+ ],
+ "kind": "admin#reports#activities", # Kind of list response this is.
+ }</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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/admin_reports_v1.customerUsageReports.html b/docs/dyn/admin_reports_v1.customerUsageReports.html
new file mode 100644
index 0000000..2b76bba
--- /dev/null
+++ b/docs/dyn/admin_reports_v1.customerUsageReports.html
@@ -0,0 +1,149 @@
+<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="admin_reports_v1.html">Admin Reports API</a> . <a href="admin_reports_v1.customerUsageReports.html">customerUsageReports</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#get">get(date, pageToken=None, parameters=None)</a></code></p>
+<p class="firstline">Retrieves a report which is a collection of properties / statistics for a specific customer.</p>
+<p class="toc_element">
+ <code><a href="#get_next">get_next(previous_request, previous_response)</a></code></p>
+<p class="firstline">Retrieves the next page of results.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="get">get(date, pageToken=None, parameters=None)</code>
+ <pre>Retrieves a report which is a collection of properties / statistics for a specific customer.
+
+Args:
+ date: string, Represents the date in yyyy-mm-dd format for which the data is to be fetched. (required)
+ pageToken: string, Token to specify next page.
+ parameters: string, Represents the application name, parameter name pairs to fetch in csv as app_name1:param_name1, app_name2:param_name2.
+
+Returns:
+ An object of the form:
+
+ { # JSON template for a collection of usage reports.
+ "nextPageToken": "A String", # Token for retrieving the next page
+ "kind": "admin#reports#usageReports", # The kind of object.
+ "usageReports": [ # Various application parameter records.
+ { # JSON template for a usage report.
+ "date": "A String", # The date to which the record belongs.
+ "kind": "admin#reports#usageReport", # The kind of object.
+ "parameters": [ # Parameter value pairs for various applications.
+ {
+ "stringValue": "A String", # String value of the parameter.
+ "boolValue": True or False, # Boolean value of the parameter.
+ "datetimeValue": "A String", # RFC 3339 formatted value of the parameter.
+ "intValue": "A String", # Integral value of the parameter.
+ "name": "A String", # The name of the parameter.
+ },
+ ],
+ "entity": { # Information about the type of the item.
+ "profileId": "A String", # Obfuscated user id for the record.
+ "userEmail": "A String", # user's email.
+ "type": "A String", # The type of item, can be a customer or user.
+ "customerId": "A String", # Obfuscated customer id for the record.
+ },
+ },
+ ],
+ "warnings": [ # Warnings if any.
+ {
+ "message": "A String", # Human readable message for the warning.
+ "code": "A String", # Machine readable code / warning type.
+ "data": [ # Key-Value pairs to give detailed information on the warning.
+ {
+ "value": "A String", # Value associated with a key-value pair to give detailed information on the warning.
+ "key": "A String", # Key associated with a key-value pair to give detailed information on the warning.
+ },
+ ],
+ },
+ ],
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="get_next">get_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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/admin_reports_v1.html b/docs/dyn/admin_reports_v1.html
new file mode 100644
index 0000000..0169d33
--- /dev/null
+++ b/docs/dyn/admin_reports_v1.html
@@ -0,0 +1,92 @@
+<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="admin_reports_v1.html">Admin Reports API</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="admin_reports_v1.activities.html">activities()</a></code>
+</p>
+<p class="firstline">Returns the activities Resource.</p>
+
+<p class="toc_element">
+ <code><a href="admin_reports_v1.customerUsageReports.html">customerUsageReports()</a></code>
+</p>
+<p class="firstline">Returns the customerUsageReports Resource.</p>
+
+<p class="toc_element">
+ <code><a href="admin_reports_v1.userUsageReport.html">userUsageReport()</a></code>
+</p>
+<p class="firstline">Returns the userUsageReport Resource.</p>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/admin_reports_v1.userUsageReport.html b/docs/dyn/admin_reports_v1.userUsageReport.html
new file mode 100644
index 0000000..fdeaf57
--- /dev/null
+++ b/docs/dyn/admin_reports_v1.userUsageReport.html
@@ -0,0 +1,152 @@
+<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="admin_reports_v1.html">Admin Reports API</a> . <a href="admin_reports_v1.userUsageReport.html">userUsageReport</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#get">get(userKey, date, parameters=None, pageToken=None, filters=None, maxResults=None)</a></code></p>
+<p class="firstline">Retrieves a report which is a collection of properties / statistics for a set of users.</p>
+<p class="toc_element">
+ <code><a href="#get_next">get_next(previous_request, previous_response)</a></code></p>
+<p class="firstline">Retrieves the next page of results.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="get">get(userKey, date, parameters=None, pageToken=None, filters=None, maxResults=None)</code>
+ <pre>Retrieves a report which is a collection of properties / statistics for a set of users.
+
+Args:
+ userKey: string, Represents the profile id or the user email for which the data should be filtered. (required)
+ date: string, Represents the date in yyyy-mm-dd format for which the data is to be fetched. (required)
+ parameters: string, Represents the application name, parameter name pairs to fetch in csv as app_name1:param_name1, app_name2:param_name2.
+ pageToken: string, Token to specify next page.
+ filters: string, Represents the set of filters including parameter operator value.
+ maxResults: integer, Maximum number of results to return. Maximum allowed is 1000
+
+Returns:
+ An object of the form:
+
+ { # JSON template for a collection of usage reports.
+ "nextPageToken": "A String", # Token for retrieving the next page
+ "kind": "admin#reports#usageReports", # The kind of object.
+ "usageReports": [ # Various application parameter records.
+ { # JSON template for a usage report.
+ "date": "A String", # The date to which the record belongs.
+ "kind": "admin#reports#usageReport", # The kind of object.
+ "parameters": [ # Parameter value pairs for various applications.
+ {
+ "stringValue": "A String", # String value of the parameter.
+ "boolValue": True or False, # Boolean value of the parameter.
+ "datetimeValue": "A String", # RFC 3339 formatted value of the parameter.
+ "intValue": "A String", # Integral value of the parameter.
+ "name": "A String", # The name of the parameter.
+ },
+ ],
+ "entity": { # Information about the type of the item.
+ "profileId": "A String", # Obfuscated user id for the record.
+ "userEmail": "A String", # user's email.
+ "type": "A String", # The type of item, can be a customer or user.
+ "customerId": "A String", # Obfuscated customer id for the record.
+ },
+ },
+ ],
+ "warnings": [ # Warnings if any.
+ {
+ "message": "A String", # Human readable message for the warning.
+ "code": "A String", # Machine readable code / warning type.
+ "data": [ # Key-Value pairs to give detailed information on the warning.
+ {
+ "value": "A String", # Value associated with a key-value pair to give detailed information on the warning.
+ "key": "A String", # Key associated with a key-value pair to give detailed information on the warning.
+ },
+ ],
+ },
+ ],
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="get_next">get_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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/adsense_v1_3.accounts.adclients.html b/docs/dyn/adsense_v1_3.accounts.adclients.html
new file mode 100644
index 0000000..7cc13c1
--- /dev/null
+++ b/docs/dyn/adsense_v1_3.accounts.adclients.html
@@ -0,0 +1,126 @@
+<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="adsense_v1_3.html">AdSense Management API</a> . <a href="adsense_v1_3.accounts.html">accounts</a> . <a href="adsense_v1_3.accounts.adclients.html">adclients</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#list">list(accountId, pageToken=None, maxResults=None)</a></code></p>
+<p class="firstline">List all ad clients in the specified account.</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>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="list">list(accountId, pageToken=None, maxResults=None)</code>
+ <pre>List all ad clients in the specified account.
+
+Args:
+ accountId: string, Account for which to list ad clients. (required)
+ pageToken: string, A continuation token, used to page through ad clients. To retrieve the next page, set this parameter to the value of "nextPageToken" from the previous response.
+ maxResults: integer, The maximum number of ad clients to include in the response, used for paging.
+
+Returns:
+ An object of the form:
+
+ {
+ "nextPageToken": "A String", # Continuation token used to page through ad clients. To retrieve the next page of results, set the next request's "pageToken" value to this.
+ "items": [ # The ad clients returned in this list response.
+ {
+ "productCode": "A String", # This ad client's product code, which corresponds to the PRODUCT_CODE report dimension.
+ "kind": "adsense#adClient", # Kind of resource this is, in this case adsense#adClient.
+ "id": "A String", # Unique identifier of this ad client.
+ "arcOptIn": True or False, # Whether this ad client is opted in to ARC.
+ "supportsReporting": True or False, # Whether this ad client supports being reported on.
+ },
+ ],
+ "kind": "adsense#adClients", # Kind of list this is, in this case adsense#adClients.
+ "etag": "A String", # ETag of this response for caching purposes.
+ }</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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/adsense_v1_3.accounts.adunits.customchannels.html b/docs/dyn/adsense_v1_3.accounts.adunits.customchannels.html
new file mode 100644
index 0000000..52c280a
--- /dev/null
+++ b/docs/dyn/adsense_v1_3.accounts.adunits.customchannels.html
@@ -0,0 +1,133 @@
+<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="adsense_v1_3.html">AdSense Management API</a> . <a href="adsense_v1_3.accounts.html">accounts</a> . <a href="adsense_v1_3.accounts.adunits.html">adunits</a> . <a href="adsense_v1_3.accounts.adunits.customchannels.html">customchannels</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#list">list(accountId, adClientId, adUnitId, pageToken=None, maxResults=None)</a></code></p>
+<p class="firstline">List all custom channels which the specified ad unit belongs to.</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>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="list">list(accountId, adClientId, adUnitId, pageToken=None, maxResults=None)</code>
+ <pre>List all custom channels which the specified ad unit belongs to.
+
+Args:
+ accountId: string, Account to which the ad client belongs. (required)
+ adClientId: string, Ad client which contains the ad unit. (required)
+ adUnitId: string, Ad unit for which to list custom channels. (required)
+ pageToken: string, A continuation token, used to page through custom channels. To retrieve the next page, set this parameter to the value of "nextPageToken" from the previous response.
+ maxResults: integer, The maximum number of custom channels to include in the response, used for paging.
+
+Returns:
+ An object of the form:
+
+ {
+ "nextPageToken": "A String", # Continuation token used to page through custom channels. To retrieve the next page of results, set the next request's "pageToken" value to this.
+ "items": [ # The custom channels returned in this list response.
+ {
+ "kind": "adsense#customChannel", # Kind of resource this is, in this case adsense#customChannel.
+ "code": "A String", # Code of this custom channel, not necessarily unique across ad clients.
+ "targetingInfo": { # The targeting information of this custom channel, if activated.
+ "location": "A String", # The locations in which ads appear. (Only valid for content and mobile content ads). Acceptable values for content ads are: TOP_LEFT, TOP_CENTER, TOP_RIGHT, MIDDLE_LEFT, MIDDLE_CENTER, MIDDLE_RIGHT, BOTTOM_LEFT, BOTTOM_CENTER, BOTTOM_RIGHT, MULTIPLE_LOCATIONS. Acceptable values for mobile content ads are: TOP, MIDDLE, BOTTOM, MULTIPLE_LOCATIONS.
+ "adsAppearOn": "A String", # The name used to describe this channel externally.
+ "siteLanguage": "A String", # The language of the sites ads will be displayed on.
+ "description": "A String", # The external description of the channel.
+ },
+ "id": "A String", # Unique identifier of this custom channel. This should be considered an opaque identifier; it is not safe to rely on it being in any particular format.
+ "name": "A String", # Name of this custom channel.
+ },
+ ],
+ "kind": "adsense#customChannels", # Kind of list this is, in this case adsense#customChannels.
+ "etag": "A String", # ETag of this response for caching purposes.
+ }</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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/adsense_v1_3.accounts.adunits.html b/docs/dyn/adsense_v1_3.accounts.adunits.html
new file mode 100644
index 0000000..4f752ff
--- /dev/null
+++ b/docs/dyn/adsense_v1_3.accounts.adunits.html
@@ -0,0 +1,262 @@
+<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="adsense_v1_3.html">AdSense Management API</a> . <a href="adsense_v1_3.accounts.html">accounts</a> . <a href="adsense_v1_3.accounts.adunits.html">adunits</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="adsense_v1_3.accounts.adunits.customchannels.html">customchannels()</a></code>
+</p>
+<p class="firstline">Returns the customchannels Resource.</p>
+
+<p class="toc_element">
+ <code><a href="#get">get(accountId, adClientId, adUnitId)</a></code></p>
+<p class="firstline">Gets the specified ad unit in the specified ad client for the specified account.</p>
+<p class="toc_element">
+ <code><a href="#getAdCode">getAdCode(accountId, adClientId, adUnitId)</a></code></p>
+<p class="firstline">Get ad code for the specified ad unit.</p>
+<p class="toc_element">
+ <code><a href="#list">list(accountId, adClientId, pageToken=None, includeInactive=None, maxResults=None)</a></code></p>
+<p class="firstline">List all ad units in the specified ad client for the specified account.</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>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="get">get(accountId, adClientId, adUnitId)</code>
+ <pre>Gets the specified ad unit in the specified ad client for the specified account.
+
+Args:
+ accountId: string, Account to which the ad client belongs. (required)
+ adClientId: string, Ad client for which to get the ad unit. (required)
+ adUnitId: string, Ad unit to retrieve. (required)
+
+Returns:
+ An object of the form:
+
+ {
+ "status": "A String", # Status of this ad unit. Possible values are:
+ # NEW: Indicates that the ad unit was created within the last seven days and does not yet have any activity associated with it.
+ #
+ # ACTIVE: Indicates that there has been activity on this ad unit in the last seven days.
+ #
+ # INACTIVE: Indicates that there has been no activity on this ad unit in the last seven days.
+ "kind": "adsense#adUnit", # Kind of resource this is, in this case adsense#adUnit.
+ "code": "A String", # Identity code of this ad unit, not necessarily unique across ad clients.
+ "name": "A String", # Name of this ad unit.
+ "feedAdsSettings": { # Settings specific to feed ads (AFF).
+ "minimumWordCount": 42, # The minimum length an entry should be in order to have attached ads.
+ "frequency": 42, # The frequency at which ads should appear in the feed (i.e. every N entries).
+ "adPosition": "A String", # The position of the ads relative to the feed entries.
+ "type": "A String", # The type of ads which should appear.
+ },
+ "savedStyleId": "A String", # ID of the saved ad style which holds this ad unit's style information.
+ "contentAdsSettings": { # Settings specific to content ads (AFC) and highend mobile content ads (AFMC).
+ "type": "A String", # Type of this ad unit.
+ "backupOption": { # The backup option to be used in instances where no ad is available.
+ "color": "A String", # Color to use when type is set to COLOR.
+ "url": "A String", # URL to use when type is set to URL.
+ "type": "A String", # Type of the backup option. Possible values are BLANK, COLOR and URL.
+ },
+ "size": "A String", # Size of this ad unit.
+ },
+ "id": "A String", # Unique identifier of this ad unit. This should be considered an opaque identifier; it is not safe to rely on it being in any particular format.
+ "mobileContentAdsSettings": { # Settings specific to WAP mobile content ads (AFMC).
+ "scriptingLanguage": "A String", # The scripting language to use for this ad unit.
+ "type": "A String", # Type of this ad unit.
+ "markupLanguage": "A String", # The markup language to use for this ad unit.
+ "size": "A String", # Size of this ad unit.
+ },
+ "customStyle": { # Custom style information specific to this ad unit.
+ "corners": "A String", # The style of the corners in the ad.
+ "colors": { # The colors which are included in the style. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
+ "url": "A String", # The color of the ad url.
+ "text": "A String", # The color of the ad text.
+ "border": "A String", # The color of the ad border.
+ "background": "A String", # The color of the ad background.
+ "title": "A String", # The color of the ad title.
+ },
+ "font": { # The font which is included in the style.
+ "family": "A String", # The family of the font.
+ "size": "A String", # The size of the font.
+ },
+ "kind": "adsense#adStyle", # Kind this is, in this case adsense#adStyle.
+ },
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="getAdCode">getAdCode(accountId, adClientId, adUnitId)</code>
+ <pre>Get ad code for the specified ad unit.
+
+Args:
+ accountId: string, Account which contains the ad client. (required)
+ adClientId: string, Ad client with contains the ad unit. (required)
+ adUnitId: string, Ad unit to get the code for. (required)
+
+Returns:
+ An object of the form:
+
+ {
+ "adCode": "A String", # The ad code snippet.
+ "kind": "adsense#adCode", # Kind this is, in this case adsense#adCode.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="list">list(accountId, adClientId, pageToken=None, includeInactive=None, maxResults=None)</code>
+ <pre>List all ad units in the specified ad client for the specified account.
+
+Args:
+ accountId: string, Account to which the ad client belongs. (required)
+ adClientId: string, Ad client for which to list ad units. (required)
+ pageToken: string, A continuation token, used to page through ad units. To retrieve the next page, set this parameter to the value of "nextPageToken" from the previous response.
+ includeInactive: boolean, Whether to include inactive ad units. Default: true.
+ maxResults: integer, The maximum number of ad units to include in the response, used for paging.
+
+Returns:
+ An object of the form:
+
+ {
+ "nextPageToken": "A String", # Continuation token used to page through ad units. To retrieve the next page of results, set the next request's "pageToken" value to this.
+ "items": [ # The ad units returned in this list response.
+ {
+ "status": "A String", # Status of this ad unit. Possible values are:
+ # NEW: Indicates that the ad unit was created within the last seven days and does not yet have any activity associated with it.
+ #
+ # ACTIVE: Indicates that there has been activity on this ad unit in the last seven days.
+ #
+ # INACTIVE: Indicates that there has been no activity on this ad unit in the last seven days.
+ "kind": "adsense#adUnit", # Kind of resource this is, in this case adsense#adUnit.
+ "code": "A String", # Identity code of this ad unit, not necessarily unique across ad clients.
+ "name": "A String", # Name of this ad unit.
+ "feedAdsSettings": { # Settings specific to feed ads (AFF).
+ "minimumWordCount": 42, # The minimum length an entry should be in order to have attached ads.
+ "frequency": 42, # The frequency at which ads should appear in the feed (i.e. every N entries).
+ "adPosition": "A String", # The position of the ads relative to the feed entries.
+ "type": "A String", # The type of ads which should appear.
+ },
+ "savedStyleId": "A String", # ID of the saved ad style which holds this ad unit's style information.
+ "contentAdsSettings": { # Settings specific to content ads (AFC) and highend mobile content ads (AFMC).
+ "type": "A String", # Type of this ad unit.
+ "backupOption": { # The backup option to be used in instances where no ad is available.
+ "color": "A String", # Color to use when type is set to COLOR.
+ "url": "A String", # URL to use when type is set to URL.
+ "type": "A String", # Type of the backup option. Possible values are BLANK, COLOR and URL.
+ },
+ "size": "A String", # Size of this ad unit.
+ },
+ "id": "A String", # Unique identifier of this ad unit. This should be considered an opaque identifier; it is not safe to rely on it being in any particular format.
+ "mobileContentAdsSettings": { # Settings specific to WAP mobile content ads (AFMC).
+ "scriptingLanguage": "A String", # The scripting language to use for this ad unit.
+ "type": "A String", # Type of this ad unit.
+ "markupLanguage": "A String", # The markup language to use for this ad unit.
+ "size": "A String", # Size of this ad unit.
+ },
+ "customStyle": { # Custom style information specific to this ad unit.
+ "corners": "A String", # The style of the corners in the ad.
+ "colors": { # The colors which are included in the style. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
+ "url": "A String", # The color of the ad url.
+ "text": "A String", # The color of the ad text.
+ "border": "A String", # The color of the ad border.
+ "background": "A String", # The color of the ad background.
+ "title": "A String", # The color of the ad title.
+ },
+ "font": { # The font which is included in the style.
+ "family": "A String", # The family of the font.
+ "size": "A String", # The size of the font.
+ },
+ "kind": "adsense#adStyle", # Kind this is, in this case adsense#adStyle.
+ },
+ },
+ ],
+ "kind": "adsense#adUnits", # Kind of list this is, in this case adsense#adUnits.
+ "etag": "A String", # ETag of this response for caching purposes.
+ }</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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/adsense_v1_3.accounts.alerts.html b/docs/dyn/adsense_v1_3.accounts.alerts.html
new file mode 100644
index 0000000..35f095f
--- /dev/null
+++ b/docs/dyn/adsense_v1_3.accounts.alerts.html
@@ -0,0 +1,106 @@
+<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="adsense_v1_3.html">AdSense Management API</a> . <a href="adsense_v1_3.accounts.html">accounts</a> . <a href="adsense_v1_3.accounts.alerts.html">alerts</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#list">list(accountId, locale=None)</a></code></p>
+<p class="firstline">List the alerts for the specified AdSense account.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="list">list(accountId, locale=None)</code>
+ <pre>List the alerts for the specified AdSense account.
+
+Args:
+ accountId: string, Account for which to retrieve the alerts. (required)
+ locale: string, The locale to use for translating alert messages. The account locale will be used if this is not supplied. The AdSense default (English) will be used if the supplied locale is invalid or unsupported.
+
+Returns:
+ An object of the form:
+
+ {
+ "items": [ # The alerts returned in this list response.
+ {
+ "type": "A String", # Type of this alert. Possible values: SELF_HOLD, MIGRATED_TO_BILLING3, ADDRESS_PIN_VERIFICATION, PHONE_PIN_VERIFICATION, CORPORATE_ENTITY, GRAYLISTED_PUBLISHER, API_HOLD.
+ "kind": "adsense#alert", # Kind of resource this is, in this case adsense#alert.
+ "message": "A String", # The localized alert message.
+ "id": "A String", # Unique identifier of this alert. This should be considered an opaque identifier; it is not safe to rely on it being in any particular format.
+ "severity": "A String", # Severity of this alert. Possible values: INFO, WARNING, SEVERE.
+ },
+ ],
+ "kind": "adsense#alerts", # Kind of list this is, in this case adsense#alerts.
+ }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/adsense_v1_3.accounts.customchannels.adunits.html b/docs/dyn/adsense_v1_3.accounts.customchannels.adunits.html
new file mode 100644
index 0000000..003d4c0
--- /dev/null
+++ b/docs/dyn/adsense_v1_3.accounts.customchannels.adunits.html
@@ -0,0 +1,171 @@
+<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="adsense_v1_3.html">AdSense Management API</a> . <a href="adsense_v1_3.accounts.html">accounts</a> . <a href="adsense_v1_3.accounts.customchannels.html">customchannels</a> . <a href="adsense_v1_3.accounts.customchannels.adunits.html">adunits</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#list">list(accountId, adClientId, customChannelId, pageToken=None, includeInactive=None, maxResults=None)</a></code></p>
+<p class="firstline">List all ad units in the specified custom channel.</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>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="list">list(accountId, adClientId, customChannelId, pageToken=None, includeInactive=None, maxResults=None)</code>
+ <pre>List all ad units in the specified custom channel.
+
+Args:
+ accountId: string, Account to which the ad client belongs. (required)
+ adClientId: string, Ad client which contains the custom channel. (required)
+ customChannelId: string, Custom channel for which to list ad units. (required)
+ pageToken: string, A continuation token, used to page through ad units. To retrieve the next page, set this parameter to the value of "nextPageToken" from the previous response.
+ includeInactive: boolean, Whether to include inactive ad units. Default: true.
+ maxResults: integer, The maximum number of ad units to include in the response, used for paging.
+
+Returns:
+ An object of the form:
+
+ {
+ "nextPageToken": "A String", # Continuation token used to page through ad units. To retrieve the next page of results, set the next request's "pageToken" value to this.
+ "items": [ # The ad units returned in this list response.
+ {
+ "status": "A String", # Status of this ad unit. Possible values are:
+ # NEW: Indicates that the ad unit was created within the last seven days and does not yet have any activity associated with it.
+ #
+ # ACTIVE: Indicates that there has been activity on this ad unit in the last seven days.
+ #
+ # INACTIVE: Indicates that there has been no activity on this ad unit in the last seven days.
+ "kind": "adsense#adUnit", # Kind of resource this is, in this case adsense#adUnit.
+ "code": "A String", # Identity code of this ad unit, not necessarily unique across ad clients.
+ "name": "A String", # Name of this ad unit.
+ "feedAdsSettings": { # Settings specific to feed ads (AFF).
+ "minimumWordCount": 42, # The minimum length an entry should be in order to have attached ads.
+ "frequency": 42, # The frequency at which ads should appear in the feed (i.e. every N entries).
+ "adPosition": "A String", # The position of the ads relative to the feed entries.
+ "type": "A String", # The type of ads which should appear.
+ },
+ "savedStyleId": "A String", # ID of the saved ad style which holds this ad unit's style information.
+ "contentAdsSettings": { # Settings specific to content ads (AFC) and highend mobile content ads (AFMC).
+ "type": "A String", # Type of this ad unit.
+ "backupOption": { # The backup option to be used in instances where no ad is available.
+ "color": "A String", # Color to use when type is set to COLOR.
+ "url": "A String", # URL to use when type is set to URL.
+ "type": "A String", # Type of the backup option. Possible values are BLANK, COLOR and URL.
+ },
+ "size": "A String", # Size of this ad unit.
+ },
+ "id": "A String", # Unique identifier of this ad unit. This should be considered an opaque identifier; it is not safe to rely on it being in any particular format.
+ "mobileContentAdsSettings": { # Settings specific to WAP mobile content ads (AFMC).
+ "scriptingLanguage": "A String", # The scripting language to use for this ad unit.
+ "type": "A String", # Type of this ad unit.
+ "markupLanguage": "A String", # The markup language to use for this ad unit.
+ "size": "A String", # Size of this ad unit.
+ },
+ "customStyle": { # Custom style information specific to this ad unit.
+ "corners": "A String", # The style of the corners in the ad.
+ "colors": { # The colors which are included in the style. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
+ "url": "A String", # The color of the ad url.
+ "text": "A String", # The color of the ad text.
+ "border": "A String", # The color of the ad border.
+ "background": "A String", # The color of the ad background.
+ "title": "A String", # The color of the ad title.
+ },
+ "font": { # The font which is included in the style.
+ "family": "A String", # The family of the font.
+ "size": "A String", # The size of the font.
+ },
+ "kind": "adsense#adStyle", # Kind this is, in this case adsense#adStyle.
+ },
+ },
+ ],
+ "kind": "adsense#adUnits", # Kind of list this is, in this case adsense#adUnits.
+ "etag": "A String", # ETag of this response for caching purposes.
+ }</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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/adsense_v1_3.accounts.customchannels.html b/docs/dyn/adsense_v1_3.accounts.customchannels.html
new file mode 100644
index 0000000..13de0c9
--- /dev/null
+++ b/docs/dyn/adsense_v1_3.accounts.customchannels.html
@@ -0,0 +1,166 @@
+<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="adsense_v1_3.html">AdSense Management API</a> . <a href="adsense_v1_3.accounts.html">accounts</a> . <a href="adsense_v1_3.accounts.customchannels.html">customchannels</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="adsense_v1_3.accounts.customchannels.adunits.html">adunits()</a></code>
+</p>
+<p class="firstline">Returns the adunits Resource.</p>
+
+<p class="toc_element">
+ <code><a href="#get">get(accountId, adClientId, customChannelId)</a></code></p>
+<p class="firstline">Get the specified custom channel from the specified ad client for the specified account.</p>
+<p class="toc_element">
+ <code><a href="#list">list(accountId, adClientId, pageToken=None, maxResults=None)</a></code></p>
+<p class="firstline">List all custom channels in the specified ad client for the specified account.</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>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="get">get(accountId, adClientId, customChannelId)</code>
+ <pre>Get the specified custom channel from the specified ad client for the specified account.
+
+Args:
+ accountId: string, Account to which the ad client belongs. (required)
+ adClientId: string, Ad client which contains the custom channel. (required)
+ customChannelId: string, Custom channel to retrieve. (required)
+
+Returns:
+ An object of the form:
+
+ {
+ "kind": "adsense#customChannel", # Kind of resource this is, in this case adsense#customChannel.
+ "code": "A String", # Code of this custom channel, not necessarily unique across ad clients.
+ "targetingInfo": { # The targeting information of this custom channel, if activated.
+ "location": "A String", # The locations in which ads appear. (Only valid for content and mobile content ads). Acceptable values for content ads are: TOP_LEFT, TOP_CENTER, TOP_RIGHT, MIDDLE_LEFT, MIDDLE_CENTER, MIDDLE_RIGHT, BOTTOM_LEFT, BOTTOM_CENTER, BOTTOM_RIGHT, MULTIPLE_LOCATIONS. Acceptable values for mobile content ads are: TOP, MIDDLE, BOTTOM, MULTIPLE_LOCATIONS.
+ "adsAppearOn": "A String", # The name used to describe this channel externally.
+ "siteLanguage": "A String", # The language of the sites ads will be displayed on.
+ "description": "A String", # The external description of the channel.
+ },
+ "id": "A String", # Unique identifier of this custom channel. This should be considered an opaque identifier; it is not safe to rely on it being in any particular format.
+ "name": "A String", # Name of this custom channel.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="list">list(accountId, adClientId, pageToken=None, maxResults=None)</code>
+ <pre>List all custom channels in the specified ad client for the specified account.
+
+Args:
+ accountId: string, Account to which the ad client belongs. (required)
+ adClientId: string, Ad client for which to list custom channels. (required)
+ pageToken: string, A continuation token, used to page through custom channels. To retrieve the next page, set this parameter to the value of "nextPageToken" from the previous response.
+ maxResults: integer, The maximum number of custom channels to include in the response, used for paging.
+
+Returns:
+ An object of the form:
+
+ {
+ "nextPageToken": "A String", # Continuation token used to page through custom channels. To retrieve the next page of results, set the next request's "pageToken" value to this.
+ "items": [ # The custom channels returned in this list response.
+ {
+ "kind": "adsense#customChannel", # Kind of resource this is, in this case adsense#customChannel.
+ "code": "A String", # Code of this custom channel, not necessarily unique across ad clients.
+ "targetingInfo": { # The targeting information of this custom channel, if activated.
+ "location": "A String", # The locations in which ads appear. (Only valid for content and mobile content ads). Acceptable values for content ads are: TOP_LEFT, TOP_CENTER, TOP_RIGHT, MIDDLE_LEFT, MIDDLE_CENTER, MIDDLE_RIGHT, BOTTOM_LEFT, BOTTOM_CENTER, BOTTOM_RIGHT, MULTIPLE_LOCATIONS. Acceptable values for mobile content ads are: TOP, MIDDLE, BOTTOM, MULTIPLE_LOCATIONS.
+ "adsAppearOn": "A String", # The name used to describe this channel externally.
+ "siteLanguage": "A String", # The language of the sites ads will be displayed on.
+ "description": "A String", # The external description of the channel.
+ },
+ "id": "A String", # Unique identifier of this custom channel. This should be considered an opaque identifier; it is not safe to rely on it being in any particular format.
+ "name": "A String", # Name of this custom channel.
+ },
+ ],
+ "kind": "adsense#customChannels", # Kind of list this is, in this case adsense#customChannels.
+ "etag": "A String", # ETag of this response for caching purposes.
+ }</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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/adsense_v1_3.accounts.html b/docs/dyn/adsense_v1_3.accounts.html
new file mode 100644
index 0000000..b1e2266
--- /dev/null
+++ b/docs/dyn/adsense_v1_3.accounts.html
@@ -0,0 +1,187 @@
+<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="adsense_v1_3.html">AdSense Management API</a> . <a href="adsense_v1_3.accounts.html">accounts</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="adsense_v1_3.accounts.adclients.html">adclients()</a></code>
+</p>
+<p class="firstline">Returns the adclients Resource.</p>
+
+<p class="toc_element">
+ <code><a href="adsense_v1_3.accounts.adunits.html">adunits()</a></code>
+</p>
+<p class="firstline">Returns the adunits Resource.</p>
+
+<p class="toc_element">
+ <code><a href="adsense_v1_3.accounts.alerts.html">alerts()</a></code>
+</p>
+<p class="firstline">Returns the alerts Resource.</p>
+
+<p class="toc_element">
+ <code><a href="adsense_v1_3.accounts.customchannels.html">customchannels()</a></code>
+</p>
+<p class="firstline">Returns the customchannels Resource.</p>
+
+<p class="toc_element">
+ <code><a href="adsense_v1_3.accounts.reports.html">reports()</a></code>
+</p>
+<p class="firstline">Returns the reports Resource.</p>
+
+<p class="toc_element">
+ <code><a href="adsense_v1_3.accounts.savedadstyles.html">savedadstyles()</a></code>
+</p>
+<p class="firstline">Returns the savedadstyles Resource.</p>
+
+<p class="toc_element">
+ <code><a href="adsense_v1_3.accounts.urlchannels.html">urlchannels()</a></code>
+</p>
+<p class="firstline">Returns the urlchannels Resource.</p>
+
+<p class="toc_element">
+ <code><a href="#get">get(accountId, tree=None)</a></code></p>
+<p class="firstline">Get information about the selected AdSense account.</p>
+<p class="toc_element">
+ <code><a href="#list">list(pageToken=None, maxResults=None)</a></code></p>
+<p class="firstline">List all accounts available to this AdSense account.</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>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="get">get(accountId, tree=None)</code>
+ <pre>Get information about the selected AdSense account.
+
+Args:
+ accountId: string, Account to get information about. (required)
+ tree: boolean, Whether the tree of sub accounts should be returned.
+
+Returns:
+ An object of the form:
+
+ {
+ "kind": "adsense#account", # Kind of resource this is, in this case adsense#account.
+ "premium": True or False, # Whether this account is premium.
+ "id": "A String", # Unique identifier of this account.
+ "subAccounts": [ # Sub accounts of the this account.
+ # Object with schema name: Account
+ ],
+ "name": "A String", # Name of this account.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="list">list(pageToken=None, maxResults=None)</code>
+ <pre>List all accounts available to this AdSense account.
+
+Args:
+ pageToken: string, A continuation token, used to page through accounts. To retrieve the next page, set this parameter to the value of "nextPageToken" from the previous response.
+ maxResults: integer, The maximum number of accounts to include in the response, used for paging.
+
+Returns:
+ An object of the form:
+
+ {
+ "nextPageToken": "A String", # Continuation token used to page through accounts. To retrieve the next page of results, set the next request's "pageToken" value to this.
+ "items": [ # The accounts returned in this list response.
+ {
+ "kind": "adsense#account", # Kind of resource this is, in this case adsense#account.
+ "premium": True or False, # Whether this account is premium.
+ "id": "A String", # Unique identifier of this account.
+ "subAccounts": [ # Sub accounts of the this account.
+ # Object with schema name: Account
+ ],
+ "name": "A String", # Name of this account.
+ },
+ ],
+ "kind": "adsense#accounts", # Kind of list this is, in this case adsense#accounts.
+ "etag": "A String", # ETag of this response for caching purposes.
+ }</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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/adsense_v1_3.accounts.reports.html b/docs/dyn/adsense_v1_3.accounts.reports.html
new file mode 100644
index 0000000..c75137a
--- /dev/null
+++ b/docs/dyn/adsense_v1_3.accounts.reports.html
@@ -0,0 +1,161 @@
+<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="adsense_v1_3.html">AdSense Management API</a> . <a href="adsense_v1_3.accounts.html">accounts</a> . <a href="adsense_v1_3.accounts.reports.html">reports</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="adsense_v1_3.accounts.reports.saved.html">saved()</a></code>
+</p>
+<p class="firstline">Returns the saved Resource.</p>
+
+<p class="toc_element">
+ <code><a href="#generate">generate(accountId, startDate, endDate, locale=None, metric=None, currency=None, startIndex=None, useTimezoneReporting=None, sort=None, maxResults=None, filter=None, dimension=None)</a></code></p>
+<p class="firstline">Generate an AdSense report based on the report request sent in the query parameters. Returns the result as JSON; to retrieve output in CSV format specify "alt=csv" as a query parameter.</p>
+<p class="toc_element">
+ <code><a href="#generate_media">generate_media(accountId, startDate, endDate, locale=None, metric=None, currency=None, startIndex=None, useTimezoneReporting=None, sort=None, maxResults=None, filter=None, dimension=None)</a></code></p>
+<p class="firstline">Generate an AdSense report based on the report request sent in the query parameters. Returns the result as JSON; to retrieve output in CSV format specify "alt=csv" as a query parameter.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="generate">generate(accountId, startDate, endDate, locale=None, metric=None, currency=None, startIndex=None, useTimezoneReporting=None, sort=None, maxResults=None, filter=None, dimension=None)</code>
+ <pre>Generate an AdSense report based on the report request sent in the query parameters. Returns the result as JSON; to retrieve output in CSV format specify "alt=csv" as a query parameter.
+
+Args:
+ accountId: string, Account upon which to report. (required)
+ startDate: string, Start of the date range to report on in "YYYY-MM-DD" format, inclusive. (required)
+ endDate: string, End of the date range to report on in "YYYY-MM-DD" format, inclusive. (required)
+ locale: string, Optional locale to use for translating report output to a local language. Defaults to "en_US" if not specified.
+ metric: string, Numeric columns to include in the report. (repeated)
+ currency: string, Optional currency to use when reporting on monetary metrics. Defaults to the account's currency if not set.
+ startIndex: integer, Index of the first row of report data to return.
+ useTimezoneReporting: boolean, Whether the report should be generated in the AdSense account's local timezone. If false default PST/PDT timezone will be used.
+ sort: string, The name of a dimension or metric to sort the resulting report on, optionally prefixed with "+" to sort ascending or "-" to sort descending. If no prefix is specified, the column is sorted ascending. (repeated)
+ maxResults: integer, The maximum number of rows of report data to return.
+ filter: string, Filters to be run on the report. (repeated)
+ dimension: string, Dimensions to base the report on. (repeated)
+
+Returns:
+ An object of the form:
+
+ {
+ "kind": "adsense#report", # Kind this is, in this case adsense#report.
+ "rows": [ # The output rows of the report. Each row is a list of cells; one for each dimension in the request, followed by one for each metric in the request. The dimension cells contain strings, and the metric cells contain numbers.
+ [
+ "A String",
+ ],
+ ],
+ "warnings": [ # Any warnings associated with generation of the report.
+ "A String",
+ ],
+ "totals": [ # The totals of the report. This is the same length as any other row in the report; cells corresponding to dimension columns are empty.
+ "A String",
+ ],
+ "headers": [ # The header information of the columns requested in the report. This is a list of headers; one for each dimension in the request, followed by one for each metric in the request.
+ {
+ "currency": "A String", # The currency of this column. Only present if the header type is METRIC_CURRENCY.
+ "type": "A String", # The type of the header; one of DIMENSION, METRIC_TALLY, METRIC_RATIO, or METRIC_CURRENCY.
+ "name": "A String", # The name of the header.
+ },
+ ],
+ "totalMatchedRows": "A String", # The total number of rows matched by the report request. Fewer rows may be returned in the response due to being limited by the row count requested or the report row limit.
+ "averages": [ # The averages of the report. This is the same length as any other row in the report; cells corresponding to dimension columns are empty.
+ "A String",
+ ],
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="generate_media">generate_media(accountId, startDate, endDate, locale=None, metric=None, currency=None, startIndex=None, useTimezoneReporting=None, sort=None, maxResults=None, filter=None, dimension=None)</code>
+ <pre>Generate an AdSense report based on the report request sent in the query parameters. Returns the result as JSON; to retrieve output in CSV format specify "alt=csv" as a query parameter.
+
+Args:
+ accountId: string, Account upon which to report. (required)
+ startDate: string, Start of the date range to report on in "YYYY-MM-DD" format, inclusive. (required)
+ endDate: string, End of the date range to report on in "YYYY-MM-DD" format, inclusive. (required)
+ locale: string, Optional locale to use for translating report output to a local language. Defaults to "en_US" if not specified.
+ metric: string, Numeric columns to include in the report. (repeated)
+ currency: string, Optional currency to use when reporting on monetary metrics. Defaults to the account's currency if not set.
+ startIndex: integer, Index of the first row of report data to return.
+ useTimezoneReporting: boolean, Whether the report should be generated in the AdSense account's local timezone. If false default PST/PDT timezone will be used.
+ sort: string, The name of a dimension or metric to sort the resulting report on, optionally prefixed with "+" to sort ascending or "-" to sort descending. If no prefix is specified, the column is sorted ascending. (repeated)
+ maxResults: integer, The maximum number of rows of report data to return.
+ filter: string, Filters to be run on the report. (repeated)
+ dimension: string, Dimensions to base the report on. (repeated)
+
+Returns:
+ The media object as a string.
+
+ </pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/adsense_v1_3.accounts.reports.saved.html b/docs/dyn/adsense_v1_3.accounts.reports.saved.html
new file mode 100644
index 0000000..971a2ad
--- /dev/null
+++ b/docs/dyn/adsense_v1_3.accounts.reports.saved.html
@@ -0,0 +1,168 @@
+<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="adsense_v1_3.html">AdSense Management API</a> . <a href="adsense_v1_3.accounts.html">accounts</a> . <a href="adsense_v1_3.accounts.reports.html">reports</a> . <a href="adsense_v1_3.accounts.reports.saved.html">saved</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#generate">generate(accountId, savedReportId, locale=None, maxResults=None, startIndex=None)</a></code></p>
+<p class="firstline">Generate an AdSense report based on the saved report ID sent in the query parameters.</p>
+<p class="toc_element">
+ <code><a href="#list">list(accountId, pageToken=None, maxResults=None)</a></code></p>
+<p class="firstline">List all saved reports in the specified AdSense account.</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>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="generate">generate(accountId, savedReportId, locale=None, maxResults=None, startIndex=None)</code>
+ <pre>Generate an AdSense report based on the saved report ID sent in the query parameters.
+
+Args:
+ accountId: string, Account to which the saved reports belong. (required)
+ savedReportId: string, The saved report to retrieve. (required)
+ locale: string, Optional locale to use for translating report output to a local language. Defaults to "en_US" if not specified.
+ maxResults: integer, The maximum number of rows of report data to return.
+ startIndex: integer, Index of the first row of report data to return.
+
+Returns:
+ An object of the form:
+
+ {
+ "kind": "adsense#report", # Kind this is, in this case adsense#report.
+ "rows": [ # The output rows of the report. Each row is a list of cells; one for each dimension in the request, followed by one for each metric in the request. The dimension cells contain strings, and the metric cells contain numbers.
+ [
+ "A String",
+ ],
+ ],
+ "warnings": [ # Any warnings associated with generation of the report.
+ "A String",
+ ],
+ "totals": [ # The totals of the report. This is the same length as any other row in the report; cells corresponding to dimension columns are empty.
+ "A String",
+ ],
+ "headers": [ # The header information of the columns requested in the report. This is a list of headers; one for each dimension in the request, followed by one for each metric in the request.
+ {
+ "currency": "A String", # The currency of this column. Only present if the header type is METRIC_CURRENCY.
+ "type": "A String", # The type of the header; one of DIMENSION, METRIC_TALLY, METRIC_RATIO, or METRIC_CURRENCY.
+ "name": "A String", # The name of the header.
+ },
+ ],
+ "totalMatchedRows": "A String", # The total number of rows matched by the report request. Fewer rows may be returned in the response due to being limited by the row count requested or the report row limit.
+ "averages": [ # The averages of the report. This is the same length as any other row in the report; cells corresponding to dimension columns are empty.
+ "A String",
+ ],
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="list">list(accountId, pageToken=None, maxResults=None)</code>
+ <pre>List all saved reports in the specified AdSense account.
+
+Args:
+ accountId: string, Account to which the saved reports belong. (required)
+ pageToken: string, A continuation token, used to page through saved reports. To retrieve the next page, set this parameter to the value of "nextPageToken" from the previous response.
+ maxResults: integer, The maximum number of saved reports to include in the response, used for paging.
+
+Returns:
+ An object of the form:
+
+ {
+ "nextPageToken": "A String", # Continuation token used to page through saved reports. To retrieve the next page of results, set the next request's "pageToken" value to this.
+ "items": [ # The saved reports returned in this list response.
+ {
+ "kind": "adsense#savedReport", # Kind of resource this is, in this case adsense#savedReport.
+ "id": "A String", # Unique identifier of this saved report.
+ "name": "A String", # This saved report's name.
+ },
+ ],
+ "kind": "adsense#savedReports", # Kind of list this is, in this case adsense#savedReports.
+ "etag": "A String", # ETag of this response for caching purposes.
+ }</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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/adsense_v1_3.accounts.savedadstyles.html b/docs/dyn/adsense_v1_3.accounts.savedadstyles.html
new file mode 100644
index 0000000..12ccac8
--- /dev/null
+++ b/docs/dyn/adsense_v1_3.accounts.savedadstyles.html
@@ -0,0 +1,175 @@
+<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="adsense_v1_3.html">AdSense Management API</a> . <a href="adsense_v1_3.accounts.html">accounts</a> . <a href="adsense_v1_3.accounts.savedadstyles.html">savedadstyles</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#get">get(accountId, savedAdStyleId)</a></code></p>
+<p class="firstline">List a specific saved ad style for the specified account.</p>
+<p class="toc_element">
+ <code><a href="#list">list(accountId, pageToken=None, maxResults=None)</a></code></p>
+<p class="firstline">List all saved ad styles in the specified account.</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>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="get">get(accountId, savedAdStyleId)</code>
+ <pre>List a specific saved ad style for the specified account.
+
+Args:
+ accountId: string, Account for which to get the saved ad style. (required)
+ savedAdStyleId: string, Saved ad style to retrieve. (required)
+
+Returns:
+ An object of the form:
+
+ {
+ "kind": "adsense#savedAdStyle", # Kind of resource this is, in this case adsense#savedAdStyle.
+ "adStyle": { # The AdStyle itself.
+ "corners": "A String", # The style of the corners in the ad.
+ "colors": { # The colors which are included in the style. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
+ "url": "A String", # The color of the ad url.
+ "text": "A String", # The color of the ad text.
+ "border": "A String", # The color of the ad border.
+ "background": "A String", # The color of the ad background.
+ "title": "A String", # The color of the ad title.
+ },
+ "font": { # The font which is included in the style.
+ "family": "A String", # The family of the font.
+ "size": "A String", # The size of the font.
+ },
+ "kind": "adsense#adStyle", # Kind this is, in this case adsense#adStyle.
+ },
+ "name": "A String", # The user selected name of this SavedAdStyle.
+ "id": "A String", # Unique identifier of this saved ad style. This should be considered an opaque identifier; it is not safe to rely on it being in any particular format.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="list">list(accountId, pageToken=None, maxResults=None)</code>
+ <pre>List all saved ad styles in the specified account.
+
+Args:
+ accountId: string, Account for which to list saved ad styles. (required)
+ pageToken: string, A continuation token, used to page through saved ad styles. To retrieve the next page, set this parameter to the value of "nextPageToken" from the previous response.
+ maxResults: integer, The maximum number of saved ad styles to include in the response, used for paging.
+
+Returns:
+ An object of the form:
+
+ {
+ "nextPageToken": "A String", # Continuation token used to page through ad units. To retrieve the next page of results, set the next request's "pageToken" value to this.
+ "items": [ # The saved ad styles returned in this list response.
+ {
+ "kind": "adsense#savedAdStyle", # Kind of resource this is, in this case adsense#savedAdStyle.
+ "adStyle": { # The AdStyle itself.
+ "corners": "A String", # The style of the corners in the ad.
+ "colors": { # The colors which are included in the style. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
+ "url": "A String", # The color of the ad url.
+ "text": "A String", # The color of the ad text.
+ "border": "A String", # The color of the ad border.
+ "background": "A String", # The color of the ad background.
+ "title": "A String", # The color of the ad title.
+ },
+ "font": { # The font which is included in the style.
+ "family": "A String", # The family of the font.
+ "size": "A String", # The size of the font.
+ },
+ "kind": "adsense#adStyle", # Kind this is, in this case adsense#adStyle.
+ },
+ "name": "A String", # The user selected name of this SavedAdStyle.
+ "id": "A String", # Unique identifier of this saved ad style. This should be considered an opaque identifier; it is not safe to rely on it being in any particular format.
+ },
+ ],
+ "kind": "adsense#savedAdStyles", # Kind of list this is, in this case adsense#savedAdStyles.
+ "etag": "A String", # ETag of this response for caching purposes.
+ }</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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/adsense_v1_3.accounts.urlchannels.html b/docs/dyn/adsense_v1_3.accounts.urlchannels.html
new file mode 100644
index 0000000..c024486
--- /dev/null
+++ b/docs/dyn/adsense_v1_3.accounts.urlchannels.html
@@ -0,0 +1,125 @@
+<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="adsense_v1_3.html">AdSense Management API</a> . <a href="adsense_v1_3.accounts.html">accounts</a> . <a href="adsense_v1_3.accounts.urlchannels.html">urlchannels</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#list">list(accountId, adClientId, pageToken=None, maxResults=None)</a></code></p>
+<p class="firstline">List all URL channels in the specified ad client for the specified account.</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>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="list">list(accountId, adClientId, pageToken=None, maxResults=None)</code>
+ <pre>List all URL channels in the specified ad client for the specified account.
+
+Args:
+ accountId: string, Account to which the ad client belongs. (required)
+ adClientId: string, Ad client for which to list URL channels. (required)
+ pageToken: string, A continuation token, used to page through URL channels. To retrieve the next page, set this parameter to the value of "nextPageToken" from the previous response.
+ maxResults: integer, The maximum number of URL channels to include in the response, used for paging.
+
+Returns:
+ An object of the form:
+
+ {
+ "nextPageToken": "A String", # Continuation token used to page through URL channels. To retrieve the next page of results, set the next request's "pageToken" value to this.
+ "items": [ # The URL channels returned in this list response.
+ {
+ "kind": "adsense#urlChannel", # Kind of resource this is, in this case adsense#urlChannel.
+ "id": "A String", # Unique identifier of this URL channel. This should be considered an opaque identifier; it is not safe to rely on it being in any particular format.
+ "urlPattern": "A String", # URL Pattern of this URL channel. Does not include "http://" or "https://". Example: www.example.com/home
+ },
+ ],
+ "kind": "adsense#urlChannels", # Kind of list this is, in this case adsense#urlChannels.
+ "etag": "A String", # ETag of this response for caching purposes.
+ }</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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/adsense_v1_3.adclients.html b/docs/dyn/adsense_v1_3.adclients.html
new file mode 100644
index 0000000..58a4541
--- /dev/null
+++ b/docs/dyn/adsense_v1_3.adclients.html
@@ -0,0 +1,125 @@
+<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="adsense_v1_3.html">AdSense Management API</a> . <a href="adsense_v1_3.adclients.html">adclients</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#list">list(pageToken=None, maxResults=None)</a></code></p>
+<p class="firstline">List all ad clients in this AdSense account.</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>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="list">list(pageToken=None, maxResults=None)</code>
+ <pre>List all ad clients in this AdSense account.
+
+Args:
+ pageToken: string, A continuation token, used to page through ad clients. To retrieve the next page, set this parameter to the value of "nextPageToken" from the previous response.
+ maxResults: integer, The maximum number of ad clients to include in the response, used for paging.
+
+Returns:
+ An object of the form:
+
+ {
+ "nextPageToken": "A String", # Continuation token used to page through ad clients. To retrieve the next page of results, set the next request's "pageToken" value to this.
+ "items": [ # The ad clients returned in this list response.
+ {
+ "productCode": "A String", # This ad client's product code, which corresponds to the PRODUCT_CODE report dimension.
+ "kind": "adsense#adClient", # Kind of resource this is, in this case adsense#adClient.
+ "id": "A String", # Unique identifier of this ad client.
+ "arcOptIn": True or False, # Whether this ad client is opted in to ARC.
+ "supportsReporting": True or False, # Whether this ad client supports being reported on.
+ },
+ ],
+ "kind": "adsense#adClients", # Kind of list this is, in this case adsense#adClients.
+ "etag": "A String", # ETag of this response for caching purposes.
+ }</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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/adsense_v1_3.adunits.customchannels.html b/docs/dyn/adsense_v1_3.adunits.customchannels.html
new file mode 100644
index 0000000..0d4b429
--- /dev/null
+++ b/docs/dyn/adsense_v1_3.adunits.customchannels.html
@@ -0,0 +1,132 @@
+<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="adsense_v1_3.html">AdSense Management API</a> . <a href="adsense_v1_3.adunits.html">adunits</a> . <a href="adsense_v1_3.adunits.customchannels.html">customchannels</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#list">list(adClientId, adUnitId, pageToken=None, maxResults=None)</a></code></p>
+<p class="firstline">List all custom channels which the specified ad unit belongs to.</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>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="list">list(adClientId, adUnitId, pageToken=None, maxResults=None)</code>
+ <pre>List all custom channels which the specified ad unit belongs to.
+
+Args:
+ adClientId: string, Ad client which contains the ad unit. (required)
+ adUnitId: string, Ad unit for which to list custom channels. (required)
+ pageToken: string, A continuation token, used to page through custom channels. To retrieve the next page, set this parameter to the value of "nextPageToken" from the previous response.
+ maxResults: integer, The maximum number of custom channels to include in the response, used for paging.
+
+Returns:
+ An object of the form:
+
+ {
+ "nextPageToken": "A String", # Continuation token used to page through custom channels. To retrieve the next page of results, set the next request's "pageToken" value to this.
+ "items": [ # The custom channels returned in this list response.
+ {
+ "kind": "adsense#customChannel", # Kind of resource this is, in this case adsense#customChannel.
+ "code": "A String", # Code of this custom channel, not necessarily unique across ad clients.
+ "targetingInfo": { # The targeting information of this custom channel, if activated.
+ "location": "A String", # The locations in which ads appear. (Only valid for content and mobile content ads). Acceptable values for content ads are: TOP_LEFT, TOP_CENTER, TOP_RIGHT, MIDDLE_LEFT, MIDDLE_CENTER, MIDDLE_RIGHT, BOTTOM_LEFT, BOTTOM_CENTER, BOTTOM_RIGHT, MULTIPLE_LOCATIONS. Acceptable values for mobile content ads are: TOP, MIDDLE, BOTTOM, MULTIPLE_LOCATIONS.
+ "adsAppearOn": "A String", # The name used to describe this channel externally.
+ "siteLanguage": "A String", # The language of the sites ads will be displayed on.
+ "description": "A String", # The external description of the channel.
+ },
+ "id": "A String", # Unique identifier of this custom channel. This should be considered an opaque identifier; it is not safe to rely on it being in any particular format.
+ "name": "A String", # Name of this custom channel.
+ },
+ ],
+ "kind": "adsense#customChannels", # Kind of list this is, in this case adsense#customChannels.
+ "etag": "A String", # ETag of this response for caching purposes.
+ }</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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/adsense_v1_3.adunits.html b/docs/dyn/adsense_v1_3.adunits.html
new file mode 100644
index 0000000..c2db63a
--- /dev/null
+++ b/docs/dyn/adsense_v1_3.adunits.html
@@ -0,0 +1,259 @@
+<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="adsense_v1_3.html">AdSense Management API</a> . <a href="adsense_v1_3.adunits.html">adunits</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="adsense_v1_3.adunits.customchannels.html">customchannels()</a></code>
+</p>
+<p class="firstline">Returns the customchannels Resource.</p>
+
+<p class="toc_element">
+ <code><a href="#get">get(adClientId, adUnitId)</a></code></p>
+<p class="firstline">Gets the specified ad unit in the specified ad client.</p>
+<p class="toc_element">
+ <code><a href="#getAdCode">getAdCode(adClientId, adUnitId)</a></code></p>
+<p class="firstline">Get ad code for the specified ad unit.</p>
+<p class="toc_element">
+ <code><a href="#list">list(adClientId, pageToken=None, includeInactive=None, maxResults=None)</a></code></p>
+<p class="firstline">List all ad units in the specified ad client for this AdSense account.</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>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="get">get(adClientId, adUnitId)</code>
+ <pre>Gets the specified ad unit in the specified ad client.
+
+Args:
+ adClientId: string, Ad client for which to get the ad unit. (required)
+ adUnitId: string, Ad unit to retrieve. (required)
+
+Returns:
+ An object of the form:
+
+ {
+ "status": "A String", # Status of this ad unit. Possible values are:
+ # NEW: Indicates that the ad unit was created within the last seven days and does not yet have any activity associated with it.
+ #
+ # ACTIVE: Indicates that there has been activity on this ad unit in the last seven days.
+ #
+ # INACTIVE: Indicates that there has been no activity on this ad unit in the last seven days.
+ "kind": "adsense#adUnit", # Kind of resource this is, in this case adsense#adUnit.
+ "code": "A String", # Identity code of this ad unit, not necessarily unique across ad clients.
+ "name": "A String", # Name of this ad unit.
+ "feedAdsSettings": { # Settings specific to feed ads (AFF).
+ "minimumWordCount": 42, # The minimum length an entry should be in order to have attached ads.
+ "frequency": 42, # The frequency at which ads should appear in the feed (i.e. every N entries).
+ "adPosition": "A String", # The position of the ads relative to the feed entries.
+ "type": "A String", # The type of ads which should appear.
+ },
+ "savedStyleId": "A String", # ID of the saved ad style which holds this ad unit's style information.
+ "contentAdsSettings": { # Settings specific to content ads (AFC) and highend mobile content ads (AFMC).
+ "type": "A String", # Type of this ad unit.
+ "backupOption": { # The backup option to be used in instances where no ad is available.
+ "color": "A String", # Color to use when type is set to COLOR.
+ "url": "A String", # URL to use when type is set to URL.
+ "type": "A String", # Type of the backup option. Possible values are BLANK, COLOR and URL.
+ },
+ "size": "A String", # Size of this ad unit.
+ },
+ "id": "A String", # Unique identifier of this ad unit. This should be considered an opaque identifier; it is not safe to rely on it being in any particular format.
+ "mobileContentAdsSettings": { # Settings specific to WAP mobile content ads (AFMC).
+ "scriptingLanguage": "A String", # The scripting language to use for this ad unit.
+ "type": "A String", # Type of this ad unit.
+ "markupLanguage": "A String", # The markup language to use for this ad unit.
+ "size": "A String", # Size of this ad unit.
+ },
+ "customStyle": { # Custom style information specific to this ad unit.
+ "corners": "A String", # The style of the corners in the ad.
+ "colors": { # The colors which are included in the style. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
+ "url": "A String", # The color of the ad url.
+ "text": "A String", # The color of the ad text.
+ "border": "A String", # The color of the ad border.
+ "background": "A String", # The color of the ad background.
+ "title": "A String", # The color of the ad title.
+ },
+ "font": { # The font which is included in the style.
+ "family": "A String", # The family of the font.
+ "size": "A String", # The size of the font.
+ },
+ "kind": "adsense#adStyle", # Kind this is, in this case adsense#adStyle.
+ },
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="getAdCode">getAdCode(adClientId, adUnitId)</code>
+ <pre>Get ad code for the specified ad unit.
+
+Args:
+ adClientId: string, Ad client with contains the ad unit. (required)
+ adUnitId: string, Ad unit to get the code for. (required)
+
+Returns:
+ An object of the form:
+
+ {
+ "adCode": "A String", # The ad code snippet.
+ "kind": "adsense#adCode", # Kind this is, in this case adsense#adCode.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="list">list(adClientId, pageToken=None, includeInactive=None, maxResults=None)</code>
+ <pre>List all ad units in the specified ad client for this AdSense account.
+
+Args:
+ adClientId: string, Ad client for which to list ad units. (required)
+ pageToken: string, A continuation token, used to page through ad units. To retrieve the next page, set this parameter to the value of "nextPageToken" from the previous response.
+ includeInactive: boolean, Whether to include inactive ad units. Default: true.
+ maxResults: integer, The maximum number of ad units to include in the response, used for paging.
+
+Returns:
+ An object of the form:
+
+ {
+ "nextPageToken": "A String", # Continuation token used to page through ad units. To retrieve the next page of results, set the next request's "pageToken" value to this.
+ "items": [ # The ad units returned in this list response.
+ {
+ "status": "A String", # Status of this ad unit. Possible values are:
+ # NEW: Indicates that the ad unit was created within the last seven days and does not yet have any activity associated with it.
+ #
+ # ACTIVE: Indicates that there has been activity on this ad unit in the last seven days.
+ #
+ # INACTIVE: Indicates that there has been no activity on this ad unit in the last seven days.
+ "kind": "adsense#adUnit", # Kind of resource this is, in this case adsense#adUnit.
+ "code": "A String", # Identity code of this ad unit, not necessarily unique across ad clients.
+ "name": "A String", # Name of this ad unit.
+ "feedAdsSettings": { # Settings specific to feed ads (AFF).
+ "minimumWordCount": 42, # The minimum length an entry should be in order to have attached ads.
+ "frequency": 42, # The frequency at which ads should appear in the feed (i.e. every N entries).
+ "adPosition": "A String", # The position of the ads relative to the feed entries.
+ "type": "A String", # The type of ads which should appear.
+ },
+ "savedStyleId": "A String", # ID of the saved ad style which holds this ad unit's style information.
+ "contentAdsSettings": { # Settings specific to content ads (AFC) and highend mobile content ads (AFMC).
+ "type": "A String", # Type of this ad unit.
+ "backupOption": { # The backup option to be used in instances where no ad is available.
+ "color": "A String", # Color to use when type is set to COLOR.
+ "url": "A String", # URL to use when type is set to URL.
+ "type": "A String", # Type of the backup option. Possible values are BLANK, COLOR and URL.
+ },
+ "size": "A String", # Size of this ad unit.
+ },
+ "id": "A String", # Unique identifier of this ad unit. This should be considered an opaque identifier; it is not safe to rely on it being in any particular format.
+ "mobileContentAdsSettings": { # Settings specific to WAP mobile content ads (AFMC).
+ "scriptingLanguage": "A String", # The scripting language to use for this ad unit.
+ "type": "A String", # Type of this ad unit.
+ "markupLanguage": "A String", # The markup language to use for this ad unit.
+ "size": "A String", # Size of this ad unit.
+ },
+ "customStyle": { # Custom style information specific to this ad unit.
+ "corners": "A String", # The style of the corners in the ad.
+ "colors": { # The colors which are included in the style. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
+ "url": "A String", # The color of the ad url.
+ "text": "A String", # The color of the ad text.
+ "border": "A String", # The color of the ad border.
+ "background": "A String", # The color of the ad background.
+ "title": "A String", # The color of the ad title.
+ },
+ "font": { # The font which is included in the style.
+ "family": "A String", # The family of the font.
+ "size": "A String", # The size of the font.
+ },
+ "kind": "adsense#adStyle", # Kind this is, in this case adsense#adStyle.
+ },
+ },
+ ],
+ "kind": "adsense#adUnits", # Kind of list this is, in this case adsense#adUnits.
+ "etag": "A String", # ETag of this response for caching purposes.
+ }</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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/adsense_v1_3.alerts.html b/docs/dyn/adsense_v1_3.alerts.html
new file mode 100644
index 0000000..513bec1
--- /dev/null
+++ b/docs/dyn/adsense_v1_3.alerts.html
@@ -0,0 +1,105 @@
+<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="adsense_v1_3.html">AdSense Management API</a> . <a href="adsense_v1_3.alerts.html">alerts</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#list">list(locale=None)</a></code></p>
+<p class="firstline">List the alerts for this AdSense account.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="list">list(locale=None)</code>
+ <pre>List the alerts for this AdSense account.
+
+Args:
+ locale: string, The locale to use for translating alert messages. The account locale will be used if this is not supplied. The AdSense default (English) will be used if the supplied locale is invalid or unsupported.
+
+Returns:
+ An object of the form:
+
+ {
+ "items": [ # The alerts returned in this list response.
+ {
+ "type": "A String", # Type of this alert. Possible values: SELF_HOLD, MIGRATED_TO_BILLING3, ADDRESS_PIN_VERIFICATION, PHONE_PIN_VERIFICATION, CORPORATE_ENTITY, GRAYLISTED_PUBLISHER, API_HOLD.
+ "kind": "adsense#alert", # Kind of resource this is, in this case adsense#alert.
+ "message": "A String", # The localized alert message.
+ "id": "A String", # Unique identifier of this alert. This should be considered an opaque identifier; it is not safe to rely on it being in any particular format.
+ "severity": "A String", # Severity of this alert. Possible values: INFO, WARNING, SEVERE.
+ },
+ ],
+ "kind": "adsense#alerts", # Kind of list this is, in this case adsense#alerts.
+ }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/adsense_v1_3.customchannels.adunits.html b/docs/dyn/adsense_v1_3.customchannels.adunits.html
new file mode 100644
index 0000000..d8e2955
--- /dev/null
+++ b/docs/dyn/adsense_v1_3.customchannels.adunits.html
@@ -0,0 +1,170 @@
+<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="adsense_v1_3.html">AdSense Management API</a> . <a href="adsense_v1_3.customchannels.html">customchannels</a> . <a href="adsense_v1_3.customchannels.adunits.html">adunits</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#list">list(adClientId, customChannelId, pageToken=None, includeInactive=None, maxResults=None)</a></code></p>
+<p class="firstline">List all ad units in the specified custom channel.</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>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="list">list(adClientId, customChannelId, pageToken=None, includeInactive=None, maxResults=None)</code>
+ <pre>List all ad units in the specified custom channel.
+
+Args:
+ adClientId: string, Ad client which contains the custom channel. (required)
+ customChannelId: string, Custom channel for which to list ad units. (required)
+ pageToken: string, A continuation token, used to page through ad units. To retrieve the next page, set this parameter to the value of "nextPageToken" from the previous response.
+ includeInactive: boolean, Whether to include inactive ad units. Default: true.
+ maxResults: integer, The maximum number of ad units to include in the response, used for paging.
+
+Returns:
+ An object of the form:
+
+ {
+ "nextPageToken": "A String", # Continuation token used to page through ad units. To retrieve the next page of results, set the next request's "pageToken" value to this.
+ "items": [ # The ad units returned in this list response.
+ {
+ "status": "A String", # Status of this ad unit. Possible values are:
+ # NEW: Indicates that the ad unit was created within the last seven days and does not yet have any activity associated with it.
+ #
+ # ACTIVE: Indicates that there has been activity on this ad unit in the last seven days.
+ #
+ # INACTIVE: Indicates that there has been no activity on this ad unit in the last seven days.
+ "kind": "adsense#adUnit", # Kind of resource this is, in this case adsense#adUnit.
+ "code": "A String", # Identity code of this ad unit, not necessarily unique across ad clients.
+ "name": "A String", # Name of this ad unit.
+ "feedAdsSettings": { # Settings specific to feed ads (AFF).
+ "minimumWordCount": 42, # The minimum length an entry should be in order to have attached ads.
+ "frequency": 42, # The frequency at which ads should appear in the feed (i.e. every N entries).
+ "adPosition": "A String", # The position of the ads relative to the feed entries.
+ "type": "A String", # The type of ads which should appear.
+ },
+ "savedStyleId": "A String", # ID of the saved ad style which holds this ad unit's style information.
+ "contentAdsSettings": { # Settings specific to content ads (AFC) and highend mobile content ads (AFMC).
+ "type": "A String", # Type of this ad unit.
+ "backupOption": { # The backup option to be used in instances where no ad is available.
+ "color": "A String", # Color to use when type is set to COLOR.
+ "url": "A String", # URL to use when type is set to URL.
+ "type": "A String", # Type of the backup option. Possible values are BLANK, COLOR and URL.
+ },
+ "size": "A String", # Size of this ad unit.
+ },
+ "id": "A String", # Unique identifier of this ad unit. This should be considered an opaque identifier; it is not safe to rely on it being in any particular format.
+ "mobileContentAdsSettings": { # Settings specific to WAP mobile content ads (AFMC).
+ "scriptingLanguage": "A String", # The scripting language to use for this ad unit.
+ "type": "A String", # Type of this ad unit.
+ "markupLanguage": "A String", # The markup language to use for this ad unit.
+ "size": "A String", # Size of this ad unit.
+ },
+ "customStyle": { # Custom style information specific to this ad unit.
+ "corners": "A String", # The style of the corners in the ad.
+ "colors": { # The colors which are included in the style. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
+ "url": "A String", # The color of the ad url.
+ "text": "A String", # The color of the ad text.
+ "border": "A String", # The color of the ad border.
+ "background": "A String", # The color of the ad background.
+ "title": "A String", # The color of the ad title.
+ },
+ "font": { # The font which is included in the style.
+ "family": "A String", # The family of the font.
+ "size": "A String", # The size of the font.
+ },
+ "kind": "adsense#adStyle", # Kind this is, in this case adsense#adStyle.
+ },
+ },
+ ],
+ "kind": "adsense#adUnits", # Kind of list this is, in this case adsense#adUnits.
+ "etag": "A String", # ETag of this response for caching purposes.
+ }</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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/adsense_v1_3.customchannels.html b/docs/dyn/adsense_v1_3.customchannels.html
new file mode 100644
index 0000000..a27610d
--- /dev/null
+++ b/docs/dyn/adsense_v1_3.customchannels.html
@@ -0,0 +1,164 @@
+<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="adsense_v1_3.html">AdSense Management API</a> . <a href="adsense_v1_3.customchannels.html">customchannels</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="adsense_v1_3.customchannels.adunits.html">adunits()</a></code>
+</p>
+<p class="firstline">Returns the adunits Resource.</p>
+
+<p class="toc_element">
+ <code><a href="#get">get(adClientId, customChannelId)</a></code></p>
+<p class="firstline">Get the specified custom channel from the specified ad client.</p>
+<p class="toc_element">
+ <code><a href="#list">list(adClientId, pageToken=None, maxResults=None)</a></code></p>
+<p class="firstline">List all custom channels in the specified ad client for this AdSense account.</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>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="get">get(adClientId, customChannelId)</code>
+ <pre>Get the specified custom channel from the specified ad client.
+
+Args:
+ adClientId: string, Ad client which contains the custom channel. (required)
+ customChannelId: string, Custom channel to retrieve. (required)
+
+Returns:
+ An object of the form:
+
+ {
+ "kind": "adsense#customChannel", # Kind of resource this is, in this case adsense#customChannel.
+ "code": "A String", # Code of this custom channel, not necessarily unique across ad clients.
+ "targetingInfo": { # The targeting information of this custom channel, if activated.
+ "location": "A String", # The locations in which ads appear. (Only valid for content and mobile content ads). Acceptable values for content ads are: TOP_LEFT, TOP_CENTER, TOP_RIGHT, MIDDLE_LEFT, MIDDLE_CENTER, MIDDLE_RIGHT, BOTTOM_LEFT, BOTTOM_CENTER, BOTTOM_RIGHT, MULTIPLE_LOCATIONS. Acceptable values for mobile content ads are: TOP, MIDDLE, BOTTOM, MULTIPLE_LOCATIONS.
+ "adsAppearOn": "A String", # The name used to describe this channel externally.
+ "siteLanguage": "A String", # The language of the sites ads will be displayed on.
+ "description": "A String", # The external description of the channel.
+ },
+ "id": "A String", # Unique identifier of this custom channel. This should be considered an opaque identifier; it is not safe to rely on it being in any particular format.
+ "name": "A String", # Name of this custom channel.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="list">list(adClientId, pageToken=None, maxResults=None)</code>
+ <pre>List all custom channels in the specified ad client for this AdSense account.
+
+Args:
+ adClientId: string, Ad client for which to list custom channels. (required)
+ pageToken: string, A continuation token, used to page through custom channels. To retrieve the next page, set this parameter to the value of "nextPageToken" from the previous response.
+ maxResults: integer, The maximum number of custom channels to include in the response, used for paging.
+
+Returns:
+ An object of the form:
+
+ {
+ "nextPageToken": "A String", # Continuation token used to page through custom channels. To retrieve the next page of results, set the next request's "pageToken" value to this.
+ "items": [ # The custom channels returned in this list response.
+ {
+ "kind": "adsense#customChannel", # Kind of resource this is, in this case adsense#customChannel.
+ "code": "A String", # Code of this custom channel, not necessarily unique across ad clients.
+ "targetingInfo": { # The targeting information of this custom channel, if activated.
+ "location": "A String", # The locations in which ads appear. (Only valid for content and mobile content ads). Acceptable values for content ads are: TOP_LEFT, TOP_CENTER, TOP_RIGHT, MIDDLE_LEFT, MIDDLE_CENTER, MIDDLE_RIGHT, BOTTOM_LEFT, BOTTOM_CENTER, BOTTOM_RIGHT, MULTIPLE_LOCATIONS. Acceptable values for mobile content ads are: TOP, MIDDLE, BOTTOM, MULTIPLE_LOCATIONS.
+ "adsAppearOn": "A String", # The name used to describe this channel externally.
+ "siteLanguage": "A String", # The language of the sites ads will be displayed on.
+ "description": "A String", # The external description of the channel.
+ },
+ "id": "A String", # Unique identifier of this custom channel. This should be considered an opaque identifier; it is not safe to rely on it being in any particular format.
+ "name": "A String", # Name of this custom channel.
+ },
+ ],
+ "kind": "adsense#customChannels", # Kind of list this is, in this case adsense#customChannels.
+ "etag": "A String", # ETag of this response for caching purposes.
+ }</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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/adsense_v1_3.html b/docs/dyn/adsense_v1_3.html
new file mode 100644
index 0000000..e6b9395
--- /dev/null
+++ b/docs/dyn/adsense_v1_3.html
@@ -0,0 +1,122 @@
+<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="adsense_v1_3.html">AdSense Management API</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="adsense_v1_3.accounts.html">accounts()</a></code>
+</p>
+<p class="firstline">Returns the accounts Resource.</p>
+
+<p class="toc_element">
+ <code><a href="adsense_v1_3.adclients.html">adclients()</a></code>
+</p>
+<p class="firstline">Returns the adclients Resource.</p>
+
+<p class="toc_element">
+ <code><a href="adsense_v1_3.adunits.html">adunits()</a></code>
+</p>
+<p class="firstline">Returns the adunits Resource.</p>
+
+<p class="toc_element">
+ <code><a href="adsense_v1_3.alerts.html">alerts()</a></code>
+</p>
+<p class="firstline">Returns the alerts Resource.</p>
+
+<p class="toc_element">
+ <code><a href="adsense_v1_3.customchannels.html">customchannels()</a></code>
+</p>
+<p class="firstline">Returns the customchannels Resource.</p>
+
+<p class="toc_element">
+ <code><a href="adsense_v1_3.metadata.html">metadata()</a></code>
+</p>
+<p class="firstline">Returns the metadata Resource.</p>
+
+<p class="toc_element">
+ <code><a href="adsense_v1_3.reports.html">reports()</a></code>
+</p>
+<p class="firstline">Returns the reports Resource.</p>
+
+<p class="toc_element">
+ <code><a href="adsense_v1_3.savedadstyles.html">savedadstyles()</a></code>
+</p>
+<p class="firstline">Returns the savedadstyles Resource.</p>
+
+<p class="toc_element">
+ <code><a href="adsense_v1_3.urlchannels.html">urlchannels()</a></code>
+</p>
+<p class="firstline">Returns the urlchannels Resource.</p>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/adsense_v1_3.metadata.dimensions.html b/docs/dyn/adsense_v1_3.metadata.dimensions.html
new file mode 100644
index 0000000..e59c54f
--- /dev/null
+++ b/docs/dyn/adsense_v1_3.metadata.dimensions.html
@@ -0,0 +1,116 @@
+<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="adsense_v1_3.html">AdSense Management API</a> . <a href="adsense_v1_3.metadata.html">metadata</a> . <a href="adsense_v1_3.metadata.dimensions.html">dimensions</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#list">list()</a></code></p>
+<p class="firstline">List the metadata for the dimensions available to this AdSense account.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="list">list()</code>
+ <pre>List the metadata for the dimensions available to this AdSense account.
+
+Args:
+
+Returns:
+ An object of the form:
+
+ {
+ "items": [
+ {
+ "requiredMetrics": [ # The names of the metrics which the dimension or metric this reporting metadata entry describes requires to also be present in order for the report to be valid. Omitting these will not cause an error or warning, but may result in data which cannot be correctly interpreted.
+ "A String",
+ ],
+ "kind": "adsense#reportingMetadataEntry", # Kind of resource this is, in this case adsense#reportingMetadataEntry.
+ "compatibleMetrics": [ # The names of the metrics the dimension or metric this reporting metadata entry describes is compatible with.
+ "A String",
+ ],
+ "requiredDimensions": [ # The names of the dimensions which the dimension or metric this reporting metadata entry describes requires to also be present in order for the report to be valid. Omitting these will not cause an error or warning, but may result in data which cannot be correctly interpreted.
+ "A String",
+ ],
+ "compatibleDimensions": [ # For metrics this is a list of dimension IDs which the metric is compatible with, for dimensions it is a list of compatibility groups the dimension belongs to.
+ "A String",
+ ],
+ "id": "A String", # Unique identifier of this reporting metadata entry, corresponding to the name of the appropriate dimension or metric.
+ "supportedProducts": [ # The codes of the projects supported by the dimension or metric this reporting metadata entry describes.
+ "A String",
+ ],
+ },
+ ],
+ "kind": "adsense#metadata", # Kind of list this is, in this case adsense#metadata.
+ }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/adsense_v1_3.metadata.html b/docs/dyn/adsense_v1_3.metadata.html
new file mode 100644
index 0000000..c1aee39
--- /dev/null
+++ b/docs/dyn/adsense_v1_3.metadata.html
@@ -0,0 +1,87 @@
+<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="adsense_v1_3.html">AdSense Management API</a> . <a href="adsense_v1_3.metadata.html">metadata</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="adsense_v1_3.metadata.dimensions.html">dimensions()</a></code>
+</p>
+<p class="firstline">Returns the dimensions Resource.</p>
+
+<p class="toc_element">
+ <code><a href="adsense_v1_3.metadata.metrics.html">metrics()</a></code>
+</p>
+<p class="firstline">Returns the metrics Resource.</p>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/adsense_v1_3.metadata.metrics.html b/docs/dyn/adsense_v1_3.metadata.metrics.html
new file mode 100644
index 0000000..754349f
--- /dev/null
+++ b/docs/dyn/adsense_v1_3.metadata.metrics.html
@@ -0,0 +1,116 @@
+<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="adsense_v1_3.html">AdSense Management API</a> . <a href="adsense_v1_3.metadata.html">metadata</a> . <a href="adsense_v1_3.metadata.metrics.html">metrics</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#list">list()</a></code></p>
+<p class="firstline">List the metadata for the metrics available to this AdSense account.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="list">list()</code>
+ <pre>List the metadata for the metrics available to this AdSense account.
+
+Args:
+
+Returns:
+ An object of the form:
+
+ {
+ "items": [
+ {
+ "requiredMetrics": [ # The names of the metrics which the dimension or metric this reporting metadata entry describes requires to also be present in order for the report to be valid. Omitting these will not cause an error or warning, but may result in data which cannot be correctly interpreted.
+ "A String",
+ ],
+ "kind": "adsense#reportingMetadataEntry", # Kind of resource this is, in this case adsense#reportingMetadataEntry.
+ "compatibleMetrics": [ # The names of the metrics the dimension or metric this reporting metadata entry describes is compatible with.
+ "A String",
+ ],
+ "requiredDimensions": [ # The names of the dimensions which the dimension or metric this reporting metadata entry describes requires to also be present in order for the report to be valid. Omitting these will not cause an error or warning, but may result in data which cannot be correctly interpreted.
+ "A String",
+ ],
+ "compatibleDimensions": [ # For metrics this is a list of dimension IDs which the metric is compatible with, for dimensions it is a list of compatibility groups the dimension belongs to.
+ "A String",
+ ],
+ "id": "A String", # Unique identifier of this reporting metadata entry, corresponding to the name of the appropriate dimension or metric.
+ "supportedProducts": [ # The codes of the projects supported by the dimension or metric this reporting metadata entry describes.
+ "A String",
+ ],
+ },
+ ],
+ "kind": "adsense#metadata", # Kind of list this is, in this case adsense#metadata.
+ }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/adsense_v1_3.reports.html b/docs/dyn/adsense_v1_3.reports.html
new file mode 100644
index 0000000..ff3f34a
--- /dev/null
+++ b/docs/dyn/adsense_v1_3.reports.html
@@ -0,0 +1,161 @@
+<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="adsense_v1_3.html">AdSense Management API</a> . <a href="adsense_v1_3.reports.html">reports</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="adsense_v1_3.reports.saved.html">saved()</a></code>
+</p>
+<p class="firstline">Returns the saved Resource.</p>
+
+<p class="toc_element">
+ <code><a href="#generate">generate(startDate, endDate, locale=None, metric=None, currency=None, startIndex=None, accountId=None, useTimezoneReporting=None, sort=None, maxResults=None, filter=None, dimension=None)</a></code></p>
+<p class="firstline">Generate an AdSense report based on the report request sent in the query parameters. Returns the result as JSON; to retrieve output in CSV format specify "alt=csv" as a query parameter.</p>
+<p class="toc_element">
+ <code><a href="#generate_media">generate_media(startDate, endDate, locale=None, metric=None, currency=None, startIndex=None, accountId=None, useTimezoneReporting=None, sort=None, maxResults=None, filter=None, dimension=None)</a></code></p>
+<p class="firstline">Generate an AdSense report based on the report request sent in the query parameters. Returns the result as JSON; to retrieve output in CSV format specify "alt=csv" as a query parameter.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="generate">generate(startDate, endDate, locale=None, metric=None, currency=None, startIndex=None, accountId=None, useTimezoneReporting=None, sort=None, maxResults=None, filter=None, dimension=None)</code>
+ <pre>Generate an AdSense report based on the report request sent in the query parameters. Returns the result as JSON; to retrieve output in CSV format specify "alt=csv" as a query parameter.
+
+Args:
+ startDate: string, Start of the date range to report on in "YYYY-MM-DD" format, inclusive. (required)
+ endDate: string, End of the date range to report on in "YYYY-MM-DD" format, inclusive. (required)
+ locale: string, Optional locale to use for translating report output to a local language. Defaults to "en_US" if not specified.
+ metric: string, Numeric columns to include in the report. (repeated)
+ currency: string, Optional currency to use when reporting on monetary metrics. Defaults to the account's currency if not set.
+ startIndex: integer, Index of the first row of report data to return.
+ accountId: string, Accounts upon which to report. (repeated)
+ useTimezoneReporting: boolean, Whether the report should be generated in the AdSense account's local timezone. If false default PST/PDT timezone will be used.
+ sort: string, The name of a dimension or metric to sort the resulting report on, optionally prefixed with "+" to sort ascending or "-" to sort descending. If no prefix is specified, the column is sorted ascending. (repeated)
+ maxResults: integer, The maximum number of rows of report data to return.
+ filter: string, Filters to be run on the report. (repeated)
+ dimension: string, Dimensions to base the report on. (repeated)
+
+Returns:
+ An object of the form:
+
+ {
+ "kind": "adsense#report", # Kind this is, in this case adsense#report.
+ "rows": [ # The output rows of the report. Each row is a list of cells; one for each dimension in the request, followed by one for each metric in the request. The dimension cells contain strings, and the metric cells contain numbers.
+ [
+ "A String",
+ ],
+ ],
+ "warnings": [ # Any warnings associated with generation of the report.
+ "A String",
+ ],
+ "totals": [ # The totals of the report. This is the same length as any other row in the report; cells corresponding to dimension columns are empty.
+ "A String",
+ ],
+ "headers": [ # The header information of the columns requested in the report. This is a list of headers; one for each dimension in the request, followed by one for each metric in the request.
+ {
+ "currency": "A String", # The currency of this column. Only present if the header type is METRIC_CURRENCY.
+ "type": "A String", # The type of the header; one of DIMENSION, METRIC_TALLY, METRIC_RATIO, or METRIC_CURRENCY.
+ "name": "A String", # The name of the header.
+ },
+ ],
+ "totalMatchedRows": "A String", # The total number of rows matched by the report request. Fewer rows may be returned in the response due to being limited by the row count requested or the report row limit.
+ "averages": [ # The averages of the report. This is the same length as any other row in the report; cells corresponding to dimension columns are empty.
+ "A String",
+ ],
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="generate_media">generate_media(startDate, endDate, locale=None, metric=None, currency=None, startIndex=None, accountId=None, useTimezoneReporting=None, sort=None, maxResults=None, filter=None, dimension=None)</code>
+ <pre>Generate an AdSense report based on the report request sent in the query parameters. Returns the result as JSON; to retrieve output in CSV format specify "alt=csv" as a query parameter.
+
+Args:
+ startDate: string, Start of the date range to report on in "YYYY-MM-DD" format, inclusive. (required)
+ endDate: string, End of the date range to report on in "YYYY-MM-DD" format, inclusive. (required)
+ locale: string, Optional locale to use for translating report output to a local language. Defaults to "en_US" if not specified.
+ metric: string, Numeric columns to include in the report. (repeated)
+ currency: string, Optional currency to use when reporting on monetary metrics. Defaults to the account's currency if not set.
+ startIndex: integer, Index of the first row of report data to return.
+ accountId: string, Accounts upon which to report. (repeated)
+ useTimezoneReporting: boolean, Whether the report should be generated in the AdSense account's local timezone. If false default PST/PDT timezone will be used.
+ sort: string, The name of a dimension or metric to sort the resulting report on, optionally prefixed with "+" to sort ascending or "-" to sort descending. If no prefix is specified, the column is sorted ascending. (repeated)
+ maxResults: integer, The maximum number of rows of report data to return.
+ filter: string, Filters to be run on the report. (repeated)
+ dimension: string, Dimensions to base the report on. (repeated)
+
+Returns:
+ The media object as a string.
+
+ </pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/adsense_v1_3.reports.saved.html b/docs/dyn/adsense_v1_3.reports.saved.html
new file mode 100644
index 0000000..e64429d
--- /dev/null
+++ b/docs/dyn/adsense_v1_3.reports.saved.html
@@ -0,0 +1,166 @@
+<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="adsense_v1_3.html">AdSense Management API</a> . <a href="adsense_v1_3.reports.html">reports</a> . <a href="adsense_v1_3.reports.saved.html">saved</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#generate">generate(savedReportId, locale=None, maxResults=None, startIndex=None)</a></code></p>
+<p class="firstline">Generate an AdSense report based on the saved report ID sent in the query parameters.</p>
+<p class="toc_element">
+ <code><a href="#list">list(pageToken=None, maxResults=None)</a></code></p>
+<p class="firstline">List all saved reports in this AdSense account.</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>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="generate">generate(savedReportId, locale=None, maxResults=None, startIndex=None)</code>
+ <pre>Generate an AdSense report based on the saved report ID sent in the query parameters.
+
+Args:
+ savedReportId: string, The saved report to retrieve. (required)
+ locale: string, Optional locale to use for translating report output to a local language. Defaults to "en_US" if not specified.
+ maxResults: integer, The maximum number of rows of report data to return.
+ startIndex: integer, Index of the first row of report data to return.
+
+Returns:
+ An object of the form:
+
+ {
+ "kind": "adsense#report", # Kind this is, in this case adsense#report.
+ "rows": [ # The output rows of the report. Each row is a list of cells; one for each dimension in the request, followed by one for each metric in the request. The dimension cells contain strings, and the metric cells contain numbers.
+ [
+ "A String",
+ ],
+ ],
+ "warnings": [ # Any warnings associated with generation of the report.
+ "A String",
+ ],
+ "totals": [ # The totals of the report. This is the same length as any other row in the report; cells corresponding to dimension columns are empty.
+ "A String",
+ ],
+ "headers": [ # The header information of the columns requested in the report. This is a list of headers; one for each dimension in the request, followed by one for each metric in the request.
+ {
+ "currency": "A String", # The currency of this column. Only present if the header type is METRIC_CURRENCY.
+ "type": "A String", # The type of the header; one of DIMENSION, METRIC_TALLY, METRIC_RATIO, or METRIC_CURRENCY.
+ "name": "A String", # The name of the header.
+ },
+ ],
+ "totalMatchedRows": "A String", # The total number of rows matched by the report request. Fewer rows may be returned in the response due to being limited by the row count requested or the report row limit.
+ "averages": [ # The averages of the report. This is the same length as any other row in the report; cells corresponding to dimension columns are empty.
+ "A String",
+ ],
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="list">list(pageToken=None, maxResults=None)</code>
+ <pre>List all saved reports in this AdSense account.
+
+Args:
+ pageToken: string, A continuation token, used to page through saved reports. To retrieve the next page, set this parameter to the value of "nextPageToken" from the previous response.
+ maxResults: integer, The maximum number of saved reports to include in the response, used for paging.
+
+Returns:
+ An object of the form:
+
+ {
+ "nextPageToken": "A String", # Continuation token used to page through saved reports. To retrieve the next page of results, set the next request's "pageToken" value to this.
+ "items": [ # The saved reports returned in this list response.
+ {
+ "kind": "adsense#savedReport", # Kind of resource this is, in this case adsense#savedReport.
+ "id": "A String", # Unique identifier of this saved report.
+ "name": "A String", # This saved report's name.
+ },
+ ],
+ "kind": "adsense#savedReports", # Kind of list this is, in this case adsense#savedReports.
+ "etag": "A String", # ETag of this response for caching purposes.
+ }</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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/adsense_v1_3.savedadstyles.html b/docs/dyn/adsense_v1_3.savedadstyles.html
new file mode 100644
index 0000000..4a663e1
--- /dev/null
+++ b/docs/dyn/adsense_v1_3.savedadstyles.html
@@ -0,0 +1,173 @@
+<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="adsense_v1_3.html">AdSense Management API</a> . <a href="adsense_v1_3.savedadstyles.html">savedadstyles</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#get">get(savedAdStyleId)</a></code></p>
+<p class="firstline">Get a specific saved ad style from the user's account.</p>
+<p class="toc_element">
+ <code><a href="#list">list(pageToken=None, maxResults=None)</a></code></p>
+<p class="firstline">List all saved ad styles in the user's account.</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>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="get">get(savedAdStyleId)</code>
+ <pre>Get a specific saved ad style from the user's account.
+
+Args:
+ savedAdStyleId: string, Saved ad style to retrieve. (required)
+
+Returns:
+ An object of the form:
+
+ {
+ "kind": "adsense#savedAdStyle", # Kind of resource this is, in this case adsense#savedAdStyle.
+ "adStyle": { # The AdStyle itself.
+ "corners": "A String", # The style of the corners in the ad.
+ "colors": { # The colors which are included in the style. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
+ "url": "A String", # The color of the ad url.
+ "text": "A String", # The color of the ad text.
+ "border": "A String", # The color of the ad border.
+ "background": "A String", # The color of the ad background.
+ "title": "A String", # The color of the ad title.
+ },
+ "font": { # The font which is included in the style.
+ "family": "A String", # The family of the font.
+ "size": "A String", # The size of the font.
+ },
+ "kind": "adsense#adStyle", # Kind this is, in this case adsense#adStyle.
+ },
+ "name": "A String", # The user selected name of this SavedAdStyle.
+ "id": "A String", # Unique identifier of this saved ad style. This should be considered an opaque identifier; it is not safe to rely on it being in any particular format.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="list">list(pageToken=None, maxResults=None)</code>
+ <pre>List all saved ad styles in the user's account.
+
+Args:
+ pageToken: string, A continuation token, used to page through saved ad styles. To retrieve the next page, set this parameter to the value of "nextPageToken" from the previous response.
+ maxResults: integer, The maximum number of saved ad styles to include in the response, used for paging.
+
+Returns:
+ An object of the form:
+
+ {
+ "nextPageToken": "A String", # Continuation token used to page through ad units. To retrieve the next page of results, set the next request's "pageToken" value to this.
+ "items": [ # The saved ad styles returned in this list response.
+ {
+ "kind": "adsense#savedAdStyle", # Kind of resource this is, in this case adsense#savedAdStyle.
+ "adStyle": { # The AdStyle itself.
+ "corners": "A String", # The style of the corners in the ad.
+ "colors": { # The colors which are included in the style. These are represented as six hexadecimal characters, similar to HTML color codes, but without the leading hash.
+ "url": "A String", # The color of the ad url.
+ "text": "A String", # The color of the ad text.
+ "border": "A String", # The color of the ad border.
+ "background": "A String", # The color of the ad background.
+ "title": "A String", # The color of the ad title.
+ },
+ "font": { # The font which is included in the style.
+ "family": "A String", # The family of the font.
+ "size": "A String", # The size of the font.
+ },
+ "kind": "adsense#adStyle", # Kind this is, in this case adsense#adStyle.
+ },
+ "name": "A String", # The user selected name of this SavedAdStyle.
+ "id": "A String", # Unique identifier of this saved ad style. This should be considered an opaque identifier; it is not safe to rely on it being in any particular format.
+ },
+ ],
+ "kind": "adsense#savedAdStyles", # Kind of list this is, in this case adsense#savedAdStyles.
+ "etag": "A String", # ETag of this response for caching purposes.
+ }</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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/adsense_v1_3.urlchannels.html b/docs/dyn/adsense_v1_3.urlchannels.html
new file mode 100644
index 0000000..b3bf582
--- /dev/null
+++ b/docs/dyn/adsense_v1_3.urlchannels.html
@@ -0,0 +1,124 @@
+<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="adsense_v1_3.html">AdSense Management API</a> . <a href="adsense_v1_3.urlchannels.html">urlchannels</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#list">list(adClientId, pageToken=None, maxResults=None)</a></code></p>
+<p class="firstline">List all URL channels in the specified ad client for this AdSense account.</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>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="list">list(adClientId, pageToken=None, maxResults=None)</code>
+ <pre>List all URL channels in the specified ad client for this AdSense account.
+
+Args:
+ adClientId: string, Ad client for which to list URL channels. (required)
+ pageToken: string, A continuation token, used to page through URL channels. To retrieve the next page, set this parameter to the value of "nextPageToken" from the previous response.
+ maxResults: integer, The maximum number of URL channels to include in the response, used for paging.
+
+Returns:
+ An object of the form:
+
+ {
+ "nextPageToken": "A String", # Continuation token used to page through URL channels. To retrieve the next page of results, set the next request's "pageToken" value to this.
+ "items": [ # The URL channels returned in this list response.
+ {
+ "kind": "adsense#urlChannel", # Kind of resource this is, in this case adsense#urlChannel.
+ "id": "A String", # Unique identifier of this URL channel. This should be considered an opaque identifier; it is not safe to rely on it being in any particular format.
+ "urlPattern": "A String", # URL Pattern of this URL channel. Does not include "http://" or "https://". Example: www.example.com/home
+ },
+ ],
+ "kind": "adsense#urlChannels", # Kind of list this is, in this case adsense#urlChannels.
+ "etag": "A String", # ETag of this response for caching purposes.
+ }</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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/analytics_v3.data.ga.html b/docs/dyn/analytics_v3.data.ga.html
index 3c74b87..0df711c 100644
--- a/docs/dyn/analytics_v3.data.ga.html
+++ b/docs/dyn/analytics_v3.data.ga.html
@@ -76,14 +76,14 @@
<h2>Instance Methods</h2>
<p class="toc_element">
<code><a href="#get">get(ids, start_date, end_date, metrics, sort=None, dimensions=None, filters=None, max_results=None, segment=None, start_index=None)</a></code></p>
-<p class="firstline">Returns Analytics data for a profile.</p>
+<p class="firstline">Returns Analytics data for a view (profile).</p>
<h3>Method Details</h3>
<div class="method">
<code class="details" id="get">get(ids, start_date, end_date, metrics, sort=None, dimensions=None, filters=None, max_results=None, segment=None, start_index=None)</code>
- <pre>Returns Analytics data for a profile.
+ <pre>Returns Analytics data for a view (profile).
Args:
- ids: string, Unique table ID for retrieving Analytics data. Table ID is of the form ga:XXXX, where XXXX is the Analytics profile ID. (required)
+ ids: string, Unique table ID for retrieving Analytics data. Table ID is of the form ga:XXXX, where XXXX is the Analytics view (profile) ID. (required)
start_date: string, Start date for fetching Analytics data. All requests should specify a start date formatted as YYYY-MM-DD. (required)
end_date: string, End date for fetching Analytics data. All requests should specify an end date formatted as YYYY-MM-DD. (required)
metrics: string, A comma-separated list of Analytics metrics. E.g., 'ga:visits,ga:pageviews'. At least one metric must be specified. (required)
@@ -97,7 +97,7 @@
Returns:
An object of the form:
- { # Analytics data for a given profile.
+ { # Analytics data for a given view (profile).
"kind": "analytics#gaData", # Resource type.
"rows": [ # Analytics data rows, where each row contains a list of dimension values followed by the metric values. The order of dimensions and metrics is same as specified in the request.
[
@@ -129,13 +129,13 @@
"end-date": "A String", # End date.
},
"previousLink": "A String", # Link to previous page for this Analytics data query.
- "profileInfo": { # Information for the profile, for which the Analytics data was requested.
- "webPropertyId": "A String", # Web Property ID to which this profile belongs.
- "internalWebPropertyId": "A String", # Internal ID for the web property to which this profile belongs.
- "tableId": "A String", # Table ID for profile.
- "profileId": "A String", # Profile ID.
- "profileName": "A String", # Profile name.
- "accountId": "A String", # Account ID to which this profile belongs.
+ "profileInfo": { # Information for the view (profile), for which the Analytics data was requested.
+ "webPropertyId": "A String", # Web Property ID to which this view (profile) belongs.
+ "internalWebPropertyId": "A String", # Internal ID for the web property to which this view (profile) belongs.
+ "tableId": "A String", # Table ID for view (profile).
+ "profileId": "A String", # View (Profile) ID.
+ "profileName": "A String", # View (Profile) name.
+ "accountId": "A String", # Account ID to which this view (profile) belongs.
},
"columnHeaders": [ # Column headers that list dimension names followed by the metric names. The order of dimensions and metrics is same as specified in the request.
{
diff --git a/docs/dyn/analytics_v3.data.html b/docs/dyn/analytics_v3.data.html
index 909faec..7d24ed6 100644
--- a/docs/dyn/analytics_v3.data.html
+++ b/docs/dyn/analytics_v3.data.html
@@ -84,4 +84,9 @@
</p>
<p class="firstline">Returns the mcf Resource.</p>
+<p class="toc_element">
+ <code><a href="analytics_v3.data.realtime.html">realtime()</a></code>
+</p>
+<p class="firstline">Returns the realtime Resource.</p>
+
</body></html>
\ No newline at end of file
diff --git a/docs/dyn/analytics_v3.data.mcf.html b/docs/dyn/analytics_v3.data.mcf.html
index d6611eb..176df06 100644
--- a/docs/dyn/analytics_v3.data.mcf.html
+++ b/docs/dyn/analytics_v3.data.mcf.html
@@ -76,14 +76,14 @@
<h2>Instance Methods</h2>
<p class="toc_element">
<code><a href="#get">get(ids, start_date, end_date, metrics, sort=None, dimensions=None, filters=None, max_results=None, start_index=None)</a></code></p>
-<p class="firstline">Returns Analytics Multi-Channel Funnels data for a profile.</p>
+<p class="firstline">Returns Analytics Multi-Channel Funnels data for a view (profile).</p>
<h3>Method Details</h3>
<div class="method">
<code class="details" id="get">get(ids, start_date, end_date, metrics, sort=None, dimensions=None, filters=None, max_results=None, start_index=None)</code>
- <pre>Returns Analytics Multi-Channel Funnels data for a profile.
+ <pre>Returns Analytics Multi-Channel Funnels data for a view (profile).
Args:
- ids: string, Unique table ID for retrieving Analytics data. Table ID is of the form ga:XXXX, where XXXX is the Analytics profile ID. (required)
+ ids: string, Unique table ID for retrieving Analytics data. Table ID is of the form ga:XXXX, where XXXX is the Analytics view (profile) ID. (required)
start_date: string, Start date for fetching Analytics data. All requests should specify a start date formatted as YYYY-MM-DD. (required)
end_date: string, End date for fetching Analytics data. All requests should specify an end date formatted as YYYY-MM-DD. (required)
metrics: string, A comma-separated list of Multi-Channel Funnels metrics. E.g., 'mcf:totalConversions,mcf:totalConversionValue'. At least one metric must be specified. (required)
@@ -96,7 +96,7 @@
Returns:
An object of the form:
- { # Multi-Channel Funnels data for a given profile.
+ { # Multi-Channel Funnels data for a given view (profile).
"kind": "analytics#mcfData", # Resource type.
"rows": [ # Analytics data rows, where each row contains a list of dimension values followed by the metric values. The order of dimensions and metrics is same as specified in the request.
[
@@ -136,13 +136,13 @@
"end-date": "A String", # End date.
},
"previousLink": "A String", # Link to previous page for this Analytics data query.
- "profileInfo": { # Information for the profile, for which the Analytics data was requested.
- "webPropertyId": "A String", # Web Property ID to which this profile belongs.
- "internalWebPropertyId": "A String", # Internal ID for the web property to which this profile belongs.
- "tableId": "A String", # Table ID for profile.
- "profileId": "A String", # Profile ID.
- "profileName": "A String", # Profile name.
- "accountId": "A String", # Account ID to which this profile belongs.
+ "profileInfo": { # Information for the view (profile), for which the Analytics data was requested.
+ "webPropertyId": "A String", # Web Property ID to which this view (profile) belongs.
+ "internalWebPropertyId": "A String", # Internal ID for the web property to which this view (profile) belongs.
+ "tableId": "A String", # Table ID for view (profile).
+ "profileId": "A String", # View (Profile) ID.
+ "profileName": "A String", # View (Profile) name.
+ "accountId": "A String", # Account ID to which this view (profile) belongs.
},
"columnHeaders": [ # Column headers that list dimension names followed by the metric names. The order of dimensions and metrics is same as specified in the request.
{
diff --git a/docs/dyn/analytics_v3.data.realtime.html b/docs/dyn/analytics_v3.data.realtime.html
new file mode 100644
index 0000000..edaf5e2
--- /dev/null
+++ b/docs/dyn/analytics_v3.data.realtime.html
@@ -0,0 +1,139 @@
+<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="analytics_v3.html">Google Analytics API</a> . <a href="analytics_v3.data.html">data</a> . <a href="analytics_v3.data.realtime.html">realtime</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#get">get(ids, metrics, sort=None, dimensions=None, filters=None, max_results=None)</a></code></p>
+<p class="firstline">Returns real-time data for a view (profile).</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="get">get(ids, metrics, sort=None, dimensions=None, filters=None, max_results=None)</code>
+ <pre>Returns real-time data for a view (profile).
+
+Args:
+ ids: string, Unique table ID for retrieving Analytics data. Table ID is of the form ga:XXXX, where XXXX is the Analytics view (profile) ID. (required)
+ metrics: string, A comma-separated list of Analytics metrics. E.g., 'ga:visits,ga:pageviews'. At least one metric must be specified. (required)
+ sort: string, A comma-separated list of dimensions or metrics that determine the sort order for real-time data.
+ dimensions: string, A comma-separated list of real-time dimensions. E.g., 'ga:medium,ga:city'.
+ filters: string, A comma-separated list of dimension or metric filters to be applied to real-time data.
+ max_results: integer, The maximum number of entries to include in this feed.
+
+Returns:
+ An object of the form:
+
+ { # Real time data for a given view (profile).
+ "kind": "analytics#realtimeData", # Resource type.
+ "rows": [ # Real time data rows, where each row contains a list of dimension values followed by the metric values. The order of dimensions and metrics is same as specified in the request.
+ [
+ "A String",
+ ],
+ ],
+ "totalResults": 42, # The total number of rows for the query, regardless of the number of rows in the response.
+ "totalsForAllResults": { # Total values for the requested metrics over all the results, not just the results returned in this response. The order of the metric totals is same as the metric order specified in the request.
+ "a_key": "A String", # Key-value pair for the total value of a metric. Key is the metric name and the value is the total value for that metric.
+ },
+ "id": "A String", # Unique ID for this data response.
+ "query": { # Real time data request query parameters.
+ "max-results": 42, # Maximum results per page.
+ "sort": [ # List of dimensions or metrics based on which real time data is sorted.
+ "A String",
+ ],
+ "dimensions": "A String", # List of real time dimensions.
+ "ids": "A String", # Unique table ID.
+ "metrics": [ # List of real time metrics.
+ "A String",
+ ],
+ "filters": "A String", # Comma-separated list of dimension or metric filters.
+ },
+ "profileInfo": { # Information for the view (profile), for which the real time data was requested.
+ "webPropertyId": "A String", # Web Property ID to which this view (profile) belongs.
+ "internalWebPropertyId": "A String", # Internal ID for the web property to which this view (profile) belongs.
+ "tableId": "A String", # Table ID for view (profile).
+ "profileId": "A String", # View (Profile) ID.
+ "profileName": "A String", # View (Profile) name.
+ "accountId": "A String", # Account ID to which this view (profile) belongs.
+ },
+ "columnHeaders": [ # Column headers that list dimension names followed by the metric names. The order of dimensions and metrics is same as specified in the request.
+ {
+ "dataType": "A String", # Data type. Dimension column headers have only STRING as the data type. Metric column headers have data types for metric values such as INTEGER, DOUBLE, CURRENCY etc.
+ "columnType": "A String", # Column Type. Either DIMENSION or METRIC.
+ "name": "A String", # Column name.
+ },
+ ],
+ "selfLink": "A String", # Link to this page.
+ }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/analytics_v3.management.customDataSources.html b/docs/dyn/analytics_v3.management.customDataSources.html
index c5084d2..51b15c0 100644
--- a/docs/dyn/analytics_v3.management.customDataSources.html
+++ b/docs/dyn/analytics_v3.management.customDataSources.html
@@ -99,20 +99,21 @@
"kind": "analytics#customDataSource", # Resource type for Analytics custom data source.
"description": "A String", # Description of custom data source.
"created": "A String", # Time this custom data source was created.
- "profilesLinked": [
+ "profilesLinked": [ # IDs of views (profiles) linked to the custom data source.
"A String",
],
"updated": "A String", # Time this custom data source was last modified.
"name": "A String", # Name of this custom data source.
- "childLink": { # Child link for this custom data source. Points to the list of daily uploads for this custom data source.
- "href": "A String", # Link to the list of daily uploads for this custom data source.
- "type": "analytics#dailyUploads", # Value is "analytics#dailyUploads".
+ "childLink": {
+ "href": "A String", # Link to the list of daily uploads for this custom data source. Link to the list of uploads for this custom data source.
+ "type": "A String", # Value is "analytics#dailyUploads". Value is "analytics#uploads".
},
"webPropertyId": "A String", # Web property ID of the form UA-XXXXX-YY to which this custom data source belongs.
"parentLink": { # Parent link for this custom data source. Points to the web property to which this custom data source belongs.
"href": "A String", # Link to the web property to which this custom data source belongs.
"type": "analytics#webproperty", # Value is "analytics#webproperty".
},
+ "type": "A String", # Type of the custom data source.
"id": "A String", # Custom data source ID.
"selfLink": "A String", # Link for this Analytics custom data source.
"accountId": "A String", # Account ID to which this custom data source belongs.
diff --git a/docs/dyn/analytics_v3.management.dailyUploads.html b/docs/dyn/analytics_v3.management.dailyUploads.html
index cf3bb11..80428b9 100644
--- a/docs/dyn/analytics_v3.management.dailyUploads.html
+++ b/docs/dyn/analytics_v3.management.dailyUploads.html
@@ -122,8 +122,8 @@
{ # Metadata for daily upload entity.
"recentChanges": [ # Change log for last 10 changes in chronological order.
{
- "change": "A String",
- "time": "A String",
+ "change": "A String", # The type of change: APPEND, RESET, or DELETE.
+ "time": "A String", # The time when the change occurred.
},
],
"kind": "analytics#dailyUpload", # Resource type for Analytics daily upload.
diff --git a/docs/dyn/analytics_v3.management.experiments.html b/docs/dyn/analytics_v3.management.experiments.html
new file mode 100644
index 0000000..0c01462
--- /dev/null
+++ b/docs/dyn/analytics_v3.management.experiments.html
@@ -0,0 +1,550 @@
+<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="analytics_v3.html">Google Analytics API</a> . <a href="analytics_v3.management.html">management</a> . <a href="analytics_v3.management.experiments.html">experiments</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#delete">delete(accountId, webPropertyId, profileId, experimentId)</a></code></p>
+<p class="firstline">Delete an experiment.</p>
+<p class="toc_element">
+ <code><a href="#get">get(accountId, webPropertyId, profileId, experimentId)</a></code></p>
+<p class="firstline">Returns an experiment to which the user has access.</p>
+<p class="toc_element">
+ <code><a href="#insert">insert(accountId, webPropertyId, profileId, body)</a></code></p>
+<p class="firstline">Create a new experiment.</p>
+<p class="toc_element">
+ <code><a href="#list">list(accountId, webPropertyId, profileId, max_results=None, start_index=None)</a></code></p>
+<p class="firstline">Lists experiments to which the user has access.</p>
+<p class="toc_element">
+ <code><a href="#patch">patch(accountId, webPropertyId, profileId, experimentId, body)</a></code></p>
+<p class="firstline">Update an existing experiment. This method supports patch semantics.</p>
+<p class="toc_element">
+ <code><a href="#update">update(accountId, webPropertyId, profileId, experimentId, body)</a></code></p>
+<p class="firstline">Update an existing experiment.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="delete">delete(accountId, webPropertyId, profileId, experimentId)</code>
+ <pre>Delete an experiment.
+
+Args:
+ accountId: string, Account ID to which the experiment belongs (required)
+ webPropertyId: string, Web property ID to which the experiment belongs (required)
+ profileId: string, View (Profile) ID to which the experiment belongs (required)
+ experimentId: string, ID of the experiment to delete (required)
+</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="get">get(accountId, webPropertyId, profileId, experimentId)</code>
+ <pre>Returns an experiment to which the user has access.
+
+Args:
+ accountId: string, Account ID to retrieve the experiment for. (required)
+ webPropertyId: string, Web property ID to retrieve the experiment for. (required)
+ profileId: string, View (Profile) ID to retrieve the experiment for. (required)
+ experimentId: string, Experiment ID to retrieve the experiment for. (required)
+
+Returns:
+ An object of the form:
+
+ { # JSON template for Analytics experiment resource.
+ "trafficCoverage": 3.14, # A floating-point number between 0 and 1. Specifies the fraction of the traffic that participates in the experiment. Can be changed for a running experiment. This field may not be changed for an experiments whose status is ENDED.
+ "webPropertyId": "A String", # Web property ID to which this experiment belongs. The web property ID is of the form UA-XXXXX-YY. This field is read-only.
+ "optimizationType": "A String", # Whether the objectiveMetric should be minimized or maximized. Possible values: "MAXIMUM", "MINIMUM". Optional--defaults to "MAXIMUM". Cannot be specified without objectiveMetric. Cannot be modified when status is "RUNNING" or "ENDED".
+ "objectiveMetric": "A String", # The metric that the experiment is optimizing. Valid values: "ga:goal(n)Completions", "ga:bounces", "ga:pageviews", "ga:timeOnSite", "ga:transactions", "ga:transactionRevenue". This field is required if status is "RUNNING" and servingFramework is one of "REDIRECT" or "API".
+ "id": "A String", # Experiment ID. Required for patch and update. Disallowed for create.
+ "accountId": "A String", # Account ID to which this experiment belongs. This field is read-only.
+ "snippet": "A String", # The snippet of code to include on the control page(s). This field is read-only.
+ "editableInGaUi": "", # If true, the end user will be able to edit the experiment via the Google Analytics user interface.
+ "rewriteVariationUrlsAsOriginal": True or False, # Boolean specifying whether variations URLS are rewritten to match those of the original. This field may not be changed for an experiments whose status is ENDED.
+ "servingFramework": "", # The framework used to serve the experiment variations and evaluate the results. One of:
+ # - REDIRECT: Google Analytics redirects traffic to different variation pages, reports the chosen variation and evaluates the results.
+ # - API: Google Analytics chooses and reports the variation to serve and evaluates the results; the caller is responsible for serving the selected variation.
+ # - EXTERNAL: The variations will be served externally and the chosen variation reported to Google Analytics. The caller is responsible for serving the selected variation and evaluating the results.
+ "status": "A String", # Experiment status. Possible values: "DRAFT", "READY_TO_RUN", "RUNNING", "ENDED". Experiments can be created in the "DRAFT", "READY_TO_RUN" or "RUNNING" state. This field is required when creating an experiment.
+ "updated": "A String", # Time the experiment was last modified. This field is read-only.
+ "description": "A String", # Notes about this experiment.
+ "reasonExperimentEnded": "A String", # Why the experiment ended. Possible values: "STOPPED_BY_USER", "WINNER_FOUND", "EXPERIMENT_EXPIRED", "ENDED_WITH_NO_WINNER", "GOAL_OBJECTIVE_CHANGED". "ENDED_WITH_NO_WINNER" means that the experiment didn't expire but no winner was projected to be found. If the experiment status is changed via the API to ENDED this field is set to STOPPED_BY_USER. This field is read-only.
+ "internalWebPropertyId": "A String", # Internal ID for the web property to which this experiment belongs. This field is read-only.
+ "winnerConfidenceLevel": 3.14, # A floating-point number between 0 and 1. Specifies the necessary confidence level to choose a winner. This field may not be changed for an experiments whose status is ENDED.
+ "startTime": "A String", # The starting time of the experiment (the time the status changed from READY_TO_RUN to RUNNING). This field is present only if the experiment has started. This field is read-only.
+ "winnerFound": True or False, # Boolean specifying whether a winner has been found for this experiment. This field is read-only.
+ "kind": "analytics#experiment", # Resource type for an Analytics experiment. This field is read-only.
+ "name": "A String", # Experiment name. This field may not be changed for an experiment whose status is ENDED. This field is required when creating an experiment.
+ "created": "A String", # Time the experiment was created. This field is read-only.
+ "variations": [ # Array of variations. The first variation in the array is the original. The number of variations may not change once an experiment is in the RUNNING state. At least two variations are required before status can be set to RUNNING.
+ {
+ "status": "A String", # Status of the variation. Possible values: "ACTIVE", "INACTIVE". INACTIVE variations are not served. This field may not be changed for an experiment whose status is ENDED.
+ "url": "A String", # The URL of the variation. This field may not be changed for an experiment whose status is RUNNING or ENDED.
+ "won": True or False, # True if the experiment has ended and this variation performed (statistically) significantly better than the original. This field is read-only.
+ "name": "A String", # The name of the variation. This field is required when creating an experiment. This field may not be changed for an experiment whose status is ENDED.
+ "weight": 3.14, # Weight that this variation should receive. Only present if the experiment is running. This field is read-only.
+ },
+ ],
+ "minimumExperimentLengthInDays": 42, # Specifies the minimum length of the experiment. Can be changed for a running experiment. This field may not be changed for an experiments whose status is ENDED.
+ "profileId": "A String", # View (Profile) ID to which this experiment belongs. This field is read-only.
+ "parentLink": { # Parent link for an experiment. Points to the view (profile) to which this experiment belongs.
+ "href": "A String", # Link to the view (profile) to which this experiment belongs. This field is read-only.
+ "type": "analytics#profile", # Value is "analytics#profile". This field is read-only.
+ },
+ "endTime": "A String", # The ending time of the experiment (the time the status changed from RUNNING to ENDED). This field is present only if the experiment has ended. This field is read-only.
+ "selfLink": "A String", # Link for this experiment. This field is read-only.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="insert">insert(accountId, webPropertyId, profileId, body)</code>
+ <pre>Create a new experiment.
+
+Args:
+ accountId: string, Account ID to create the experiment for. (required)
+ webPropertyId: string, Web property ID to create the experiment for. (required)
+ profileId: string, View (Profile) ID to create the experiment for. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # JSON template for Analytics experiment resource.
+ "trafficCoverage": 3.14, # A floating-point number between 0 and 1. Specifies the fraction of the traffic that participates in the experiment. Can be changed for a running experiment. This field may not be changed for an experiments whose status is ENDED.
+ "webPropertyId": "A String", # Web property ID to which this experiment belongs. The web property ID is of the form UA-XXXXX-YY. This field is read-only.
+ "optimizationType": "A String", # Whether the objectiveMetric should be minimized or maximized. Possible values: "MAXIMUM", "MINIMUM". Optional--defaults to "MAXIMUM". Cannot be specified without objectiveMetric. Cannot be modified when status is "RUNNING" or "ENDED".
+ "objectiveMetric": "A String", # The metric that the experiment is optimizing. Valid values: "ga:goal(n)Completions", "ga:bounces", "ga:pageviews", "ga:timeOnSite", "ga:transactions", "ga:transactionRevenue". This field is required if status is "RUNNING" and servingFramework is one of "REDIRECT" or "API".
+ "id": "A String", # Experiment ID. Required for patch and update. Disallowed for create.
+ "accountId": "A String", # Account ID to which this experiment belongs. This field is read-only.
+ "snippet": "A String", # The snippet of code to include on the control page(s). This field is read-only.
+ "editableInGaUi": "", # If true, the end user will be able to edit the experiment via the Google Analytics user interface.
+ "rewriteVariationUrlsAsOriginal": True or False, # Boolean specifying whether variations URLS are rewritten to match those of the original. This field may not be changed for an experiments whose status is ENDED.
+ "servingFramework": "", # The framework used to serve the experiment variations and evaluate the results. One of:
+ # - REDIRECT: Google Analytics redirects traffic to different variation pages, reports the chosen variation and evaluates the results.
+ # - API: Google Analytics chooses and reports the variation to serve and evaluates the results; the caller is responsible for serving the selected variation.
+ # - EXTERNAL: The variations will be served externally and the chosen variation reported to Google Analytics. The caller is responsible for serving the selected variation and evaluating the results.
+ "status": "A String", # Experiment status. Possible values: "DRAFT", "READY_TO_RUN", "RUNNING", "ENDED". Experiments can be created in the "DRAFT", "READY_TO_RUN" or "RUNNING" state. This field is required when creating an experiment.
+ "updated": "A String", # Time the experiment was last modified. This field is read-only.
+ "description": "A String", # Notes about this experiment.
+ "reasonExperimentEnded": "A String", # Why the experiment ended. Possible values: "STOPPED_BY_USER", "WINNER_FOUND", "EXPERIMENT_EXPIRED", "ENDED_WITH_NO_WINNER", "GOAL_OBJECTIVE_CHANGED". "ENDED_WITH_NO_WINNER" means that the experiment didn't expire but no winner was projected to be found. If the experiment status is changed via the API to ENDED this field is set to STOPPED_BY_USER. This field is read-only.
+ "internalWebPropertyId": "A String", # Internal ID for the web property to which this experiment belongs. This field is read-only.
+ "winnerConfidenceLevel": 3.14, # A floating-point number between 0 and 1. Specifies the necessary confidence level to choose a winner. This field may not be changed for an experiments whose status is ENDED.
+ "startTime": "A String", # The starting time of the experiment (the time the status changed from READY_TO_RUN to RUNNING). This field is present only if the experiment has started. This field is read-only.
+ "winnerFound": True or False, # Boolean specifying whether a winner has been found for this experiment. This field is read-only.
+ "kind": "analytics#experiment", # Resource type for an Analytics experiment. This field is read-only.
+ "name": "A String", # Experiment name. This field may not be changed for an experiment whose status is ENDED. This field is required when creating an experiment.
+ "created": "A String", # Time the experiment was created. This field is read-only.
+ "variations": [ # Array of variations. The first variation in the array is the original. The number of variations may not change once an experiment is in the RUNNING state. At least two variations are required before status can be set to RUNNING.
+ {
+ "status": "A String", # Status of the variation. Possible values: "ACTIVE", "INACTIVE". INACTIVE variations are not served. This field may not be changed for an experiment whose status is ENDED.
+ "url": "A String", # The URL of the variation. This field may not be changed for an experiment whose status is RUNNING or ENDED.
+ "won": True or False, # True if the experiment has ended and this variation performed (statistically) significantly better than the original. This field is read-only.
+ "name": "A String", # The name of the variation. This field is required when creating an experiment. This field may not be changed for an experiment whose status is ENDED.
+ "weight": 3.14, # Weight that this variation should receive. Only present if the experiment is running. This field is read-only.
+ },
+ ],
+ "minimumExperimentLengthInDays": 42, # Specifies the minimum length of the experiment. Can be changed for a running experiment. This field may not be changed for an experiments whose status is ENDED.
+ "profileId": "A String", # View (Profile) ID to which this experiment belongs. This field is read-only.
+ "parentLink": { # Parent link for an experiment. Points to the view (profile) to which this experiment belongs.
+ "href": "A String", # Link to the view (profile) to which this experiment belongs. This field is read-only.
+ "type": "analytics#profile", # Value is "analytics#profile". This field is read-only.
+ },
+ "endTime": "A String", # The ending time of the experiment (the time the status changed from RUNNING to ENDED). This field is present only if the experiment has ended. This field is read-only.
+ "selfLink": "A String", # Link for this experiment. This field is read-only.
+ }
+
+
+Returns:
+ An object of the form:
+
+ { # JSON template for Analytics experiment resource.
+ "trafficCoverage": 3.14, # A floating-point number between 0 and 1. Specifies the fraction of the traffic that participates in the experiment. Can be changed for a running experiment. This field may not be changed for an experiments whose status is ENDED.
+ "webPropertyId": "A String", # Web property ID to which this experiment belongs. The web property ID is of the form UA-XXXXX-YY. This field is read-only.
+ "optimizationType": "A String", # Whether the objectiveMetric should be minimized or maximized. Possible values: "MAXIMUM", "MINIMUM". Optional--defaults to "MAXIMUM". Cannot be specified without objectiveMetric. Cannot be modified when status is "RUNNING" or "ENDED".
+ "objectiveMetric": "A String", # The metric that the experiment is optimizing. Valid values: "ga:goal(n)Completions", "ga:bounces", "ga:pageviews", "ga:timeOnSite", "ga:transactions", "ga:transactionRevenue". This field is required if status is "RUNNING" and servingFramework is one of "REDIRECT" or "API".
+ "id": "A String", # Experiment ID. Required for patch and update. Disallowed for create.
+ "accountId": "A String", # Account ID to which this experiment belongs. This field is read-only.
+ "snippet": "A String", # The snippet of code to include on the control page(s). This field is read-only.
+ "editableInGaUi": "", # If true, the end user will be able to edit the experiment via the Google Analytics user interface.
+ "rewriteVariationUrlsAsOriginal": True or False, # Boolean specifying whether variations URLS are rewritten to match those of the original. This field may not be changed for an experiments whose status is ENDED.
+ "servingFramework": "", # The framework used to serve the experiment variations and evaluate the results. One of:
+ # - REDIRECT: Google Analytics redirects traffic to different variation pages, reports the chosen variation and evaluates the results.
+ # - API: Google Analytics chooses and reports the variation to serve and evaluates the results; the caller is responsible for serving the selected variation.
+ # - EXTERNAL: The variations will be served externally and the chosen variation reported to Google Analytics. The caller is responsible for serving the selected variation and evaluating the results.
+ "status": "A String", # Experiment status. Possible values: "DRAFT", "READY_TO_RUN", "RUNNING", "ENDED". Experiments can be created in the "DRAFT", "READY_TO_RUN" or "RUNNING" state. This field is required when creating an experiment.
+ "updated": "A String", # Time the experiment was last modified. This field is read-only.
+ "description": "A String", # Notes about this experiment.
+ "reasonExperimentEnded": "A String", # Why the experiment ended. Possible values: "STOPPED_BY_USER", "WINNER_FOUND", "EXPERIMENT_EXPIRED", "ENDED_WITH_NO_WINNER", "GOAL_OBJECTIVE_CHANGED". "ENDED_WITH_NO_WINNER" means that the experiment didn't expire but no winner was projected to be found. If the experiment status is changed via the API to ENDED this field is set to STOPPED_BY_USER. This field is read-only.
+ "internalWebPropertyId": "A String", # Internal ID for the web property to which this experiment belongs. This field is read-only.
+ "winnerConfidenceLevel": 3.14, # A floating-point number between 0 and 1. Specifies the necessary confidence level to choose a winner. This field may not be changed for an experiments whose status is ENDED.
+ "startTime": "A String", # The starting time of the experiment (the time the status changed from READY_TO_RUN to RUNNING). This field is present only if the experiment has started. This field is read-only.
+ "winnerFound": True or False, # Boolean specifying whether a winner has been found for this experiment. This field is read-only.
+ "kind": "analytics#experiment", # Resource type for an Analytics experiment. This field is read-only.
+ "name": "A String", # Experiment name. This field may not be changed for an experiment whose status is ENDED. This field is required when creating an experiment.
+ "created": "A String", # Time the experiment was created. This field is read-only.
+ "variations": [ # Array of variations. The first variation in the array is the original. The number of variations may not change once an experiment is in the RUNNING state. At least two variations are required before status can be set to RUNNING.
+ {
+ "status": "A String", # Status of the variation. Possible values: "ACTIVE", "INACTIVE". INACTIVE variations are not served. This field may not be changed for an experiment whose status is ENDED.
+ "url": "A String", # The URL of the variation. This field may not be changed for an experiment whose status is RUNNING or ENDED.
+ "won": True or False, # True if the experiment has ended and this variation performed (statistically) significantly better than the original. This field is read-only.
+ "name": "A String", # The name of the variation. This field is required when creating an experiment. This field may not be changed for an experiment whose status is ENDED.
+ "weight": 3.14, # Weight that this variation should receive. Only present if the experiment is running. This field is read-only.
+ },
+ ],
+ "minimumExperimentLengthInDays": 42, # Specifies the minimum length of the experiment. Can be changed for a running experiment. This field may not be changed for an experiments whose status is ENDED.
+ "profileId": "A String", # View (Profile) ID to which this experiment belongs. This field is read-only.
+ "parentLink": { # Parent link for an experiment. Points to the view (profile) to which this experiment belongs.
+ "href": "A String", # Link to the view (profile) to which this experiment belongs. This field is read-only.
+ "type": "analytics#profile", # Value is "analytics#profile". This field is read-only.
+ },
+ "endTime": "A String", # The ending time of the experiment (the time the status changed from RUNNING to ENDED). This field is present only if the experiment has ended. This field is read-only.
+ "selfLink": "A String", # Link for this experiment. This field is read-only.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="list">list(accountId, webPropertyId, profileId, max_results=None, start_index=None)</code>
+ <pre>Lists experiments to which the user has access.
+
+Args:
+ accountId: string, Account ID to retrieve experiments for. (required)
+ webPropertyId: string, Web property ID to retrieve experiments for. (required)
+ profileId: string, View (Profile) ID to retrieve experiments for. (required)
+ max_results: integer, The maximum number of experiments to include in this response.
+ start_index: integer, An index of the first experiment to retrieve. Use this parameter as a pagination mechanism along with the max-results parameter.
+
+Returns:
+ An object of the form:
+
+ { # An experiment collection lists Analytics experiments to which the user has access. Each view (profile) can have a set of experiments. Each resource in the Experiment collection corresponds to a single Analytics experiment.
+ "username": "A String", # Email ID of the authenticated user
+ "kind": "analytics#experiments", # Collection type.
+ "items": [ # A list of experiments.
+ { # JSON template for Analytics experiment resource.
+ "trafficCoverage": 3.14, # A floating-point number between 0 and 1. Specifies the fraction of the traffic that participates in the experiment. Can be changed for a running experiment. This field may not be changed for an experiments whose status is ENDED.
+ "webPropertyId": "A String", # Web property ID to which this experiment belongs. The web property ID is of the form UA-XXXXX-YY. This field is read-only.
+ "optimizationType": "A String", # Whether the objectiveMetric should be minimized or maximized. Possible values: "MAXIMUM", "MINIMUM". Optional--defaults to "MAXIMUM". Cannot be specified without objectiveMetric. Cannot be modified when status is "RUNNING" or "ENDED".
+ "objectiveMetric": "A String", # The metric that the experiment is optimizing. Valid values: "ga:goal(n)Completions", "ga:bounces", "ga:pageviews", "ga:timeOnSite", "ga:transactions", "ga:transactionRevenue". This field is required if status is "RUNNING" and servingFramework is one of "REDIRECT" or "API".
+ "id": "A String", # Experiment ID. Required for patch and update. Disallowed for create.
+ "accountId": "A String", # Account ID to which this experiment belongs. This field is read-only.
+ "snippet": "A String", # The snippet of code to include on the control page(s). This field is read-only.
+ "editableInGaUi": "", # If true, the end user will be able to edit the experiment via the Google Analytics user interface.
+ "rewriteVariationUrlsAsOriginal": True or False, # Boolean specifying whether variations URLS are rewritten to match those of the original. This field may not be changed for an experiments whose status is ENDED.
+ "servingFramework": "", # The framework used to serve the experiment variations and evaluate the results. One of:
+ # - REDIRECT: Google Analytics redirects traffic to different variation pages, reports the chosen variation and evaluates the results.
+ # - API: Google Analytics chooses and reports the variation to serve and evaluates the results; the caller is responsible for serving the selected variation.
+ # - EXTERNAL: The variations will be served externally and the chosen variation reported to Google Analytics. The caller is responsible for serving the selected variation and evaluating the results.
+ "status": "A String", # Experiment status. Possible values: "DRAFT", "READY_TO_RUN", "RUNNING", "ENDED". Experiments can be created in the "DRAFT", "READY_TO_RUN" or "RUNNING" state. This field is required when creating an experiment.
+ "updated": "A String", # Time the experiment was last modified. This field is read-only.
+ "description": "A String", # Notes about this experiment.
+ "reasonExperimentEnded": "A String", # Why the experiment ended. Possible values: "STOPPED_BY_USER", "WINNER_FOUND", "EXPERIMENT_EXPIRED", "ENDED_WITH_NO_WINNER", "GOAL_OBJECTIVE_CHANGED". "ENDED_WITH_NO_WINNER" means that the experiment didn't expire but no winner was projected to be found. If the experiment status is changed via the API to ENDED this field is set to STOPPED_BY_USER. This field is read-only.
+ "internalWebPropertyId": "A String", # Internal ID for the web property to which this experiment belongs. This field is read-only.
+ "winnerConfidenceLevel": 3.14, # A floating-point number between 0 and 1. Specifies the necessary confidence level to choose a winner. This field may not be changed for an experiments whose status is ENDED.
+ "startTime": "A String", # The starting time of the experiment (the time the status changed from READY_TO_RUN to RUNNING). This field is present only if the experiment has started. This field is read-only.
+ "winnerFound": True or False, # Boolean specifying whether a winner has been found for this experiment. This field is read-only.
+ "kind": "analytics#experiment", # Resource type for an Analytics experiment. This field is read-only.
+ "name": "A String", # Experiment name. This field may not be changed for an experiment whose status is ENDED. This field is required when creating an experiment.
+ "created": "A String", # Time the experiment was created. This field is read-only.
+ "variations": [ # Array of variations. The first variation in the array is the original. The number of variations may not change once an experiment is in the RUNNING state. At least two variations are required before status can be set to RUNNING.
+ {
+ "status": "A String", # Status of the variation. Possible values: "ACTIVE", "INACTIVE". INACTIVE variations are not served. This field may not be changed for an experiment whose status is ENDED.
+ "url": "A String", # The URL of the variation. This field may not be changed for an experiment whose status is RUNNING or ENDED.
+ "won": True or False, # True if the experiment has ended and this variation performed (statistically) significantly better than the original. This field is read-only.
+ "name": "A String", # The name of the variation. This field is required when creating an experiment. This field may not be changed for an experiment whose status is ENDED.
+ "weight": 3.14, # Weight that this variation should receive. Only present if the experiment is running. This field is read-only.
+ },
+ ],
+ "minimumExperimentLengthInDays": 42, # Specifies the minimum length of the experiment. Can be changed for a running experiment. This field may not be changed for an experiments whose status is ENDED.
+ "profileId": "A String", # View (Profile) ID to which this experiment belongs. This field is read-only.
+ "parentLink": { # Parent link for an experiment. Points to the view (profile) to which this experiment belongs.
+ "href": "A String", # Link to the view (profile) to which this experiment belongs. This field is read-only.
+ "type": "analytics#profile", # Value is "analytics#profile". This field is read-only.
+ },
+ "endTime": "A String", # The ending time of the experiment (the time the status changed from RUNNING to ENDED). This field is present only if the experiment has ended. This field is read-only.
+ "selfLink": "A String", # Link for this experiment. This field is read-only.
+ },
+ ],
+ "itemsPerPage": 42, # The maximum number of resources the response can contain, regardless of the actual number of resources returned. Its value ranges from 1 to 1000 with a value of 1000 by default, or otherwise specified by the max-results query parameter.
+ "previousLink": "A String", # Link to previous page for this experiment collection.
+ "startIndex": 42, # The starting index of the resources, which is 1 by default or otherwise specified by the start-index query parameter.
+ "nextLink": "A String", # Link to next page for this experiment collection.
+ "totalResults": 42, # The total number of results for the query, regardless of the number of resources in the result.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="patch">patch(accountId, webPropertyId, profileId, experimentId, body)</code>
+ <pre>Update an existing experiment. This method supports patch semantics.
+
+Args:
+ accountId: string, Account ID of the experiment to update. (required)
+ webPropertyId: string, Web property ID of the experiment to update. (required)
+ profileId: string, View (Profile) ID of the experiment to update. (required)
+ experimentId: string, Experiment ID of the experiment to update. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # JSON template for Analytics experiment resource.
+ "trafficCoverage": 3.14, # A floating-point number between 0 and 1. Specifies the fraction of the traffic that participates in the experiment. Can be changed for a running experiment. This field may not be changed for an experiments whose status is ENDED.
+ "webPropertyId": "A String", # Web property ID to which this experiment belongs. The web property ID is of the form UA-XXXXX-YY. This field is read-only.
+ "optimizationType": "A String", # Whether the objectiveMetric should be minimized or maximized. Possible values: "MAXIMUM", "MINIMUM". Optional--defaults to "MAXIMUM". Cannot be specified without objectiveMetric. Cannot be modified when status is "RUNNING" or "ENDED".
+ "objectiveMetric": "A String", # The metric that the experiment is optimizing. Valid values: "ga:goal(n)Completions", "ga:bounces", "ga:pageviews", "ga:timeOnSite", "ga:transactions", "ga:transactionRevenue". This field is required if status is "RUNNING" and servingFramework is one of "REDIRECT" or "API".
+ "id": "A String", # Experiment ID. Required for patch and update. Disallowed for create.
+ "accountId": "A String", # Account ID to which this experiment belongs. This field is read-only.
+ "snippet": "A String", # The snippet of code to include on the control page(s). This field is read-only.
+ "editableInGaUi": "", # If true, the end user will be able to edit the experiment via the Google Analytics user interface.
+ "rewriteVariationUrlsAsOriginal": True or False, # Boolean specifying whether variations URLS are rewritten to match those of the original. This field may not be changed for an experiments whose status is ENDED.
+ "servingFramework": "", # The framework used to serve the experiment variations and evaluate the results. One of:
+ # - REDIRECT: Google Analytics redirects traffic to different variation pages, reports the chosen variation and evaluates the results.
+ # - API: Google Analytics chooses and reports the variation to serve and evaluates the results; the caller is responsible for serving the selected variation.
+ # - EXTERNAL: The variations will be served externally and the chosen variation reported to Google Analytics. The caller is responsible for serving the selected variation and evaluating the results.
+ "status": "A String", # Experiment status. Possible values: "DRAFT", "READY_TO_RUN", "RUNNING", "ENDED". Experiments can be created in the "DRAFT", "READY_TO_RUN" or "RUNNING" state. This field is required when creating an experiment.
+ "updated": "A String", # Time the experiment was last modified. This field is read-only.
+ "description": "A String", # Notes about this experiment.
+ "reasonExperimentEnded": "A String", # Why the experiment ended. Possible values: "STOPPED_BY_USER", "WINNER_FOUND", "EXPERIMENT_EXPIRED", "ENDED_WITH_NO_WINNER", "GOAL_OBJECTIVE_CHANGED". "ENDED_WITH_NO_WINNER" means that the experiment didn't expire but no winner was projected to be found. If the experiment status is changed via the API to ENDED this field is set to STOPPED_BY_USER. This field is read-only.
+ "internalWebPropertyId": "A String", # Internal ID for the web property to which this experiment belongs. This field is read-only.
+ "winnerConfidenceLevel": 3.14, # A floating-point number between 0 and 1. Specifies the necessary confidence level to choose a winner. This field may not be changed for an experiments whose status is ENDED.
+ "startTime": "A String", # The starting time of the experiment (the time the status changed from READY_TO_RUN to RUNNING). This field is present only if the experiment has started. This field is read-only.
+ "winnerFound": True or False, # Boolean specifying whether a winner has been found for this experiment. This field is read-only.
+ "kind": "analytics#experiment", # Resource type for an Analytics experiment. This field is read-only.
+ "name": "A String", # Experiment name. This field may not be changed for an experiment whose status is ENDED. This field is required when creating an experiment.
+ "created": "A String", # Time the experiment was created. This field is read-only.
+ "variations": [ # Array of variations. The first variation in the array is the original. The number of variations may not change once an experiment is in the RUNNING state. At least two variations are required before status can be set to RUNNING.
+ {
+ "status": "A String", # Status of the variation. Possible values: "ACTIVE", "INACTIVE". INACTIVE variations are not served. This field may not be changed for an experiment whose status is ENDED.
+ "url": "A String", # The URL of the variation. This field may not be changed for an experiment whose status is RUNNING or ENDED.
+ "won": True or False, # True if the experiment has ended and this variation performed (statistically) significantly better than the original. This field is read-only.
+ "name": "A String", # The name of the variation. This field is required when creating an experiment. This field may not be changed for an experiment whose status is ENDED.
+ "weight": 3.14, # Weight that this variation should receive. Only present if the experiment is running. This field is read-only.
+ },
+ ],
+ "minimumExperimentLengthInDays": 42, # Specifies the minimum length of the experiment. Can be changed for a running experiment. This field may not be changed for an experiments whose status is ENDED.
+ "profileId": "A String", # View (Profile) ID to which this experiment belongs. This field is read-only.
+ "parentLink": { # Parent link for an experiment. Points to the view (profile) to which this experiment belongs.
+ "href": "A String", # Link to the view (profile) to which this experiment belongs. This field is read-only.
+ "type": "analytics#profile", # Value is "analytics#profile". This field is read-only.
+ },
+ "endTime": "A String", # The ending time of the experiment (the time the status changed from RUNNING to ENDED). This field is present only if the experiment has ended. This field is read-only.
+ "selfLink": "A String", # Link for this experiment. This field is read-only.
+ }
+
+
+Returns:
+ An object of the form:
+
+ { # JSON template for Analytics experiment resource.
+ "trafficCoverage": 3.14, # A floating-point number between 0 and 1. Specifies the fraction of the traffic that participates in the experiment. Can be changed for a running experiment. This field may not be changed for an experiments whose status is ENDED.
+ "webPropertyId": "A String", # Web property ID to which this experiment belongs. The web property ID is of the form UA-XXXXX-YY. This field is read-only.
+ "optimizationType": "A String", # Whether the objectiveMetric should be minimized or maximized. Possible values: "MAXIMUM", "MINIMUM". Optional--defaults to "MAXIMUM". Cannot be specified without objectiveMetric. Cannot be modified when status is "RUNNING" or "ENDED".
+ "objectiveMetric": "A String", # The metric that the experiment is optimizing. Valid values: "ga:goal(n)Completions", "ga:bounces", "ga:pageviews", "ga:timeOnSite", "ga:transactions", "ga:transactionRevenue". This field is required if status is "RUNNING" and servingFramework is one of "REDIRECT" or "API".
+ "id": "A String", # Experiment ID. Required for patch and update. Disallowed for create.
+ "accountId": "A String", # Account ID to which this experiment belongs. This field is read-only.
+ "snippet": "A String", # The snippet of code to include on the control page(s). This field is read-only.
+ "editableInGaUi": "", # If true, the end user will be able to edit the experiment via the Google Analytics user interface.
+ "rewriteVariationUrlsAsOriginal": True or False, # Boolean specifying whether variations URLS are rewritten to match those of the original. This field may not be changed for an experiments whose status is ENDED.
+ "servingFramework": "", # The framework used to serve the experiment variations and evaluate the results. One of:
+ # - REDIRECT: Google Analytics redirects traffic to different variation pages, reports the chosen variation and evaluates the results.
+ # - API: Google Analytics chooses and reports the variation to serve and evaluates the results; the caller is responsible for serving the selected variation.
+ # - EXTERNAL: The variations will be served externally and the chosen variation reported to Google Analytics. The caller is responsible for serving the selected variation and evaluating the results.
+ "status": "A String", # Experiment status. Possible values: "DRAFT", "READY_TO_RUN", "RUNNING", "ENDED". Experiments can be created in the "DRAFT", "READY_TO_RUN" or "RUNNING" state. This field is required when creating an experiment.
+ "updated": "A String", # Time the experiment was last modified. This field is read-only.
+ "description": "A String", # Notes about this experiment.
+ "reasonExperimentEnded": "A String", # Why the experiment ended. Possible values: "STOPPED_BY_USER", "WINNER_FOUND", "EXPERIMENT_EXPIRED", "ENDED_WITH_NO_WINNER", "GOAL_OBJECTIVE_CHANGED". "ENDED_WITH_NO_WINNER" means that the experiment didn't expire but no winner was projected to be found. If the experiment status is changed via the API to ENDED this field is set to STOPPED_BY_USER. This field is read-only.
+ "internalWebPropertyId": "A String", # Internal ID for the web property to which this experiment belongs. This field is read-only.
+ "winnerConfidenceLevel": 3.14, # A floating-point number between 0 and 1. Specifies the necessary confidence level to choose a winner. This field may not be changed for an experiments whose status is ENDED.
+ "startTime": "A String", # The starting time of the experiment (the time the status changed from READY_TO_RUN to RUNNING). This field is present only if the experiment has started. This field is read-only.
+ "winnerFound": True or False, # Boolean specifying whether a winner has been found for this experiment. This field is read-only.
+ "kind": "analytics#experiment", # Resource type for an Analytics experiment. This field is read-only.
+ "name": "A String", # Experiment name. This field may not be changed for an experiment whose status is ENDED. This field is required when creating an experiment.
+ "created": "A String", # Time the experiment was created. This field is read-only.
+ "variations": [ # Array of variations. The first variation in the array is the original. The number of variations may not change once an experiment is in the RUNNING state. At least two variations are required before status can be set to RUNNING.
+ {
+ "status": "A String", # Status of the variation. Possible values: "ACTIVE", "INACTIVE". INACTIVE variations are not served. This field may not be changed for an experiment whose status is ENDED.
+ "url": "A String", # The URL of the variation. This field may not be changed for an experiment whose status is RUNNING or ENDED.
+ "won": True or False, # True if the experiment has ended and this variation performed (statistically) significantly better than the original. This field is read-only.
+ "name": "A String", # The name of the variation. This field is required when creating an experiment. This field may not be changed for an experiment whose status is ENDED.
+ "weight": 3.14, # Weight that this variation should receive. Only present if the experiment is running. This field is read-only.
+ },
+ ],
+ "minimumExperimentLengthInDays": 42, # Specifies the minimum length of the experiment. Can be changed for a running experiment. This field may not be changed for an experiments whose status is ENDED.
+ "profileId": "A String", # View (Profile) ID to which this experiment belongs. This field is read-only.
+ "parentLink": { # Parent link for an experiment. Points to the view (profile) to which this experiment belongs.
+ "href": "A String", # Link to the view (profile) to which this experiment belongs. This field is read-only.
+ "type": "analytics#profile", # Value is "analytics#profile". This field is read-only.
+ },
+ "endTime": "A String", # The ending time of the experiment (the time the status changed from RUNNING to ENDED). This field is present only if the experiment has ended. This field is read-only.
+ "selfLink": "A String", # Link for this experiment. This field is read-only.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="update">update(accountId, webPropertyId, profileId, experimentId, body)</code>
+ <pre>Update an existing experiment.
+
+Args:
+ accountId: string, Account ID of the experiment to update. (required)
+ webPropertyId: string, Web property ID of the experiment to update. (required)
+ profileId: string, View (Profile) ID of the experiment to update. (required)
+ experimentId: string, Experiment ID of the experiment to update. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # JSON template for Analytics experiment resource.
+ "trafficCoverage": 3.14, # A floating-point number between 0 and 1. Specifies the fraction of the traffic that participates in the experiment. Can be changed for a running experiment. This field may not be changed for an experiments whose status is ENDED.
+ "webPropertyId": "A String", # Web property ID to which this experiment belongs. The web property ID is of the form UA-XXXXX-YY. This field is read-only.
+ "optimizationType": "A String", # Whether the objectiveMetric should be minimized or maximized. Possible values: "MAXIMUM", "MINIMUM". Optional--defaults to "MAXIMUM". Cannot be specified without objectiveMetric. Cannot be modified when status is "RUNNING" or "ENDED".
+ "objectiveMetric": "A String", # The metric that the experiment is optimizing. Valid values: "ga:goal(n)Completions", "ga:bounces", "ga:pageviews", "ga:timeOnSite", "ga:transactions", "ga:transactionRevenue". This field is required if status is "RUNNING" and servingFramework is one of "REDIRECT" or "API".
+ "id": "A String", # Experiment ID. Required for patch and update. Disallowed for create.
+ "accountId": "A String", # Account ID to which this experiment belongs. This field is read-only.
+ "snippet": "A String", # The snippet of code to include on the control page(s). This field is read-only.
+ "editableInGaUi": "", # If true, the end user will be able to edit the experiment via the Google Analytics user interface.
+ "rewriteVariationUrlsAsOriginal": True or False, # Boolean specifying whether variations URLS are rewritten to match those of the original. This field may not be changed for an experiments whose status is ENDED.
+ "servingFramework": "", # The framework used to serve the experiment variations and evaluate the results. One of:
+ # - REDIRECT: Google Analytics redirects traffic to different variation pages, reports the chosen variation and evaluates the results.
+ # - API: Google Analytics chooses and reports the variation to serve and evaluates the results; the caller is responsible for serving the selected variation.
+ # - EXTERNAL: The variations will be served externally and the chosen variation reported to Google Analytics. The caller is responsible for serving the selected variation and evaluating the results.
+ "status": "A String", # Experiment status. Possible values: "DRAFT", "READY_TO_RUN", "RUNNING", "ENDED". Experiments can be created in the "DRAFT", "READY_TO_RUN" or "RUNNING" state. This field is required when creating an experiment.
+ "updated": "A String", # Time the experiment was last modified. This field is read-only.
+ "description": "A String", # Notes about this experiment.
+ "reasonExperimentEnded": "A String", # Why the experiment ended. Possible values: "STOPPED_BY_USER", "WINNER_FOUND", "EXPERIMENT_EXPIRED", "ENDED_WITH_NO_WINNER", "GOAL_OBJECTIVE_CHANGED". "ENDED_WITH_NO_WINNER" means that the experiment didn't expire but no winner was projected to be found. If the experiment status is changed via the API to ENDED this field is set to STOPPED_BY_USER. This field is read-only.
+ "internalWebPropertyId": "A String", # Internal ID for the web property to which this experiment belongs. This field is read-only.
+ "winnerConfidenceLevel": 3.14, # A floating-point number between 0 and 1. Specifies the necessary confidence level to choose a winner. This field may not be changed for an experiments whose status is ENDED.
+ "startTime": "A String", # The starting time of the experiment (the time the status changed from READY_TO_RUN to RUNNING). This field is present only if the experiment has started. This field is read-only.
+ "winnerFound": True or False, # Boolean specifying whether a winner has been found for this experiment. This field is read-only.
+ "kind": "analytics#experiment", # Resource type for an Analytics experiment. This field is read-only.
+ "name": "A String", # Experiment name. This field may not be changed for an experiment whose status is ENDED. This field is required when creating an experiment.
+ "created": "A String", # Time the experiment was created. This field is read-only.
+ "variations": [ # Array of variations. The first variation in the array is the original. The number of variations may not change once an experiment is in the RUNNING state. At least two variations are required before status can be set to RUNNING.
+ {
+ "status": "A String", # Status of the variation. Possible values: "ACTIVE", "INACTIVE". INACTIVE variations are not served. This field may not be changed for an experiment whose status is ENDED.
+ "url": "A String", # The URL of the variation. This field may not be changed for an experiment whose status is RUNNING or ENDED.
+ "won": True or False, # True if the experiment has ended and this variation performed (statistically) significantly better than the original. This field is read-only.
+ "name": "A String", # The name of the variation. This field is required when creating an experiment. This field may not be changed for an experiment whose status is ENDED.
+ "weight": 3.14, # Weight that this variation should receive. Only present if the experiment is running. This field is read-only.
+ },
+ ],
+ "minimumExperimentLengthInDays": 42, # Specifies the minimum length of the experiment. Can be changed for a running experiment. This field may not be changed for an experiments whose status is ENDED.
+ "profileId": "A String", # View (Profile) ID to which this experiment belongs. This field is read-only.
+ "parentLink": { # Parent link for an experiment. Points to the view (profile) to which this experiment belongs.
+ "href": "A String", # Link to the view (profile) to which this experiment belongs. This field is read-only.
+ "type": "analytics#profile", # Value is "analytics#profile". This field is read-only.
+ },
+ "endTime": "A String", # The ending time of the experiment (the time the status changed from RUNNING to ENDED). This field is present only if the experiment has ended. This field is read-only.
+ "selfLink": "A String", # Link for this experiment. This field is read-only.
+ }
+
+
+Returns:
+ An object of the form:
+
+ { # JSON template for Analytics experiment resource.
+ "trafficCoverage": 3.14, # A floating-point number between 0 and 1. Specifies the fraction of the traffic that participates in the experiment. Can be changed for a running experiment. This field may not be changed for an experiments whose status is ENDED.
+ "webPropertyId": "A String", # Web property ID to which this experiment belongs. The web property ID is of the form UA-XXXXX-YY. This field is read-only.
+ "optimizationType": "A String", # Whether the objectiveMetric should be minimized or maximized. Possible values: "MAXIMUM", "MINIMUM". Optional--defaults to "MAXIMUM". Cannot be specified without objectiveMetric. Cannot be modified when status is "RUNNING" or "ENDED".
+ "objectiveMetric": "A String", # The metric that the experiment is optimizing. Valid values: "ga:goal(n)Completions", "ga:bounces", "ga:pageviews", "ga:timeOnSite", "ga:transactions", "ga:transactionRevenue". This field is required if status is "RUNNING" and servingFramework is one of "REDIRECT" or "API".
+ "id": "A String", # Experiment ID. Required for patch and update. Disallowed for create.
+ "accountId": "A String", # Account ID to which this experiment belongs. This field is read-only.
+ "snippet": "A String", # The snippet of code to include on the control page(s). This field is read-only.
+ "editableInGaUi": "", # If true, the end user will be able to edit the experiment via the Google Analytics user interface.
+ "rewriteVariationUrlsAsOriginal": True or False, # Boolean specifying whether variations URLS are rewritten to match those of the original. This field may not be changed for an experiments whose status is ENDED.
+ "servingFramework": "", # The framework used to serve the experiment variations and evaluate the results. One of:
+ # - REDIRECT: Google Analytics redirects traffic to different variation pages, reports the chosen variation and evaluates the results.
+ # - API: Google Analytics chooses and reports the variation to serve and evaluates the results; the caller is responsible for serving the selected variation.
+ # - EXTERNAL: The variations will be served externally and the chosen variation reported to Google Analytics. The caller is responsible for serving the selected variation and evaluating the results.
+ "status": "A String", # Experiment status. Possible values: "DRAFT", "READY_TO_RUN", "RUNNING", "ENDED". Experiments can be created in the "DRAFT", "READY_TO_RUN" or "RUNNING" state. This field is required when creating an experiment.
+ "updated": "A String", # Time the experiment was last modified. This field is read-only.
+ "description": "A String", # Notes about this experiment.
+ "reasonExperimentEnded": "A String", # Why the experiment ended. Possible values: "STOPPED_BY_USER", "WINNER_FOUND", "EXPERIMENT_EXPIRED", "ENDED_WITH_NO_WINNER", "GOAL_OBJECTIVE_CHANGED". "ENDED_WITH_NO_WINNER" means that the experiment didn't expire but no winner was projected to be found. If the experiment status is changed via the API to ENDED this field is set to STOPPED_BY_USER. This field is read-only.
+ "internalWebPropertyId": "A String", # Internal ID for the web property to which this experiment belongs. This field is read-only.
+ "winnerConfidenceLevel": 3.14, # A floating-point number between 0 and 1. Specifies the necessary confidence level to choose a winner. This field may not be changed for an experiments whose status is ENDED.
+ "startTime": "A String", # The starting time of the experiment (the time the status changed from READY_TO_RUN to RUNNING). This field is present only if the experiment has started. This field is read-only.
+ "winnerFound": True or False, # Boolean specifying whether a winner has been found for this experiment. This field is read-only.
+ "kind": "analytics#experiment", # Resource type for an Analytics experiment. This field is read-only.
+ "name": "A String", # Experiment name. This field may not be changed for an experiment whose status is ENDED. This field is required when creating an experiment.
+ "created": "A String", # Time the experiment was created. This field is read-only.
+ "variations": [ # Array of variations. The first variation in the array is the original. The number of variations may not change once an experiment is in the RUNNING state. At least two variations are required before status can be set to RUNNING.
+ {
+ "status": "A String", # Status of the variation. Possible values: "ACTIVE", "INACTIVE". INACTIVE variations are not served. This field may not be changed for an experiment whose status is ENDED.
+ "url": "A String", # The URL of the variation. This field may not be changed for an experiment whose status is RUNNING or ENDED.
+ "won": True or False, # True if the experiment has ended and this variation performed (statistically) significantly better than the original. This field is read-only.
+ "name": "A String", # The name of the variation. This field is required when creating an experiment. This field may not be changed for an experiment whose status is ENDED.
+ "weight": 3.14, # Weight that this variation should receive. Only present if the experiment is running. This field is read-only.
+ },
+ ],
+ "minimumExperimentLengthInDays": 42, # Specifies the minimum length of the experiment. Can be changed for a running experiment. This field may not be changed for an experiments whose status is ENDED.
+ "profileId": "A String", # View (Profile) ID to which this experiment belongs. This field is read-only.
+ "parentLink": { # Parent link for an experiment. Points to the view (profile) to which this experiment belongs.
+ "href": "A String", # Link to the view (profile) to which this experiment belongs. This field is read-only.
+ "type": "analytics#profile", # Value is "analytics#profile". This field is read-only.
+ },
+ "endTime": "A String", # The ending time of the experiment (the time the status changed from RUNNING to ENDED). This field is present only if the experiment has ended. This field is read-only.
+ "selfLink": "A String", # Link for this experiment. This field is read-only.
+ }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/analytics_v3.management.goals.html b/docs/dyn/analytics_v3.management.goals.html
index 4c6571a..ff0e1e2 100644
--- a/docs/dyn/analytics_v3.management.goals.html
+++ b/docs/dyn/analytics_v3.management.goals.html
@@ -85,14 +85,14 @@
Args:
accountId: string, Account ID to retrieve goals for. Can either be a specific account ID or '~all', which refers to all the accounts that user has access to. (required)
webPropertyId: string, Web property ID to retrieve goals for. Can either be a specific web property ID or '~all', which refers to all the web properties that user has access to. (required)
- profileId: string, Profile ID to retrieve goals for. Can either be a specific profile ID or '~all', which refers to all the profiles that user has access to. (required)
+ profileId: string, View (Profile) ID to retrieve goals for. Can either be a specific view (profile) ID or '~all', which refers to all the views (profiles) that user has access to. (required)
max_results: integer, The maximum number of goals to include in this response.
start_index: integer, An index of the first goal to retrieve. Use this parameter as a pagination mechanism along with the max-results parameter.
Returns:
An object of the form:
- { # A goal collection lists Analytics goals to which the user has access. Each profile can have a set of goals. Each resource in the Goal collection corresponds to a single Analytics goal.
+ { # A goal collection lists Analytics goals to which the user has access. Each view (profile) can have a set of goals. Each resource in the Goal collection corresponds to a single Analytics goal.
"username": "A String", # Email ID of the authenticated user
"kind": "analytics#goals", # Collection type.
"items": [ # A list of goals.
@@ -138,9 +138,9 @@
},
"webPropertyId": "A String", # Web property ID to which this goal belongs. The web property ID is of the form UA-XXXXX-YY.
"active": True or False, # Determines whether this goal is active.
- "profileId": "A String", # Profile ID to which this goal belongs.
- "parentLink": { # Parent link for a goal. Points to the profile to which this goal belongs.
- "href": "A String", # Link to the profile to which this goal belongs.
+ "profileId": "A String", # View (Profile) ID to which this goal belongs.
+ "parentLink": { # Parent link for a goal. Points to the view (profile) to which this goal belongs.
+ "href": "A String", # Link to the view (profile) to which this goal belongs.
"type": "analytics#profile", # Value is "analytics#profile".
},
"type": "A String", # Goal type. Possible values are URL_DESTINATION, VISIT_TIME_ON_SITE, VISIT_NUM_PAGES, AND EVENT.
diff --git a/docs/dyn/analytics_v3.management.html b/docs/dyn/analytics_v3.management.html
index 6ac7b05..b285f71 100644
--- a/docs/dyn/analytics_v3.management.html
+++ b/docs/dyn/analytics_v3.management.html
@@ -90,6 +90,11 @@
<p class="firstline">Returns the dailyUploads Resource.</p>
<p class="toc_element">
+ <code><a href="analytics_v3.management.experiments.html">experiments()</a></code>
+</p>
+<p class="firstline">Returns the experiments Resource.</p>
+
+<p class="toc_element">
<code><a href="analytics_v3.management.goals.html">goals()</a></code>
</p>
<p class="firstline">Returns the goals Resource.</p>
diff --git a/docs/dyn/analytics_v3.management.profiles.html b/docs/dyn/analytics_v3.management.profiles.html
index 3b58d47..9891fed 100644
--- a/docs/dyn/analytics_v3.management.profiles.html
+++ b/docs/dyn/analytics_v3.management.profiles.html
@@ -76,58 +76,58 @@
<h2>Instance Methods</h2>
<p class="toc_element">
<code><a href="#list">list(accountId, webPropertyId, max_results=None, start_index=None)</a></code></p>
-<p class="firstline">Lists profiles to which the user has access.</p>
+<p class="firstline">Lists views (profiles) to which the user has access.</p>
<h3>Method Details</h3>
<div class="method">
<code class="details" id="list">list(accountId, webPropertyId, max_results=None, start_index=None)</code>
- <pre>Lists profiles to which the user has access.
+ <pre>Lists views (profiles) to which the user has access.
Args:
- accountId: string, Account ID for the profiles to retrieve. Can either be a specific account ID or '~all', which refers to all the accounts to which the user has access. (required)
- webPropertyId: string, Web property ID for the profiles to retrieve. Can either be a specific web property ID or '~all', which refers to all the web properties to which the user has access. (required)
- max_results: integer, The maximum number of profiles to include in this response.
+ accountId: string, Account ID for the view (profiles) to retrieve. Can either be a specific account ID or '~all', which refers to all the accounts to which the user has access. (required)
+ webPropertyId: string, Web property ID for the views (profiles) to retrieve. Can either be a specific web property ID or '~all', which refers to all the web properties to which the user has access. (required)
+ max_results: integer, The maximum number of views (profiles) to include in this response.
start_index: integer, An index of the first entity to retrieve. Use this parameter as a pagination mechanism along with the max-results parameter.
Returns:
An object of the form:
- { # A profile collection lists Analytics profiles to which the user has access. Each resource in the collection corresponds to a single Analytics profile.
+ { # A view (profile) collection lists Analytics views (profiles) to which the user has access. Each resource in the collection corresponds to a single Analytics view (profile).
"username": "A String", # Email ID of the authenticated user
"kind": "analytics#profiles", # Collection type.
- "items": [ # A list of profiles.
- { # JSON template for an Analytics profile.
- "defaultPage": "A String", # Default page for this profile.
+ "items": [ # A list of views (profiles).
+ { # JSON template for an Analytics view (profile).
+ "defaultPage": "A String", # Default page for this view (profile).
"kind": "analytics#profile", # Resource type for Analytics profile.
- "excludeQueryParameters": "A String", # The query parameters that are excluded from this profile.
- "name": "A String", # Name of this profile.
- "created": "A String", # Time this profile was created.
- "webPropertyId": "A String", # Web property ID of the form UA-XXXXX-YY to which this profile belongs.
- "updated": "A String", # Time this profile was last modified.
- "siteSearchQueryParameters": "A String", # The site search query parameters for this profile.
- "websiteUrl": "A String", # Website URL for this profile.
- "currency": "A String", # The currency type associated with this profile.
- "internalWebPropertyId": "A String", # Internal ID for the web property to which this profile belongs.
- "childLink": { # Child link for this profile. Points to the list of goals for this profile.
- "href": "A String", # Link to the list of goals for this profile.
+ "excludeQueryParameters": "A String", # The query parameters that are excluded from this view (profile).
+ "name": "A String", # Name of this view (profile).
+ "created": "A String", # Time this view (profile) was created.
+ "webPropertyId": "A String", # Web property ID of the form UA-XXXXX-YY to which this view (profile) belongs.
+ "updated": "A String", # Time this view (profile) was last modified.
+ "siteSearchQueryParameters": "A String", # The site search query parameters for this view (profile).
+ "websiteUrl": "A String", # Website URL for this view (profile).
+ "currency": "A String", # The currency type associated with this view (profile).
+ "internalWebPropertyId": "A String", # Internal ID for the web property to which this view (profile) belongs.
+ "childLink": { # Child link for this view (profile). Points to the list of goals for this view (profile).
+ "href": "A String", # Link to the list of goals for this view (profile).
"type": "analytics#goals", # Value is "analytics#goals".
},
- "eCommerceTracking": True or False, # E-commerce tracking parameter for this profile.
+ "eCommerceTracking": True or False, # Indicates whether ecommerce tracking is enabled for this view (profile).
"timezone": "A String", # Time zone for which this profile has been configured.
- "siteSearchCategoryParameters": "A String", # Site search category parameters for this profile.
- "parentLink": { # Parent link for this profile. Points to the web property to which this profile belongs.
- "href": "A String", # Link to the web property to which this profile belongs.
+ "siteSearchCategoryParameters": "A String", # Site search category parameters for this view (profile).
+ "parentLink": { # Parent link for this view (profile). Points to the web property to which this view (profile) belongs.
+ "href": "A String", # Link to the web property to which this view (profile) belongs.
"type": "analytics#webproperty", # Value is "analytics#webproperty".
},
- "type": "A String", # Profile type. Supported types: WEB or APP.
- "id": "A String", # Profile ID.
- "selfLink": "A String", # Link for this profile.
- "accountId": "A String", # Account ID to which this profile belongs.
+ "type": "A String", # View (Profile) type. Supported types: WEB or APP.
+ "id": "A String", # View (Profile) ID.
+ "selfLink": "A String", # Link for this view (profile).
+ "accountId": "A String", # Account ID to which this view (profile) belongs.
},
],
"itemsPerPage": 42, # The maximum number of resources the response can contain, regardless of the actual number of resources returned. Its value ranges from 1 to 1000 with a value of 1000 by default, or otherwise specified by the max-results query parameter.
- "previousLink": "A String", # Link to previous page for this profile collection.
+ "previousLink": "A String", # Link to previous page for this view (profile) collection.
"startIndex": 42, # The starting index of the resources, which is 1 by default or otherwise specified by the start-index query parameter.
- "nextLink": "A String", # Link to next page for this profile collection.
+ "nextLink": "A String", # Link to next page for this view (profile) collection.
"totalResults": 42, # The total number of results for the query, regardless of the number of results in the response.
}</pre>
</div>
diff --git a/docs/dyn/analytics_v3.management.webproperties.html b/docs/dyn/analytics_v3.management.webproperties.html
index 87c3f13..1ed414e 100644
--- a/docs/dyn/analytics_v3.management.webproperties.html
+++ b/docs/dyn/analytics_v3.management.webproperties.html
@@ -95,16 +95,19 @@
"kind": "analytics#webproperties", # Collection type.
"items": [ # A list of web properties.
{ # JSON template for an Analytics web property.
+ "websiteUrl": "A String", # Website url for this web property.
"kind": "analytics#webproperty", # Resource type for Analytics WebProperty.
"name": "A String", # Name of this web property.
"created": "A String", # Time this web property was created.
+ "level": "A String", # Level for this web property. Possible values are STANDARD or PREMIUM.
"updated": "A String", # Time this web property was last modified.
- "websiteUrl": "A String", # Website url for this web property.
+ "profileCount": 42, # View (Profile) count for this web property.
"internalWebPropertyId": "A String", # Internal ID for this web property.
- "childLink": { # Child link for this web property. Points to the list of profiles for this web property.
- "href": "A String", # Link to the list of profiles for this web property.
+ "childLink": { # Child link for this web property. Points to the list of views (profiles) for this web property.
+ "href": "A String", # Link to the list of views (profiles) for this web property.
"type": "analytics#profiles", # Type of the parent link. Its value is "analytics#profiles".
},
+ "industryVertical": "A String", # The industry vertical/category selected for this web property.
"parentLink": { # Parent link for this web property. Points to the account to which this web property belongs.
"href": "A String", # Link to the account for this web property.
"type": "analytics#account", # Type of the parent link. Its value is "analytics#account".
diff --git a/docs/dyn/androidpublisher_v1_1.html b/docs/dyn/androidpublisher_v1_1.html
new file mode 100644
index 0000000..adf06a6
--- /dev/null
+++ b/docs/dyn/androidpublisher_v1_1.html
@@ -0,0 +1,87 @@
+<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="androidpublisher_v1_1.html">Google Play Android Developer API</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="androidpublisher_v1_1.inapppurchases.html">inapppurchases()</a></code>
+</p>
+<p class="firstline">Returns the inapppurchases Resource.</p>
+
+<p class="toc_element">
+ <code><a href="androidpublisher_v1_1.purchases.html">purchases()</a></code>
+</p>
+<p class="firstline">Returns the purchases Resource.</p>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/androidpublisher_v1_1.inapppurchases.html b/docs/dyn/androidpublisher_v1_1.inapppurchases.html
new file mode 100644
index 0000000..e358f3c
--- /dev/null
+++ b/docs/dyn/androidpublisher_v1_1.inapppurchases.html
@@ -0,0 +1,106 @@
+<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="androidpublisher_v1_1.html">Google Play Android Developer API</a> . <a href="androidpublisher_v1_1.inapppurchases.html">inapppurchases</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#get">get(packageName, productId, token)</a></code></p>
+<p class="firstline">Checks the purchase and consumption status of an inapp item.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="get">get(packageName, productId, token)</code>
+ <pre>Checks the purchase and consumption status of an inapp item.
+
+Args:
+ packageName: string, The package name of the application the inapp product was sold in (for example, 'com.some.thing'). (required)
+ productId: string, The inapp product SKU (for example, 'com.some.thing.inapp1'). (required)
+ token: string, The token provided to the user's device when the inapp product was purchased. (required)
+
+Returns:
+ An object of the form:
+
+ { # A Purchase resource indicates the status of a user's subscription purchase.
+ "consumptionState": 42, # The consumption state of the inapp product. Possible values are:
+ # - - Consumed
+ # - - Yet to be consumed
+ "developerPayload": "A String", # A developer-specified string that contains supplemental information about an order.
+ "kind": "androidpublisher#inappPurchase", # This kind represents a inappPurchase object in the androidpublisher service.
+ "purchaseTime": "A String", # The time the product was purchased, in milliseconds since the epoch (Jan 1, 1970).
+ "purchaseState": 42, # The purchase state of the order. Possible values are:
+ # - - Purchased
+ # - - Cancelled
+ }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/androidpublisher_v1_1.purchases.html b/docs/dyn/androidpublisher_v1_1.purchases.html
new file mode 100644
index 0000000..f556adc
--- /dev/null
+++ b/docs/dyn/androidpublisher_v1_1.purchases.html
@@ -0,0 +1,115 @@
+<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="androidpublisher_v1_1.html">Google Play Android Developer API</a> . <a href="androidpublisher_v1_1.purchases.html">purchases</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#cancel">cancel(packageName, subscriptionId, token)</a></code></p>
+<p class="firstline">Cancels a user's subscription purchase. The subscription remains valid until its expiration time.</p>
+<p class="toc_element">
+ <code><a href="#get">get(packageName, subscriptionId, token)</a></code></p>
+<p class="firstline">Checks whether a user's subscription purchase is valid and returns its expiry time.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="cancel">cancel(packageName, subscriptionId, token)</code>
+ <pre>Cancels a user's subscription purchase. The subscription remains valid until its expiration time.
+
+Args:
+ packageName: string, The package name of the application for which this subscription was purchased (for example, 'com.some.thing'). (required)
+ subscriptionId: string, The purchased subscription ID (for example, 'monthly001'). (required)
+ token: string, The token provided to the user's device when the subscription was purchased. (required)
+</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="get">get(packageName, subscriptionId, token)</code>
+ <pre>Checks whether a user's subscription purchase is valid and returns its expiry time.
+
+Args:
+ packageName: string, The package name of the application for which this subscription was purchased (for example, 'com.some.thing'). (required)
+ subscriptionId: string, The purchased subscription ID (for example, 'monthly001'). (required)
+ token: string, The token provided to the user's device when the subscription was purchased. (required)
+
+Returns:
+ An object of the form:
+
+ { # A Purchase resource indicates the status of a user's subscription purchase.
+ "initiationTimestampMsec": "A String", # Time at which the subscription was granted, in milliseconds since Epoch.
+ "kind": "androidpublisher#subscriptionPurchase", # This kind represents a subscriptionPurchase object in the androidpublisher service.
+ "autoRenewing": True or False, # Whether the subscription will automatically be renewed when it reaches its current expiry time.
+ "validUntilTimestampMsec": "A String", # Time at which the subscription will expire, in milliseconds since Epoch.
+ }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/appstate_v1.html b/docs/dyn/appstate_v1.html
new file mode 100644
index 0000000..37445e5
--- /dev/null
+++ b/docs/dyn/appstate_v1.html
@@ -0,0 +1,82 @@
+<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="appstate_v1.html">Google App State API</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="appstate_v1.states.html">states()</a></code>
+</p>
+<p class="firstline">Returns the states Resource.</p>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/appstate_v1.states.html b/docs/dyn/appstate_v1.states.html
new file mode 100644
index 0000000..62656aa
--- /dev/null
+++ b/docs/dyn/appstate_v1.states.html
@@ -0,0 +1,188 @@
+<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="appstate_v1.html">Google App State API</a> . <a href="appstate_v1.states.html">states</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#clear">clear(stateKey, currentDataVersion=None)</a></code></p>
+<p class="firstline">Clears (sets to empty) the data for the passed key if and only if the passed version matches the currently stored version. This method results in a conflict error on version mismatch.</p>
+<p class="toc_element">
+ <code><a href="#delete">delete(stateKey)</a></code></p>
+<p class="firstline">Deletes a key and the data associated with it. The key is removed and no longer counts against the key quota. Note that since this method is not safe in the face of concurrent modifications, it should only be used for development and testing purposes. Invoking this method in shipping code can result in data loss and data corruption.</p>
+<p class="toc_element">
+ <code><a href="#get">get(stateKey)</a></code></p>
+<p class="firstline">Retrieves the data corresponding to the passed key.</p>
+<p class="toc_element">
+ <code><a href="#list">list(includeData=None)</a></code></p>
+<p class="firstline">Lists all the states keys, and optionally the state data.</p>
+<p class="toc_element">
+ <code><a href="#update">update(stateKey, body, currentStateVersion=None)</a></code></p>
+<p class="firstline">Update the data associated with the input key if and only if the passed version matches the currently stored version. This method is safe in the face of concurrent writes. Maximum per-key size is 128KB.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="clear">clear(stateKey, currentDataVersion=None)</code>
+ <pre>Clears (sets to empty) the data for the passed key if and only if the passed version matches the currently stored version. This method results in a conflict error on version mismatch.
+
+Args:
+ stateKey: integer, The key for the data to be retrieved. (required)
+ currentDataVersion: string, The version of the data to be cleared. Version strings are returned by the server.
+
+Returns:
+ An object of the form:
+
+ { # This is a JSON template for an app state write result.
+ "kind": "appstate#writeResult", # Uniquely identifies the type of this resource. Value is always the fixed string appstate#writeResult.
+ "stateKey": 42, # The written key.
+ "currentStateVersion": "A String", # The version of the data for this key on the server.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="delete">delete(stateKey)</code>
+ <pre>Deletes a key and the data associated with it. The key is removed and no longer counts against the key quota. Note that since this method is not safe in the face of concurrent modifications, it should only be used for development and testing purposes. Invoking this method in shipping code can result in data loss and data corruption.
+
+Args:
+ stateKey: integer, The key for the data to be retrieved. (required)
+</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="get">get(stateKey)</code>
+ <pre>Retrieves the data corresponding to the passed key.
+
+Args:
+ stateKey: integer, The key for the data to be retrieved. (required)
+
+Returns:
+ An object of the form:
+
+ { # This is a JSON template for an app state resource.
+ "stateKey": 42, # The key for the data.
+ "kind": "appstate#getResponse", # Uniquely identifies the type of this resource. Value is always the fixed string appstate#getResponse.
+ "data": "A String", # The requested data.
+ "currentStateVersion": "A String", # The current app state version.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="list">list(includeData=None)</code>
+ <pre>Lists all the states keys, and optionally the state data.
+
+Args:
+ includeData: boolean, Whether to include the full data in addition to the version number
+
+Returns:
+ An object of the form:
+
+ { # This is a JSON template to convert a list-response for app state.
+ "items": [ # The app state data.
+ { # This is a JSON template for an app state resource.
+ "stateKey": 42, # The key for the data.
+ "kind": "appstate#getResponse", # Uniquely identifies the type of this resource. Value is always the fixed string appstate#getResponse.
+ "data": "A String", # The requested data.
+ "currentStateVersion": "A String", # The current app state version.
+ },
+ ],
+ "kind": "appstate#listResponse", # Uniquely identifies the type of this resource. Value is always the fixed string appstate#listResponse.
+ "maximumKeyCount": 42, # The maximum number of keys allowed for this user.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="update">update(stateKey, body, currentStateVersion=None)</code>
+ <pre>Update the data associated with the input key if and only if the passed version matches the currently stored version. This method is safe in the face of concurrent writes. Maximum per-key size is 128KB.
+
+Args:
+ stateKey: integer, The key for the data to be retrieved. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # This is a JSON template for a requests which update app state
+ "kind": "appstate#updateRequest", # Uniquely identifies the type of this resource. Value is always the fixed string appstate#updateRequest.
+ "data": "A String", # The new app state data that your application is trying to update with.
+ }
+
+ currentStateVersion: string, The version of the app state your application is attempting to update. If this does not match the current version, this method will return a conflict error. If there is no data stored on the server for this key, the update will succeed irrespective of the value of this parameter.
+
+Returns:
+ An object of the form:
+
+ { # This is a JSON template for an app state write result.
+ "kind": "appstate#writeResult", # Uniquely identifies the type of this resource. Value is always the fixed string appstate#writeResult.
+ "stateKey": 42, # The written key.
+ "currentStateVersion": "A String", # The version of the data for this key on the server.
+ }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/bigquery_v2.datasets.html b/docs/dyn/bigquery_v2.datasets.html
index 50303a2..f188188 100644
--- a/docs/dyn/bigquery_v2.datasets.html
+++ b/docs/dyn/bigquery_v2.datasets.html
@@ -127,14 +127,14 @@
},
"creationTime": "A String", # [Output-only] The time when this dataset was created, in milliseconds since the epoch.
"access": [ # [Optional] Describes users' rights on the dataset. You can assign the same role to multiple users, and assign multiple roles to the same user.
- # Default values assigned to a new dataset are as follows: OWNER - Project owners, dataset creator READ - Project readers WRITE - Project writers
+ # Default values assigned to a new dataset are as follows: OWNER - Project owners, dataset creator READER - Project readers WRITER - Project writers
# See ACLs and Rights for a description of these rights. If you specify any of these roles when creating a dataset, the assigned roles will overwrite the defaults listed above.
# To revoke rights to a dataset, call datasets.update() and omit the names of anyone whose rights you wish to revoke. However, every dataset must have at least one entity granted OWNER role.
# Each access object can have only one of the following members: userByEmail, groupByEmail, domain, or allAuthenticatedUsers.
{
"specialGroup": "A String", # [Pick one] A special group to grant access to. The valid values are: projectOwners: Owners of the enclosing project. projectReaders: Readers of the enclosing project. projectWriters: Writers of the enclosing project. allAuthenticatedUsers: All authenticated BigQuery users.
"domain": "A String", # [Pick one] A domain to grant access to. Any users signed in with the domain specified will be granted the specified access. Example: "example.com".
- "role": "A String", # [Required] Describes the rights granted to the user specified by the other member of the access object. The following string values are supported: READ - User can call any list() or get() method on any collection or resource. WRITE - User can call any method on any collection except for datasets, on which they can call list() and get(). OWNER - User can call any method. The dataset creator is granted this role by default.
+ "role": "A String", # [Required] Describes the rights granted to the user specified by the other member of the access object. The following string values are supported: READER - User can call any list() or get() method on any collection or resource. WRITER - User can call any method on any collection except for datasets, on which they can call list() and get(). OWNER - User can call any method. The dataset creator is granted this role by default.
"groupByEmail": "A String", # [Pick one] A fully-qualified email address of a mailing list to grant access to. This must be either a Google Groups mailing list (ends in @googlegroups.com) or a group managed by an enterprise version of Google Groups.
"userByEmail": "A String", # [Pick one] A fully qualified email address of a user to grant access to. For example: fred@example.com.
},
@@ -165,14 +165,14 @@
},
"creationTime": "A String", # [Output-only] The time when this dataset was created, in milliseconds since the epoch.
"access": [ # [Optional] Describes users' rights on the dataset. You can assign the same role to multiple users, and assign multiple roles to the same user.
- # Default values assigned to a new dataset are as follows: OWNER - Project owners, dataset creator READ - Project readers WRITE - Project writers
+ # Default values assigned to a new dataset are as follows: OWNER - Project owners, dataset creator READER - Project readers WRITER - Project writers
# See ACLs and Rights for a description of these rights. If you specify any of these roles when creating a dataset, the assigned roles will overwrite the defaults listed above.
# To revoke rights to a dataset, call datasets.update() and omit the names of anyone whose rights you wish to revoke. However, every dataset must have at least one entity granted OWNER role.
# Each access object can have only one of the following members: userByEmail, groupByEmail, domain, or allAuthenticatedUsers.
{
"specialGroup": "A String", # [Pick one] A special group to grant access to. The valid values are: projectOwners: Owners of the enclosing project. projectReaders: Readers of the enclosing project. projectWriters: Writers of the enclosing project. allAuthenticatedUsers: All authenticated BigQuery users.
"domain": "A String", # [Pick one] A domain to grant access to. Any users signed in with the domain specified will be granted the specified access. Example: "example.com".
- "role": "A String", # [Required] Describes the rights granted to the user specified by the other member of the access object. The following string values are supported: READ - User can call any list() or get() method on any collection or resource. WRITE - User can call any method on any collection except for datasets, on which they can call list() and get(). OWNER - User can call any method. The dataset creator is granted this role by default.
+ "role": "A String", # [Required] Describes the rights granted to the user specified by the other member of the access object. The following string values are supported: READER - User can call any list() or get() method on any collection or resource. WRITER - User can call any method on any collection except for datasets, on which they can call list() and get(). OWNER - User can call any method. The dataset creator is granted this role by default.
"groupByEmail": "A String", # [Pick one] A fully-qualified email address of a mailing list to grant access to. This must be either a Google Groups mailing list (ends in @googlegroups.com) or a group managed by an enterprise version of Google Groups.
"userByEmail": "A String", # [Pick one] A fully qualified email address of a user to grant access to. For example: fred@example.com.
},
@@ -197,14 +197,14 @@
},
"creationTime": "A String", # [Output-only] The time when this dataset was created, in milliseconds since the epoch.
"access": [ # [Optional] Describes users' rights on the dataset. You can assign the same role to multiple users, and assign multiple roles to the same user.
- # Default values assigned to a new dataset are as follows: OWNER - Project owners, dataset creator READ - Project readers WRITE - Project writers
+ # Default values assigned to a new dataset are as follows: OWNER - Project owners, dataset creator READER - Project readers WRITER - Project writers
# See ACLs and Rights for a description of these rights. If you specify any of these roles when creating a dataset, the assigned roles will overwrite the defaults listed above.
# To revoke rights to a dataset, call datasets.update() and omit the names of anyone whose rights you wish to revoke. However, every dataset must have at least one entity granted OWNER role.
# Each access object can have only one of the following members: userByEmail, groupByEmail, domain, or allAuthenticatedUsers.
{
"specialGroup": "A String", # [Pick one] A special group to grant access to. The valid values are: projectOwners: Owners of the enclosing project. projectReaders: Readers of the enclosing project. projectWriters: Writers of the enclosing project. allAuthenticatedUsers: All authenticated BigQuery users.
"domain": "A String", # [Pick one] A domain to grant access to. Any users signed in with the domain specified will be granted the specified access. Example: "example.com".
- "role": "A String", # [Required] Describes the rights granted to the user specified by the other member of the access object. The following string values are supported: READ - User can call any list() or get() method on any collection or resource. WRITE - User can call any method on any collection except for datasets, on which they can call list() and get(). OWNER - User can call any method. The dataset creator is granted this role by default.
+ "role": "A String", # [Required] Describes the rights granted to the user specified by the other member of the access object. The following string values are supported: READER - User can call any list() or get() method on any collection or resource. WRITER - User can call any method on any collection except for datasets, on which they can call list() and get(). OWNER - User can call any method. The dataset creator is granted this role by default.
"groupByEmail": "A String", # [Pick one] A fully-qualified email address of a mailing list to grant access to. This must be either a Google Groups mailing list (ends in @googlegroups.com) or a group managed by an enterprise version of Google Groups.
"userByEmail": "A String", # [Pick one] A fully qualified email address of a user to grant access to. For example: fred@example.com.
},
@@ -230,20 +230,20 @@
An object of the form:
{
- "nextPageToken": "A String", # A token to request the next page of results. Present only when there is more than one page of results.* See Paging Through Results in the developer's guide.
- "kind": "bigquery#datasetList", # The type of list.
- "datasets": [ # An array of one or more summarized dataset resources. Absent when there are no datasets in the specified project.
+ "nextPageToken": "A String", # A token that can be used to request the next results page. This property is omitted on the final results page.
+ "kind": "bigquery#datasetList", # The list type. This property always returns the value "bigquery#datasetList".
+ "datasets": [ # An array of the dataset resources in the project. Each resource contains basic information. For full information about a particular dataset resource, use the Datasets: get method. This property is omitted when there are no datasets in the project.
{
- "friendlyName": "A String", # A descriptive name for this dataset, if one exists.
- "kind": "bigquery#dataset", # The resource type.
- "id": "A String", # The fully-qualified unique name of this dataset in the format projectId:datasetId.
- "datasetReference": { # Reference identifying dataset.
+ "friendlyName": "A String", # A descriptive name for the dataset, if one exists.
+ "kind": "bigquery#dataset", # The resource type. This property always returns the value "bigquery#dataset".
+ "id": "A String", # The fully-qualified, unique, opaque ID of the dataset.
+ "datasetReference": { # The dataset reference. Use this property to access specific parts of the dataset's ID, such as project ID or dataset ID.
"projectId": "A String", # [Optional] The ID of the container project.
"datasetId": "A String", # [Required] A unique ID for this dataset, without the project name.
},
},
],
- "etag": "A String", # A hash of this page of results. See Paging Through Results in the developer's guide.
+ "etag": "A String", # A hash value of the results page. You can use this property to determine if the page has changed since the last request.
}</pre>
</div>
@@ -280,14 +280,14 @@
},
"creationTime": "A String", # [Output-only] The time when this dataset was created, in milliseconds since the epoch.
"access": [ # [Optional] Describes users' rights on the dataset. You can assign the same role to multiple users, and assign multiple roles to the same user.
- # Default values assigned to a new dataset are as follows: OWNER - Project owners, dataset creator READ - Project readers WRITE - Project writers
+ # Default values assigned to a new dataset are as follows: OWNER - Project owners, dataset creator READER - Project readers WRITER - Project writers
# See ACLs and Rights for a description of these rights. If you specify any of these roles when creating a dataset, the assigned roles will overwrite the defaults listed above.
# To revoke rights to a dataset, call datasets.update() and omit the names of anyone whose rights you wish to revoke. However, every dataset must have at least one entity granted OWNER role.
# Each access object can have only one of the following members: userByEmail, groupByEmail, domain, or allAuthenticatedUsers.
{
"specialGroup": "A String", # [Pick one] A special group to grant access to. The valid values are: projectOwners: Owners of the enclosing project. projectReaders: Readers of the enclosing project. projectWriters: Writers of the enclosing project. allAuthenticatedUsers: All authenticated BigQuery users.
"domain": "A String", # [Pick one] A domain to grant access to. Any users signed in with the domain specified will be granted the specified access. Example: "example.com".
- "role": "A String", # [Required] Describes the rights granted to the user specified by the other member of the access object. The following string values are supported: READ - User can call any list() or get() method on any collection or resource. WRITE - User can call any method on any collection except for datasets, on which they can call list() and get(). OWNER - User can call any method. The dataset creator is granted this role by default.
+ "role": "A String", # [Required] Describes the rights granted to the user specified by the other member of the access object. The following string values are supported: READER - User can call any list() or get() method on any collection or resource. WRITER - User can call any method on any collection except for datasets, on which they can call list() and get(). OWNER - User can call any method. The dataset creator is granted this role by default.
"groupByEmail": "A String", # [Pick one] A fully-qualified email address of a mailing list to grant access to. This must be either a Google Groups mailing list (ends in @googlegroups.com) or a group managed by an enterprise version of Google Groups.
"userByEmail": "A String", # [Pick one] A fully qualified email address of a user to grant access to. For example: fred@example.com.
},
@@ -312,14 +312,14 @@
},
"creationTime": "A String", # [Output-only] The time when this dataset was created, in milliseconds since the epoch.
"access": [ # [Optional] Describes users' rights on the dataset. You can assign the same role to multiple users, and assign multiple roles to the same user.
- # Default values assigned to a new dataset are as follows: OWNER - Project owners, dataset creator READ - Project readers WRITE - Project writers
+ # Default values assigned to a new dataset are as follows: OWNER - Project owners, dataset creator READER - Project readers WRITER - Project writers
# See ACLs and Rights for a description of these rights. If you specify any of these roles when creating a dataset, the assigned roles will overwrite the defaults listed above.
# To revoke rights to a dataset, call datasets.update() and omit the names of anyone whose rights you wish to revoke. However, every dataset must have at least one entity granted OWNER role.
# Each access object can have only one of the following members: userByEmail, groupByEmail, domain, or allAuthenticatedUsers.
{
"specialGroup": "A String", # [Pick one] A special group to grant access to. The valid values are: projectOwners: Owners of the enclosing project. projectReaders: Readers of the enclosing project. projectWriters: Writers of the enclosing project. allAuthenticatedUsers: All authenticated BigQuery users.
"domain": "A String", # [Pick one] A domain to grant access to. Any users signed in with the domain specified will be granted the specified access. Example: "example.com".
- "role": "A String", # [Required] Describes the rights granted to the user specified by the other member of the access object. The following string values are supported: READ - User can call any list() or get() method on any collection or resource. WRITE - User can call any method on any collection except for datasets, on which they can call list() and get(). OWNER - User can call any method. The dataset creator is granted this role by default.
+ "role": "A String", # [Required] Describes the rights granted to the user specified by the other member of the access object. The following string values are supported: READER - User can call any list() or get() method on any collection or resource. WRITER - User can call any method on any collection except for datasets, on which they can call list() and get(). OWNER - User can call any method. The dataset creator is granted this role by default.
"groupByEmail": "A String", # [Pick one] A fully-qualified email address of a mailing list to grant access to. This must be either a Google Groups mailing list (ends in @googlegroups.com) or a group managed by an enterprise version of Google Groups.
"userByEmail": "A String", # [Pick one] A fully qualified email address of a user to grant access to. For example: fred@example.com.
},
@@ -351,14 +351,14 @@
},
"creationTime": "A String", # [Output-only] The time when this dataset was created, in milliseconds since the epoch.
"access": [ # [Optional] Describes users' rights on the dataset. You can assign the same role to multiple users, and assign multiple roles to the same user.
- # Default values assigned to a new dataset are as follows: OWNER - Project owners, dataset creator READ - Project readers WRITE - Project writers
+ # Default values assigned to a new dataset are as follows: OWNER - Project owners, dataset creator READER - Project readers WRITER - Project writers
# See ACLs and Rights for a description of these rights. If you specify any of these roles when creating a dataset, the assigned roles will overwrite the defaults listed above.
# To revoke rights to a dataset, call datasets.update() and omit the names of anyone whose rights you wish to revoke. However, every dataset must have at least one entity granted OWNER role.
# Each access object can have only one of the following members: userByEmail, groupByEmail, domain, or allAuthenticatedUsers.
{
"specialGroup": "A String", # [Pick one] A special group to grant access to. The valid values are: projectOwners: Owners of the enclosing project. projectReaders: Readers of the enclosing project. projectWriters: Writers of the enclosing project. allAuthenticatedUsers: All authenticated BigQuery users.
"domain": "A String", # [Pick one] A domain to grant access to. Any users signed in with the domain specified will be granted the specified access. Example: "example.com".
- "role": "A String", # [Required] Describes the rights granted to the user specified by the other member of the access object. The following string values are supported: READ - User can call any list() or get() method on any collection or resource. WRITE - User can call any method on any collection except for datasets, on which they can call list() and get(). OWNER - User can call any method. The dataset creator is granted this role by default.
+ "role": "A String", # [Required] Describes the rights granted to the user specified by the other member of the access object. The following string values are supported: READER - User can call any list() or get() method on any collection or resource. WRITER - User can call any method on any collection except for datasets, on which they can call list() and get(). OWNER - User can call any method. The dataset creator is granted this role by default.
"groupByEmail": "A String", # [Pick one] A fully-qualified email address of a mailing list to grant access to. This must be either a Google Groups mailing list (ends in @googlegroups.com) or a group managed by an enterprise version of Google Groups.
"userByEmail": "A String", # [Pick one] A fully qualified email address of a user to grant access to. For example: fred@example.com.
},
@@ -383,14 +383,14 @@
},
"creationTime": "A String", # [Output-only] The time when this dataset was created, in milliseconds since the epoch.
"access": [ # [Optional] Describes users' rights on the dataset. You can assign the same role to multiple users, and assign multiple roles to the same user.
- # Default values assigned to a new dataset are as follows: OWNER - Project owners, dataset creator READ - Project readers WRITE - Project writers
+ # Default values assigned to a new dataset are as follows: OWNER - Project owners, dataset creator READER - Project readers WRITER - Project writers
# See ACLs and Rights for a description of these rights. If you specify any of these roles when creating a dataset, the assigned roles will overwrite the defaults listed above.
# To revoke rights to a dataset, call datasets.update() and omit the names of anyone whose rights you wish to revoke. However, every dataset must have at least one entity granted OWNER role.
# Each access object can have only one of the following members: userByEmail, groupByEmail, domain, or allAuthenticatedUsers.
{
"specialGroup": "A String", # [Pick one] A special group to grant access to. The valid values are: projectOwners: Owners of the enclosing project. projectReaders: Readers of the enclosing project. projectWriters: Writers of the enclosing project. allAuthenticatedUsers: All authenticated BigQuery users.
"domain": "A String", # [Pick one] A domain to grant access to. Any users signed in with the domain specified will be granted the specified access. Example: "example.com".
- "role": "A String", # [Required] Describes the rights granted to the user specified by the other member of the access object. The following string values are supported: READ - User can call any list() or get() method on any collection or resource. WRITE - User can call any method on any collection except for datasets, on which they can call list() and get(). OWNER - User can call any method. The dataset creator is granted this role by default.
+ "role": "A String", # [Required] Describes the rights granted to the user specified by the other member of the access object. The following string values are supported: READER - User can call any list() or get() method on any collection or resource. WRITER - User can call any method on any collection except for datasets, on which they can call list() and get(). OWNER - User can call any method. The dataset creator is granted this role by default.
"groupByEmail": "A String", # [Pick one] A fully-qualified email address of a mailing list to grant access to. This must be either a Google Groups mailing list (ends in @googlegroups.com) or a group managed by an enterprise version of Google Groups.
"userByEmail": "A String", # [Pick one] A fully qualified email address of a user to grant access to. For example: fred@example.com.
},
diff --git a/docs/dyn/bigquery_v2.jobs.html b/docs/dyn/bigquery_v2.jobs.html
index 26cc5ab..e252020 100644
--- a/docs/dyn/bigquery_v2.jobs.html
+++ b/docs/dyn/bigquery_v2.jobs.html
@@ -78,7 +78,7 @@
<code><a href="#get">get(projectId, jobId)</a></code></p>
<p class="firstline">Retrieves the specified job by ID.</p>
<p class="toc_element">
- <code><a href="#getQueryResults">getQueryResults(projectId, jobId, timeoutMs=None, maxResults=None, startIndex=None)</a></code></p>
+ <code><a href="#getQueryResults">getQueryResults(projectId, jobId, timeoutMs=None, pageToken=None, maxResults=None, startIndex=None)</a></code></p>
<p class="firstline">Retrieves the results of a query job.</p>
<p class="toc_element">
<code><a href="#insert">insert(projectId, body=None, media_body=None)</a></code></p>
@@ -109,16 +109,16 @@
"state": "A String", # [Output-only] Running state of the job.
"errors": [ # [Output-only] All errors encountered during the running of the job. Errors here do not necessarily mean that the job has completed or was unsuccessful.
{
- "debugInfo": "A String", # Debugging information for the service, if present. Should be ignored.
- "message": "A String", # A human readable explanation of the error.
- "reason": "A String", # Specifies the error reason. For example, reason will be "required" or "invalid" if some field was missing or malformed.
+ "debugInfo": "A String", # Debugging information. This property is internal to Google and should not be used.
+ "message": "A String", # A human-readable description of the error.
+ "reason": "A String", # A short error code that summarizes the error.
"location": "A String", # Specifies where the error occurred, if present.
},
],
"errorResult": { # [Output-only] Final error result of the job. If present, indicates that the job has completed and was unsuccessful.
- "debugInfo": "A String", # Debugging information for the service, if present. Should be ignored.
- "message": "A String", # A human readable explanation of the error.
- "reason": "A String", # Specifies the error reason. For example, reason will be "required" or "invalid" if some field was missing or malformed.
+ "debugInfo": "A String", # Debugging information. This property is internal to Google and should not be used.
+ "message": "A String", # A human-readable description of the error.
+ "reason": "A String", # A short error code that summarizes the error.
"location": "A String", # Specifies where the error occurred, if present.
},
},
@@ -131,6 +131,8 @@
"outputBytes": "A String", # [Output-only] Size of the loaded data in bytes. Note that while an import job is in the running state, this value may change.
},
"query": { # [Output-only] Statistics for a query job.
+ "completionRatio": 3.14, # [Output-Only] Approximate fraction of data processed for this query. This will be 1.0 unless min_completion_ratio for the query was set to something other than 1.0.
+ "cacheHit": True or False, # [Output-only] Whether the query result was fetched from the query cache.
"totalBytesProcessed": "A String", # [Output-only] Total bytes processed for this job.
},
"endTime": "A String", # [Output-only] End time of this job, in milliseconds since the epoch.
@@ -154,6 +156,7 @@
},
"writeDisposition": "A String", # [Optional] Specifies the action that occurs if the destination table already exists. Each action is atomic and only occurs if BigQuery is able to fully load the data and the load job completes without error. The following values are supported: WRITE_TRUNCATE: If the table already exists, BigQuery overwrites the table. WRITE_APPEND: If the table already exists, BigQuery appends the data to the table. WRITE_EMPTY: If the table already exists, a 'duplicate' error is returned in the job result. Creation, truncation and append actions occur as one atomic update upon job completion.
"maxBadRecords": 42, # [Optional] The maximum number of bad records that BigQuery can ignore when running the job. If the number of bad records exceeds this value, an 'invalid' error is returned in the job result and the job fails. The default value is 0, which requires that all records are valid.
+ "allowJaggedRows": True or False, # [Optional] Accept rows that are missing trailing optional columns. The missing values are treated as nulls. Default is false which treats short rows as errors. Only applicable to CSV, ignored for other formats.
"skipLeadingRows": 42, # [Optional] The number of rows at the top of a CSV file that BigQuery will skip when loading the data. The default value is 0. This property is useful if you have header rows in the file that should be skipped.
"sourceUris": [ # [Required] The fully-qualified URIs that point to your data on Google Cloud Storage.
"A String",
@@ -169,13 +172,14 @@
"fields": [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
# Object with schema name: TableFieldSchema
],
- "type": "A String", # [Required] The field data type. Possible values include STRING, INTEGER, FLOAT, BOOLEAN, TIMESTAMP or RECORD (where RECORD indicates a nested schema).
+ "type": "A String", # [Required] The field data type. Possible values include STRING, INTEGER, FLOAT, BOOLEAN, TIMESTAMP or RECORD (where RECORD indicates that the field contains a nested schema).
"mode": "A String", # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
"name": "A String", # [Required] The field name.
},
],
},
},
+ "dryRun": True or False, # [Optional] If set, don't actually run this job. A valid query will return a mostly empty response with some processing statistics, while an invalid query will return the same error it would if it wasn't a dry run. Behavior of non-query jobs is undefined.
"link": { # [Pick one] Configures a link job.
"createDisposition": "A String", # [Optional] Whether or not to create a new table, if none exists.
"writeDisposition": "A String", # [Optional] Whether to overwrite an existing table (WRITE_TRUNCATE), append to an existing table (WRITE_APPEND), or require that the the table is empty (WRITE_EMPTY). Default is WRITE_APPEND.
@@ -189,6 +193,7 @@
],
},
"query": { # [Pick one] Configures a query job.
+ "useQueryCache": True or False, # [Optional] Whether to look for the result in the query cache. The query cache is a best-effort cache that will be flushed whenever tables in the query are modified. Moreover, the query cache is only available when a query does not have a destination table specified.
"defaultDataset": { # [Optional] Specifies the default dataset to assume for unqualified table names in the query.
"projectId": "A String", # [Optional] The ID of the container project.
"datasetId": "A String", # [Required] A unique ID for this dataset, without the project name.
@@ -201,8 +206,9 @@
"priority": "A String", # [Optional] Specifies a priority for the query. Default is INTERACTIVE. Alternative is BATCH.
"writeDisposition": "A String", # [Optional] Whether to overwrite an existing table (WRITE_TRUNCATE), append to an existing table (WRITE_APPEND), or require that the the table is empty (WRITE_EMPTY). Default is WRITE_EMPTY.
"allowLargeResults": True or False, # [Experimental] If true, allows >128M results to be materialized in the destination table. Requires destination_table to be set.
- "createDisposition": "A String", # [Optional] Whether to create the table if it doesn't already exist (CREATE_IF_NEEDED) or to require the table already exist (CREATE_NEVER). Default is CREATE_IF_NEEDED.
"query": "A String", # [Required] BigQuery SQL query to execute.
+ "createDisposition": "A String", # [Optional] Whether to create the table if it doesn't already exist (CREATE_IF_NEEDED) or to require the table already exist (CREATE_NEVER). Default is CREATE_IF_NEEDED.
+ "minCompletionRatio": 3.14, # [Experimental] Specifies the the minimum fraction of data that must be scanned before a query returns. This should be specified as a value between 0.0 and 1.0 inclusive. The default value is 1.0.
"preserveNulls": True or False, # [Experimental] If set, preserve null values in table data, rather than mapping null values to the column's default value. This flag currently defaults to false, but the default will soon be changed to true. Shortly afterward, this flag will be removed completely. Please specify true if possible, and false only if you need to force the old behavior while updating client code.
},
"copy": { # [Pick one] Copies a table.
@@ -230,9 +236,6 @@
},
"fieldDelimiter": "A String", # [Optional] Delimiter to use between fields in the exported data. Default is ','
},
- "properties": { # [Optional] Properties providing extra details about how the job should be run. Not used for most jobs.
- "a_key": "A String", # Key-value property pairs.
- },
},
"id": "A String", # [Output-only] Opaque ID field of the job
"selfLink": "A String", # [Output-only] A URL that can be used to access this resource again.
@@ -240,13 +243,14 @@
</div>
<div class="method">
- <code class="details" id="getQueryResults">getQueryResults(projectId, jobId, timeoutMs=None, maxResults=None, startIndex=None)</code>
+ <code class="details" id="getQueryResults">getQueryResults(projectId, jobId, timeoutMs=None, pageToken=None, maxResults=None, startIndex=None)</code>
<pre>Retrieves the results of a query job.
Args:
projectId: string, Project ID of the query job (required)
jobId: string, Job ID of the query job (required)
timeoutMs: integer, How long to wait for the query to complete, in milliseconds, before returning. Default is to return immediately. If the timeout passes before the job completes, the request will fail with a TIMEOUT error
+ pageToken: string, Page token, returned by a previous call, to request the next page of results
maxResults: integer, Maximum number of results to read
startIndex: string, Zero-based index of the starting row
@@ -258,7 +262,7 @@
"rows": [ # An object with as many results as can be contained within the maximum permitted reply size. To get any additional rows, you can call GetQueryResults and specify the jobReference returned above. Present only when the query completes successfully.
{ # Represents a single row in the result set, consisting of one or more fields.
"f": [
- { # Represents a single cell in the result set.
+ { # Represents a single cell in the result set. Users of the java client can detect whether their value result is null by calling 'com.google.api.client.util.Data.isNull(cell.getV())'.
"v": "",
},
],
@@ -268,8 +272,10 @@
"projectId": "A String", # [Required] Project ID being billed for the job.
"jobId": "A String", # [Required] ID of the job.
},
+ "pageToken": "A String", # A token used for paging results.
"jobComplete": True or False, # Whether the query has completed or not. If rows or totalRows are present, this will always be true. If this is false, totalRows will not be available.
"totalRows": "A String", # The total number of rows in the complete query result set, which can be more than the number of rows in this single page of results. Present only when the query completes successfully.
+ "cacheHit": True or False, # Whether the query result was fetched from the query cache.
"etag": "A String", # A hash of this response.
"schema": { # The schema of the results. Present only when the query completes successfully.
"fields": [ # Describes the fields in a table.
@@ -277,7 +283,7 @@
"fields": [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
# Object with schema name: TableFieldSchema
],
- "type": "A String", # [Required] The field data type. Possible values include STRING, INTEGER, FLOAT, BOOLEAN, TIMESTAMP or RECORD (where RECORD indicates a nested schema).
+ "type": "A String", # [Required] The field data type. Possible values include STRING, INTEGER, FLOAT, BOOLEAN, TIMESTAMP or RECORD (where RECORD indicates that the field contains a nested schema).
"mode": "A String", # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
"name": "A String", # [Required] The field name.
},
@@ -300,16 +306,16 @@
"state": "A String", # [Output-only] Running state of the job.
"errors": [ # [Output-only] All errors encountered during the running of the job. Errors here do not necessarily mean that the job has completed or was unsuccessful.
{
- "debugInfo": "A String", # Debugging information for the service, if present. Should be ignored.
- "message": "A String", # A human readable explanation of the error.
- "reason": "A String", # Specifies the error reason. For example, reason will be "required" or "invalid" if some field was missing or malformed.
+ "debugInfo": "A String", # Debugging information. This property is internal to Google and should not be used.
+ "message": "A String", # A human-readable description of the error.
+ "reason": "A String", # A short error code that summarizes the error.
"location": "A String", # Specifies where the error occurred, if present.
},
],
"errorResult": { # [Output-only] Final error result of the job. If present, indicates that the job has completed and was unsuccessful.
- "debugInfo": "A String", # Debugging information for the service, if present. Should be ignored.
- "message": "A String", # A human readable explanation of the error.
- "reason": "A String", # Specifies the error reason. For example, reason will be "required" or "invalid" if some field was missing or malformed.
+ "debugInfo": "A String", # Debugging information. This property is internal to Google and should not be used.
+ "message": "A String", # A human-readable description of the error.
+ "reason": "A String", # A short error code that summarizes the error.
"location": "A String", # Specifies where the error occurred, if present.
},
},
@@ -322,6 +328,8 @@
"outputBytes": "A String", # [Output-only] Size of the loaded data in bytes. Note that while an import job is in the running state, this value may change.
},
"query": { # [Output-only] Statistics for a query job.
+ "completionRatio": 3.14, # [Output-Only] Approximate fraction of data processed for this query. This will be 1.0 unless min_completion_ratio for the query was set to something other than 1.0.
+ "cacheHit": True or False, # [Output-only] Whether the query result was fetched from the query cache.
"totalBytesProcessed": "A String", # [Output-only] Total bytes processed for this job.
},
"endTime": "A String", # [Output-only] End time of this job, in milliseconds since the epoch.
@@ -345,6 +353,7 @@
},
"writeDisposition": "A String", # [Optional] Specifies the action that occurs if the destination table already exists. Each action is atomic and only occurs if BigQuery is able to fully load the data and the load job completes without error. The following values are supported: WRITE_TRUNCATE: If the table already exists, BigQuery overwrites the table. WRITE_APPEND: If the table already exists, BigQuery appends the data to the table. WRITE_EMPTY: If the table already exists, a 'duplicate' error is returned in the job result. Creation, truncation and append actions occur as one atomic update upon job completion.
"maxBadRecords": 42, # [Optional] The maximum number of bad records that BigQuery can ignore when running the job. If the number of bad records exceeds this value, an 'invalid' error is returned in the job result and the job fails. The default value is 0, which requires that all records are valid.
+ "allowJaggedRows": True or False, # [Optional] Accept rows that are missing trailing optional columns. The missing values are treated as nulls. Default is false which treats short rows as errors. Only applicable to CSV, ignored for other formats.
"skipLeadingRows": 42, # [Optional] The number of rows at the top of a CSV file that BigQuery will skip when loading the data. The default value is 0. This property is useful if you have header rows in the file that should be skipped.
"sourceUris": [ # [Required] The fully-qualified URIs that point to your data on Google Cloud Storage.
"A String",
@@ -360,13 +369,14 @@
"fields": [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
# Object with schema name: TableFieldSchema
],
- "type": "A String", # [Required] The field data type. Possible values include STRING, INTEGER, FLOAT, BOOLEAN, TIMESTAMP or RECORD (where RECORD indicates a nested schema).
+ "type": "A String", # [Required] The field data type. Possible values include STRING, INTEGER, FLOAT, BOOLEAN, TIMESTAMP or RECORD (where RECORD indicates that the field contains a nested schema).
"mode": "A String", # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
"name": "A String", # [Required] The field name.
},
],
},
},
+ "dryRun": True or False, # [Optional] If set, don't actually run this job. A valid query will return a mostly empty response with some processing statistics, while an invalid query will return the same error it would if it wasn't a dry run. Behavior of non-query jobs is undefined.
"link": { # [Pick one] Configures a link job.
"createDisposition": "A String", # [Optional] Whether or not to create a new table, if none exists.
"writeDisposition": "A String", # [Optional] Whether to overwrite an existing table (WRITE_TRUNCATE), append to an existing table (WRITE_APPEND), or require that the the table is empty (WRITE_EMPTY). Default is WRITE_APPEND.
@@ -380,6 +390,7 @@
],
},
"query": { # [Pick one] Configures a query job.
+ "useQueryCache": True or False, # [Optional] Whether to look for the result in the query cache. The query cache is a best-effort cache that will be flushed whenever tables in the query are modified. Moreover, the query cache is only available when a query does not have a destination table specified.
"defaultDataset": { # [Optional] Specifies the default dataset to assume for unqualified table names in the query.
"projectId": "A String", # [Optional] The ID of the container project.
"datasetId": "A String", # [Required] A unique ID for this dataset, without the project name.
@@ -392,8 +403,9 @@
"priority": "A String", # [Optional] Specifies a priority for the query. Default is INTERACTIVE. Alternative is BATCH.
"writeDisposition": "A String", # [Optional] Whether to overwrite an existing table (WRITE_TRUNCATE), append to an existing table (WRITE_APPEND), or require that the the table is empty (WRITE_EMPTY). Default is WRITE_EMPTY.
"allowLargeResults": True or False, # [Experimental] If true, allows >128M results to be materialized in the destination table. Requires destination_table to be set.
- "createDisposition": "A String", # [Optional] Whether to create the table if it doesn't already exist (CREATE_IF_NEEDED) or to require the table already exist (CREATE_NEVER). Default is CREATE_IF_NEEDED.
"query": "A String", # [Required] BigQuery SQL query to execute.
+ "createDisposition": "A String", # [Optional] Whether to create the table if it doesn't already exist (CREATE_IF_NEEDED) or to require the table already exist (CREATE_NEVER). Default is CREATE_IF_NEEDED.
+ "minCompletionRatio": 3.14, # [Experimental] Specifies the the minimum fraction of data that must be scanned before a query returns. This should be specified as a value between 0.0 and 1.0 inclusive. The default value is 1.0.
"preserveNulls": True or False, # [Experimental] If set, preserve null values in table data, rather than mapping null values to the column's default value. This flag currently defaults to false, but the default will soon be changed to true. Shortly afterward, this flag will be removed completely. Please specify true if possible, and false only if you need to force the old behavior while updating client code.
},
"copy": { # [Pick one] Copies a table.
@@ -421,9 +433,6 @@
},
"fieldDelimiter": "A String", # [Optional] Delimiter to use between fields in the exported data. Default is ','
},
- "properties": { # [Optional] Properties providing extra details about how the job should be run. Not used for most jobs.
- "a_key": "A String", # Key-value property pairs.
- },
},
"id": "A String", # [Output-only] Opaque ID field of the job
"selfLink": "A String", # [Output-only] A URL that can be used to access this resource again.
@@ -439,16 +448,16 @@
"state": "A String", # [Output-only] Running state of the job.
"errors": [ # [Output-only] All errors encountered during the running of the job. Errors here do not necessarily mean that the job has completed or was unsuccessful.
{
- "debugInfo": "A String", # Debugging information for the service, if present. Should be ignored.
- "message": "A String", # A human readable explanation of the error.
- "reason": "A String", # Specifies the error reason. For example, reason will be "required" or "invalid" if some field was missing or malformed.
+ "debugInfo": "A String", # Debugging information. This property is internal to Google and should not be used.
+ "message": "A String", # A human-readable description of the error.
+ "reason": "A String", # A short error code that summarizes the error.
"location": "A String", # Specifies where the error occurred, if present.
},
],
"errorResult": { # [Output-only] Final error result of the job. If present, indicates that the job has completed and was unsuccessful.
- "debugInfo": "A String", # Debugging information for the service, if present. Should be ignored.
- "message": "A String", # A human readable explanation of the error.
- "reason": "A String", # Specifies the error reason. For example, reason will be "required" or "invalid" if some field was missing or malformed.
+ "debugInfo": "A String", # Debugging information. This property is internal to Google and should not be used.
+ "message": "A String", # A human-readable description of the error.
+ "reason": "A String", # A short error code that summarizes the error.
"location": "A String", # Specifies where the error occurred, if present.
},
},
@@ -461,6 +470,8 @@
"outputBytes": "A String", # [Output-only] Size of the loaded data in bytes. Note that while an import job is in the running state, this value may change.
},
"query": { # [Output-only] Statistics for a query job.
+ "completionRatio": 3.14, # [Output-Only] Approximate fraction of data processed for this query. This will be 1.0 unless min_completion_ratio for the query was set to something other than 1.0.
+ "cacheHit": True or False, # [Output-only] Whether the query result was fetched from the query cache.
"totalBytesProcessed": "A String", # [Output-only] Total bytes processed for this job.
},
"endTime": "A String", # [Output-only] End time of this job, in milliseconds since the epoch.
@@ -484,6 +495,7 @@
},
"writeDisposition": "A String", # [Optional] Specifies the action that occurs if the destination table already exists. Each action is atomic and only occurs if BigQuery is able to fully load the data and the load job completes without error. The following values are supported: WRITE_TRUNCATE: If the table already exists, BigQuery overwrites the table. WRITE_APPEND: If the table already exists, BigQuery appends the data to the table. WRITE_EMPTY: If the table already exists, a 'duplicate' error is returned in the job result. Creation, truncation and append actions occur as one atomic update upon job completion.
"maxBadRecords": 42, # [Optional] The maximum number of bad records that BigQuery can ignore when running the job. If the number of bad records exceeds this value, an 'invalid' error is returned in the job result and the job fails. The default value is 0, which requires that all records are valid.
+ "allowJaggedRows": True or False, # [Optional] Accept rows that are missing trailing optional columns. The missing values are treated as nulls. Default is false which treats short rows as errors. Only applicable to CSV, ignored for other formats.
"skipLeadingRows": 42, # [Optional] The number of rows at the top of a CSV file that BigQuery will skip when loading the data. The default value is 0. This property is useful if you have header rows in the file that should be skipped.
"sourceUris": [ # [Required] The fully-qualified URIs that point to your data on Google Cloud Storage.
"A String",
@@ -499,13 +511,14 @@
"fields": [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
# Object with schema name: TableFieldSchema
],
- "type": "A String", # [Required] The field data type. Possible values include STRING, INTEGER, FLOAT, BOOLEAN, TIMESTAMP or RECORD (where RECORD indicates a nested schema).
+ "type": "A String", # [Required] The field data type. Possible values include STRING, INTEGER, FLOAT, BOOLEAN, TIMESTAMP or RECORD (where RECORD indicates that the field contains a nested schema).
"mode": "A String", # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
"name": "A String", # [Required] The field name.
},
],
},
},
+ "dryRun": True or False, # [Optional] If set, don't actually run this job. A valid query will return a mostly empty response with some processing statistics, while an invalid query will return the same error it would if it wasn't a dry run. Behavior of non-query jobs is undefined.
"link": { # [Pick one] Configures a link job.
"createDisposition": "A String", # [Optional] Whether or not to create a new table, if none exists.
"writeDisposition": "A String", # [Optional] Whether to overwrite an existing table (WRITE_TRUNCATE), append to an existing table (WRITE_APPEND), or require that the the table is empty (WRITE_EMPTY). Default is WRITE_APPEND.
@@ -519,6 +532,7 @@
],
},
"query": { # [Pick one] Configures a query job.
+ "useQueryCache": True or False, # [Optional] Whether to look for the result in the query cache. The query cache is a best-effort cache that will be flushed whenever tables in the query are modified. Moreover, the query cache is only available when a query does not have a destination table specified.
"defaultDataset": { # [Optional] Specifies the default dataset to assume for unqualified table names in the query.
"projectId": "A String", # [Optional] The ID of the container project.
"datasetId": "A String", # [Required] A unique ID for this dataset, without the project name.
@@ -531,8 +545,9 @@
"priority": "A String", # [Optional] Specifies a priority for the query. Default is INTERACTIVE. Alternative is BATCH.
"writeDisposition": "A String", # [Optional] Whether to overwrite an existing table (WRITE_TRUNCATE), append to an existing table (WRITE_APPEND), or require that the the table is empty (WRITE_EMPTY). Default is WRITE_EMPTY.
"allowLargeResults": True or False, # [Experimental] If true, allows >128M results to be materialized in the destination table. Requires destination_table to be set.
- "createDisposition": "A String", # [Optional] Whether to create the table if it doesn't already exist (CREATE_IF_NEEDED) or to require the table already exist (CREATE_NEVER). Default is CREATE_IF_NEEDED.
"query": "A String", # [Required] BigQuery SQL query to execute.
+ "createDisposition": "A String", # [Optional] Whether to create the table if it doesn't already exist (CREATE_IF_NEEDED) or to require the table already exist (CREATE_NEVER). Default is CREATE_IF_NEEDED.
+ "minCompletionRatio": 3.14, # [Experimental] Specifies the the minimum fraction of data that must be scanned before a query returns. This should be specified as a value between 0.0 and 1.0 inclusive. The default value is 1.0.
"preserveNulls": True or False, # [Experimental] If set, preserve null values in table data, rather than mapping null values to the column's default value. This flag currently defaults to false, but the default will soon be changed to true. Shortly afterward, this flag will be removed completely. Please specify true if possible, and false only if you need to force the old behavior while updating client code.
},
"copy": { # [Pick one] Copies a table.
@@ -560,9 +575,6 @@
},
"fieldDelimiter": "A String", # [Optional] Delimiter to use between fields in the exported data. Default is ','
},
- "properties": { # [Optional] Properties providing extra details about how the job should be run. Not used for most jobs.
- "a_key": "A String", # Key-value property pairs.
- },
},
"id": "A String", # [Output-only] Opaque ID field of the job
"selfLink": "A String", # [Output-only] A URL that can be used to access this resource again.
@@ -602,16 +614,16 @@
"state": "A String", # [Output-only] Running state of the job.
"errors": [ # [Output-only] All errors encountered during the running of the job. Errors here do not necessarily mean that the job has completed or was unsuccessful.
{
- "debugInfo": "A String", # Debugging information for the service, if present. Should be ignored.
- "message": "A String", # A human readable explanation of the error.
- "reason": "A String", # Specifies the error reason. For example, reason will be "required" or "invalid" if some field was missing or malformed.
+ "debugInfo": "A String", # Debugging information. This property is internal to Google and should not be used.
+ "message": "A String", # A human-readable description of the error.
+ "reason": "A String", # A short error code that summarizes the error.
"location": "A String", # Specifies where the error occurred, if present.
},
],
"errorResult": { # [Output-only] Final error result of the job. If present, indicates that the job has completed and was unsuccessful.
- "debugInfo": "A String", # Debugging information for the service, if present. Should be ignored.
- "message": "A String", # A human readable explanation of the error.
- "reason": "A String", # Specifies the error reason. For example, reason will be "required" or "invalid" if some field was missing or malformed.
+ "debugInfo": "A String", # Debugging information. This property is internal to Google and should not be used.
+ "message": "A String", # A human-readable description of the error.
+ "reason": "A String", # A short error code that summarizes the error.
"location": "A String", # Specifies where the error occurred, if present.
},
},
@@ -624,6 +636,8 @@
"outputBytes": "A String", # [Output-only] Size of the loaded data in bytes. Note that while an import job is in the running state, this value may change.
},
"query": { # [Output-only] Statistics for a query job.
+ "completionRatio": 3.14, # [Output-Only] Approximate fraction of data processed for this query. This will be 1.0 unless min_completion_ratio for the query was set to something other than 1.0.
+ "cacheHit": True or False, # [Output-only] Whether the query result was fetched from the query cache.
"totalBytesProcessed": "A String", # [Output-only] Total bytes processed for this job.
},
"endTime": "A String", # [Output-only] End time of this job, in milliseconds since the epoch.
@@ -647,6 +661,7 @@
},
"writeDisposition": "A String", # [Optional] Specifies the action that occurs if the destination table already exists. Each action is atomic and only occurs if BigQuery is able to fully load the data and the load job completes without error. The following values are supported: WRITE_TRUNCATE: If the table already exists, BigQuery overwrites the table. WRITE_APPEND: If the table already exists, BigQuery appends the data to the table. WRITE_EMPTY: If the table already exists, a 'duplicate' error is returned in the job result. Creation, truncation and append actions occur as one atomic update upon job completion.
"maxBadRecords": 42, # [Optional] The maximum number of bad records that BigQuery can ignore when running the job. If the number of bad records exceeds this value, an 'invalid' error is returned in the job result and the job fails. The default value is 0, which requires that all records are valid.
+ "allowJaggedRows": True or False, # [Optional] Accept rows that are missing trailing optional columns. The missing values are treated as nulls. Default is false which treats short rows as errors. Only applicable to CSV, ignored for other formats.
"skipLeadingRows": 42, # [Optional] The number of rows at the top of a CSV file that BigQuery will skip when loading the data. The default value is 0. This property is useful if you have header rows in the file that should be skipped.
"sourceUris": [ # [Required] The fully-qualified URIs that point to your data on Google Cloud Storage.
"A String",
@@ -662,13 +677,14 @@
"fields": [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
# Object with schema name: TableFieldSchema
],
- "type": "A String", # [Required] The field data type. Possible values include STRING, INTEGER, FLOAT, BOOLEAN, TIMESTAMP or RECORD (where RECORD indicates a nested schema).
+ "type": "A String", # [Required] The field data type. Possible values include STRING, INTEGER, FLOAT, BOOLEAN, TIMESTAMP or RECORD (where RECORD indicates that the field contains a nested schema).
"mode": "A String", # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
"name": "A String", # [Required] The field name.
},
],
},
},
+ "dryRun": True or False, # [Optional] If set, don't actually run this job. A valid query will return a mostly empty response with some processing statistics, while an invalid query will return the same error it would if it wasn't a dry run. Behavior of non-query jobs is undefined.
"link": { # [Pick one] Configures a link job.
"createDisposition": "A String", # [Optional] Whether or not to create a new table, if none exists.
"writeDisposition": "A String", # [Optional] Whether to overwrite an existing table (WRITE_TRUNCATE), append to an existing table (WRITE_APPEND), or require that the the table is empty (WRITE_EMPTY). Default is WRITE_APPEND.
@@ -682,6 +698,7 @@
],
},
"query": { # [Pick one] Configures a query job.
+ "useQueryCache": True or False, # [Optional] Whether to look for the result in the query cache. The query cache is a best-effort cache that will be flushed whenever tables in the query are modified. Moreover, the query cache is only available when a query does not have a destination table specified.
"defaultDataset": { # [Optional] Specifies the default dataset to assume for unqualified table names in the query.
"projectId": "A String", # [Optional] The ID of the container project.
"datasetId": "A String", # [Required] A unique ID for this dataset, without the project name.
@@ -694,8 +711,9 @@
"priority": "A String", # [Optional] Specifies a priority for the query. Default is INTERACTIVE. Alternative is BATCH.
"writeDisposition": "A String", # [Optional] Whether to overwrite an existing table (WRITE_TRUNCATE), append to an existing table (WRITE_APPEND), or require that the the table is empty (WRITE_EMPTY). Default is WRITE_EMPTY.
"allowLargeResults": True or False, # [Experimental] If true, allows >128M results to be materialized in the destination table. Requires destination_table to be set.
- "createDisposition": "A String", # [Optional] Whether to create the table if it doesn't already exist (CREATE_IF_NEEDED) or to require the table already exist (CREATE_NEVER). Default is CREATE_IF_NEEDED.
"query": "A String", # [Required] BigQuery SQL query to execute.
+ "createDisposition": "A String", # [Optional] Whether to create the table if it doesn't already exist (CREATE_IF_NEEDED) or to require the table already exist (CREATE_NEVER). Default is CREATE_IF_NEEDED.
+ "minCompletionRatio": 3.14, # [Experimental] Specifies the the minimum fraction of data that must be scanned before a query returns. This should be specified as a value between 0.0 and 1.0 inclusive. The default value is 1.0.
"preserveNulls": True or False, # [Experimental] If set, preserve null values in table data, rather than mapping null values to the column's default value. This flag currently defaults to false, but the default will soon be changed to true. Shortly afterward, this flag will be removed completely. Please specify true if possible, and false only if you need to force the old behavior while updating client code.
},
"copy": { # [Pick one] Copies a table.
@@ -723,15 +741,12 @@
},
"fieldDelimiter": "A String", # [Optional] Delimiter to use between fields in the exported data. Default is ','
},
- "properties": { # [Optional] Properties providing extra details about how the job should be run. Not used for most jobs.
- "a_key": "A String", # Key-value property pairs.
- },
},
"id": "A String", # Unique opaque ID of the job.
"errorResult": { # A result object that will be present only if the job has failed.
- "debugInfo": "A String", # Debugging information for the service, if present. Should be ignored.
- "message": "A String", # A human readable explanation of the error.
- "reason": "A String", # Specifies the error reason. For example, reason will be "required" or "invalid" if some field was missing or malformed.
+ "debugInfo": "A String", # Debugging information. This property is internal to Google and should not be used.
+ "message": "A String", # A human-readable description of the error.
+ "reason": "A String", # A short error code that summarizes the error.
"location": "A String", # Specifies where the error occurred, if present.
},
},
@@ -766,12 +781,14 @@
"timeoutMs": 42, # [Optional] How long to wait for the query to complete, in milliseconds, before returning. Default is to return immediately. If the timeout passes before the job completes, the request will fail with a TIMEOUT error.
"kind": "bigquery#queryRequest", # The resource type of the request.
"dryRun": True or False, # [Optional] If set, don't actually run the query. A valid query will return an empty response, while an invalid query will return the same error it would if it wasn't a dry run.
+ "useQueryCache": True or False, # [Optional] Whether to look for the result in the query cache. The query cache is a best-effort cache that will be flushed whenever tables in the query are modified.
"defaultDataset": { # [Optional] Specifies the default datasetId and projectId to assume for any unqualified table names in the query. If not set, all table names in the query string must be fully-qualified in the format projectId:datasetId.tableid.
"projectId": "A String", # [Optional] The ID of the container project.
"datasetId": "A String", # [Required] A unique ID for this dataset, without the project name.
},
"maxResults": 42, # [Optional] The maximum number of results to return per page of results. If the response list exceeds the maximum response size for a single response, you will have to page through the results. Default is to return the maximum response size.
"query": "A String", # [Required] A query string, following the BigQuery query syntax of the query to execute. Table names should be qualified by dataset name in the format projectId:datasetId.tableId unless you specify the defaultDataset value. If the table is in the same project as the job, you can omit the project ID. Example: SELECT f1 FROM myProjectId:myDatasetId.myTableId.
+ "minCompletionRatio": 3.14, # [Experimental] Specifies the the minimum fraction of data that must be scanned before a query returns. This should be specified as a value between 0.0 and 1.0 inclusive. The default value is 1.0.
"preserveNulls": True or False, # [Experimental] If set, preserve null values in table data, rather than mapping null values to the column's default value. This flag currently defaults to false, but the default will soon be changed to true. Shortly afterward, this flag will be removed completely. Please specify true if possible, and false only if you need to force the old behavior while updating client code.
}
@@ -784,7 +801,7 @@
"rows": [ # An object with as many results as can be contained within the maximum permitted reply size. To get any additional rows, you can call GetQueryResults and specify the jobReference returned above.
{ # Represents a single row in the result set, consisting of one or more fields.
"f": [
- { # Represents a single cell in the result set.
+ { # Represents a single cell in the result set. Users of the java client can detect whether their value result is null by calling 'com.google.api.client.util.Data.isNull(cell.getV())'.
"v": "",
},
],
@@ -794,15 +811,18 @@
"projectId": "A String", # [Required] Project ID being billed for the job.
"jobId": "A String", # [Required] ID of the job.
},
+ "pageToken": "A String", # A token used for paging results.
"jobComplete": True or False, # Whether the query has completed or not. If rows or totalRows are present, this will always be true. If this is false, totalRows will not be available.
"totalRows": "A String", # The total number of rows in the complete query result set, which can be more than the number of rows in this single page of results.
+ "totalBytesProcessed": "A String", # The total number of bytes processed for this query. If this query was a dry run, this is the number of bytes that would be processed if the query were run.
+ "cacheHit": True or False, # Whether the query result was fetched from the query cache.
"schema": { # The schema of the results. Present only when the query completes successfully.
"fields": [ # Describes the fields in a table.
{
"fields": [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
# Object with schema name: TableFieldSchema
],
- "type": "A String", # [Required] The field data type. Possible values include STRING, INTEGER, FLOAT, BOOLEAN, TIMESTAMP or RECORD (where RECORD indicates a nested schema).
+ "type": "A String", # [Required] The field data type. Possible values include STRING, INTEGER, FLOAT, BOOLEAN, TIMESTAMP or RECORD (where RECORD indicates that the field contains a nested schema).
"mode": "A String", # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
"name": "A String", # [Required] The field name.
},
diff --git a/docs/dyn/bigquery_v2.projects.html b/docs/dyn/bigquery_v2.projects.html
index 2f06826..df10a23 100644
--- a/docs/dyn/bigquery_v2.projects.html
+++ b/docs/dyn/bigquery_v2.projects.html
@@ -101,6 +101,7 @@
{
"friendlyName": "A String", # A descriptive name for this project.
"kind": "bigquery#project", # The resource type.
+ "numericId": "A String", # The numeric ID of this project.
"id": "A String", # An opaque ID of this project.
"projectReference": { # A unique reference to this project.
"projectId": "A String", # [Required] ID of the project. Can be either the numeric ID or the assigned ID of the project.
diff --git a/docs/dyn/bigquery_v2.tabledata.html b/docs/dyn/bigquery_v2.tabledata.html
index a1e3323..d63b287 100644
--- a/docs/dyn/bigquery_v2.tabledata.html
+++ b/docs/dyn/bigquery_v2.tabledata.html
@@ -100,7 +100,7 @@
"rows": [ # Rows of results.
{ # Represents a single row in the result set, consisting of one or more fields.
"f": [
- { # Represents a single cell in the result set.
+ { # Represents a single cell in the result set. Users of the java client can detect whether their value result is null by calling 'com.google.api.client.util.Data.isNull(cell.getV())'.
"v": "",
},
],
diff --git a/docs/dyn/bigquery_v2.tables.html b/docs/dyn/bigquery_v2.tables.html
index ac288cc..c3248fe 100644
--- a/docs/dyn/bigquery_v2.tables.html
+++ b/docs/dyn/bigquery_v2.tables.html
@@ -142,7 +142,7 @@
"fields": [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
# Object with schema name: TableFieldSchema
],
- "type": "A String", # [Required] The field data type. Possible values include STRING, INTEGER, FLOAT, BOOLEAN, TIMESTAMP or RECORD (where RECORD indicates a nested schema).
+ "type": "A String", # [Required] The field data type. Possible values include STRING, INTEGER, FLOAT, BOOLEAN, TIMESTAMP or RECORD (where RECORD indicates that the field contains a nested schema).
"mode": "A String", # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
"name": "A String", # [Required] The field name.
},
@@ -184,7 +184,7 @@
"fields": [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
# Object with schema name: TableFieldSchema
],
- "type": "A String", # [Required] The field data type. Possible values include STRING, INTEGER, FLOAT, BOOLEAN, TIMESTAMP or RECORD (where RECORD indicates a nested schema).
+ "type": "A String", # [Required] The field data type. Possible values include STRING, INTEGER, FLOAT, BOOLEAN, TIMESTAMP or RECORD (where RECORD indicates that the field contains a nested schema).
"mode": "A String", # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
"name": "A String", # [Required] The field name.
},
@@ -219,7 +219,7 @@
"fields": [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
# Object with schema name: TableFieldSchema
],
- "type": "A String", # [Required] The field data type. Possible values include STRING, INTEGER, FLOAT, BOOLEAN, TIMESTAMP or RECORD (where RECORD indicates a nested schema).
+ "type": "A String", # [Required] The field data type. Possible values include STRING, INTEGER, FLOAT, BOOLEAN, TIMESTAMP or RECORD (where RECORD indicates that the field contains a nested schema).
"mode": "A String", # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
"name": "A String", # [Required] The field name.
},
@@ -309,7 +309,7 @@
"fields": [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
# Object with schema name: TableFieldSchema
],
- "type": "A String", # [Required] The field data type. Possible values include STRING, INTEGER, FLOAT, BOOLEAN, TIMESTAMP or RECORD (where RECORD indicates a nested schema).
+ "type": "A String", # [Required] The field data type. Possible values include STRING, INTEGER, FLOAT, BOOLEAN, TIMESTAMP or RECORD (where RECORD indicates that the field contains a nested schema).
"mode": "A String", # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
"name": "A String", # [Required] The field name.
},
@@ -344,7 +344,7 @@
"fields": [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
# Object with schema name: TableFieldSchema
],
- "type": "A String", # [Required] The field data type. Possible values include STRING, INTEGER, FLOAT, BOOLEAN, TIMESTAMP or RECORD (where RECORD indicates a nested schema).
+ "type": "A String", # [Required] The field data type. Possible values include STRING, INTEGER, FLOAT, BOOLEAN, TIMESTAMP or RECORD (where RECORD indicates that the field contains a nested schema).
"mode": "A String", # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
"name": "A String", # [Required] The field name.
},
@@ -387,7 +387,7 @@
"fields": [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
# Object with schema name: TableFieldSchema
],
- "type": "A String", # [Required] The field data type. Possible values include STRING, INTEGER, FLOAT, BOOLEAN, TIMESTAMP or RECORD (where RECORD indicates a nested schema).
+ "type": "A String", # [Required] The field data type. Possible values include STRING, INTEGER, FLOAT, BOOLEAN, TIMESTAMP or RECORD (where RECORD indicates that the field contains a nested schema).
"mode": "A String", # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
"name": "A String", # [Required] The field name.
},
@@ -422,7 +422,7 @@
"fields": [ # [Optional] Describes the nested schema fields if the type property is set to RECORD.
# Object with schema name: TableFieldSchema
],
- "type": "A String", # [Required] The field data type. Possible values include STRING, INTEGER, FLOAT, BOOLEAN, TIMESTAMP or RECORD (where RECORD indicates a nested schema).
+ "type": "A String", # [Required] The field data type. Possible values include STRING, INTEGER, FLOAT, BOOLEAN, TIMESTAMP or RECORD (where RECORD indicates that the field contains a nested schema).
"mode": "A String", # [Optional] The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.
"name": "A String", # [Required] The field name.
},
diff --git a/docs/dyn/blogger_v3.blogUserInfos.html b/docs/dyn/blogger_v3.blogUserInfos.html
new file mode 100644
index 0000000..e8a58ec
--- /dev/null
+++ b/docs/dyn/blogger_v3.blogUserInfos.html
@@ -0,0 +1,192 @@
+<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="blogger_v3.html">Blogger API</a> . <a href="blogger_v3.blogUserInfos.html">blogUserInfos</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#get">get(userId, blogId, maxPosts=None)</a></code></p>
+<p class="firstline">Gets one blog and user info pair by blogId and userId.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="get">get(userId, blogId, maxPosts=None)</code>
+ <pre>Gets one blog and user info pair by blogId and userId.
+
+Args:
+ userId: string, ID of the user whose blogs are to be fetched. Either the word 'self' (sans quote marks) or the user's profile identifier. (required)
+ blogId: string, The ID of the blog to get. (required)
+ maxPosts: integer, Maximum number of posts to pull back with the blog.
+
+Returns:
+ An object of the form:
+
+ {
+ "blog": {
+ "kind": "blogger#blog", # The kind of this entry. Always blogger#blog
+ "description": "A String", # The description of this blog. This is displayed underneath the title.
+ "locale": { # The locale this Blog is set to.
+ "country": "A String", # The country this blog's locale is set to.
+ "variant": "A String", # The language variant this blog is authored in.
+ "language": "A String", # The language this blog is authored in.
+ },
+ "posts": { # The container of posts in this blog.
+ "totalItems": 42, # The count of posts in this blog.
+ "items": [ # The List of Posts for this Blog.
+ {
+ "content": "A String", # The content of the Post. May contain HTML markup.
+ "kind": "blogger#post", # The kind of this entity. Always blogger#post
+ "author": { # The author of this Post.
+ "url": "A String", # The URL of the Post creator's Profile page.
+ "image": { # The Post author's avatar.
+ "url": "A String", # The Post author's avatar URL.
+ },
+ "displayName": "A String", # The display name.
+ "id": "A String", # The identifier of the Post creator.
+ },
+ "replies": { # The container of comments on this Post.
+ "totalItems": "A String", # The count of comments on this post.
+ "items": [ # The List of Comments for this Post.
+ {
+ "content": "A String", # The actual content of the comment. May include HTML markup.
+ "kind": "blogger#comment", # The kind of this entry. Always blogger#comment
+ "inReplyTo": { # Data about the comment this is in reply to.
+ "id": "A String", # The identified of the parent of this comment.
+ },
+ "author": { # The author of this Comment.
+ "url": "A String", # The URL of the Comment creator's Profile page.
+ "image": { # The comment creator's avatar.
+ "url": "A String", # The comment creator's avatar URL.
+ },
+ "displayName": "A String", # The display name.
+ "id": "A String", # The identifier of the Comment creator.
+ },
+ "updated": "A String", # RFC 3339 date-time when this comment was last updated.
+ "blog": { # Data about the blog containing this comment.
+ "id": "A String", # The identifier of the blog containing this comment.
+ },
+ "published": "A String", # RFC 3339 date-time when this comment was published.
+ "post": { # Data about the post containing this comment.
+ "id": "A String", # The identifier of the post containing this comment.
+ },
+ "id": "A String", # The identifier for this resource.
+ "selfLink": "A String", # The API REST URL to fetch this resource from.
+ },
+ ],
+ "selfLink": "A String", # The URL of the comments on this post.
+ },
+ "labels": [ # The list of labels this Post was tagged with.
+ "A String",
+ ],
+ "customMetaData": "A String", # The JSON meta-data for the Post.
+ "updated": "A String", # RFC 3339 date-time when this Post was last updated.
+ "blog": { # Data about the blog containing this Post.
+ "id": "A String", # The identifier of the Blog that contains this Post.
+ },
+ "url": "A String", # The URL where this Post is displayed.
+ "location": { # The location for geotagged posts.
+ "lat": 3.14, # Location's latitude.
+ "lng": 3.14, # Location's longitude.
+ "span": "A String", # Location's viewport span. Can be used when rendering a map preview.
+ "name": "A String", # Location name.
+ },
+ "published": "A String", # RFC 3339 date-time when this Post was published.
+ "title": "A String", # The title of the Post.
+ "id": "A String", # The identifier of this Post.
+ "selfLink": "A String", # The API REST URL to fetch this resource from.
+ },
+ ],
+ "selfLink": "A String", # The URL of the container for posts in this blog.
+ },
+ "customMetaData": "A String", # The JSON custom meta-data for the Blog
+ "updated": "A String", # RFC 3339 date-time when this blog was last updated.
+ "pages": { # The container of pages in this blog.
+ "totalItems": 42, # The count of pages in this blog.
+ "selfLink": "A String", # The URL of the container for pages in this blog.
+ },
+ "url": "A String", # The URL where this blog is published.
+ "published": "A String", # RFC 3339 date-time when this blog was published.
+ "id": "A String", # The identifier for this resource.
+ "selfLink": "A String", # The API REST URL to fetch this resource from.
+ "name": "A String", # The name of this blog. This is displayed as the title.
+ },
+ "kind": "blogger#blogUserInfo",
+ "user": {
+ "kind": "blogger#blogPerUserInfo",
+ "userId": "A String",
+ "blogId": "A String",
+ "photosAlbumKey": "A String",
+ },
+ }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/blogger_v3.html b/docs/dyn/blogger_v3.html
index 7389cb1..e0b84e2 100644
--- a/docs/dyn/blogger_v3.html
+++ b/docs/dyn/blogger_v3.html
@@ -75,6 +75,11 @@
<h1><a href="blogger_v3.html">Blogger API</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
+ <code><a href="blogger_v3.blogUserInfos.html">blogUserInfos()</a></code>
+</p>
+<p class="firstline">Returns the blogUserInfos Resource.</p>
+
+<p class="toc_element">
<code><a href="blogger_v3.blogs.html">blogs()</a></code>
</p>
<p class="firstline">Returns the blogs Resource.</p>
diff --git a/docs/dyn/blogger_v3.posts.html b/docs/dyn/blogger_v3.posts.html
index 631a466..57f0d64 100644
--- a/docs/dyn/blogger_v3.posts.html
+++ b/docs/dyn/blogger_v3.posts.html
@@ -269,7 +269,7 @@
<pre>Add a post.
Args:
- blogId: string, ID of the blog to fetch the post from. (required)
+ blogId: string, ID of the blog to add the post to. (required)
body: object, The request body. (required)
The object takes the form of:
diff --git a/docs/dyn/books_v1.bookshelves.volumes.html b/docs/dyn/books_v1.bookshelves.volumes.html
index a5a30aa..cea2756 100644
--- a/docs/dyn/books_v1.bookshelves.volumes.html
+++ b/docs/dyn/books_v1.bookshelves.volumes.html
@@ -142,7 +142,24 @@
"currencyCode": "A String", # An ISO 4217, three-letter currency code. (In LITE projection.)
},
"isEbook": True or False, # Whether or not this volume is an eBook (can be added to the My eBooks shelf).
- "saleability": "A String", # Whether or not this book is available for sale or offered for free in the Google eBookstore for the country listed above. Possible values are FOR_SALE, FREE, NOT_FOR_SALE, or FOR_PREORDER.
+ "offers": [ # Offers available for this volume (sales and rentals).
+ {
+ "rentalDuration": { # The rental duration (for rental offers only).
+ "count": 3.14,
+ "unit": "A String",
+ },
+ "retailPrice": { # Offer retail (=discounted) price in Micros
+ "currencyCode": "A String",
+ "amountInMicros": 3.14,
+ },
+ "listPrice": { # Offer list (=undiscounted) price in Micros.
+ "currencyCode": "A String",
+ "amountInMicros": 3.14,
+ },
+ "finskyOfferType": 42, # The finsky offer type (e.g., PURCHASE=0 RENTAL=3)
+ },
+ ],
+ "saleability": "A String", # Whether or not this book is available for sale or offered for free in the Google eBookstore for the country listed above. Possible values are FOR_SALE, FOR_RENTAL_ONLY, FOR_SALE_AND_RENTAL, FREE, NOT_FOR_SALE, or FOR_PREORDER.
"buyLink": "A String", # URL to purchase this volume on the Google Books site. (In LITE projection)
"onSaleDate": "A String", # The date on which this book is available for sale.
"listPrice": { # Suggested retail price. (In LITE projection.)
@@ -208,7 +225,25 @@
},
"userInfo": { # User specific information related to this volume. (e.g. page this user last read or whether they purchased this book)
"isInMyBooks": True or False, # Whether or not this volume is currently in "my books."
+ "rentalPeriod": { # Period during this book is/was a valid rental.
+ "startUtcSec": "A String",
+ "endUtcSec": "A String",
+ },
"updated": "A String", # Timestamp when this volume was last modified by a user action, such as a reading position update, volume purchase or writing a review. (RFC 3339 UTC date-time format).
+ "userUploadedVolumeInfo": {
+ "processingState": "A String",
+ },
+ "rentalState": "A String", # Whether this book is an active or an expired rental.
+ "isPurchased": True or False, # Whether or not this volume was purchased by the authenticated user making the request. (In LITE projection.)
+ "readingPosition": { # The user's current reading position in the volume, if one is available. (In LITE projection.)
+ "kind": "books#readingPosition", # Resource type for a reading position.
+ "gbImagePosition": "A String", # Position in a volume for image-based content.
+ "epubCfiPosition": "A String", # Position in an EPUB as a CFI.
+ "updated": "A String", # Timestamp when this reading position was last updated (formatted UTC timestamp with millisecond resolution).
+ "volumeId": "A String", # Volume id associated with this reading position.
+ "pdfPosition": "A String", # Position in a PDF file.
+ "gbTextPosition": "A String", # Position in a volume for text-based content.
+ },
"review": { # This user's review of this volume, if one exists.
"rating": "A String", # Star rating for this review. Possible values are ONE, TWO, THREE, FOUR, FIVE or NOT_RATED.
"kind": "books#review", # Resource type for a review.
@@ -227,17 +262,14 @@
"type": "A String", # Source type for this review. Possible values are EDITORIAL, WEB_USER or GOOGLE_USER.
"fullTextUrl": "A String", # URL for the full review text, for reviews gathered from the web.
},
- "isPurchased": True or False, # Whether or not this volume was purchased by the authenticated user making the request. (In LITE projection.)
- "readingPosition": { # The user's current reading position in the volume, if one is available. (In LITE projection.)
- "kind": "books#readingPosition", # Resource type for a reading position.
- "gbImagePosition": "A String", # Position in a volume for image-based content.
- "epubCfiPosition": "A String", # Position in an EPUB as a CFI.
- "updated": "A String", # Timestamp when this reading position was last updated (formatted UTC timestamp with millisecond resolution).
- "volumeId": "A String", # Volume id associated with this reading position.
- "pdfPosition": "A String", # Position in a PDF file.
- "gbTextPosition": "A String", # Position in a volume for text-based content.
- },
"isPreordered": True or False, # Whether or not this volume was pre-ordered by the authenticated user making the request. (In LITE projection.)
+ "copy": { # Copy/Paste accounting information.
+ "limitType": "A String",
+ "remainingCharacterCount": 42,
+ "updated": "A String",
+ "allowedCharacterCount": 42,
+ },
+ "isUploaded": True or False, # Whether or not this volume was user uploaded.
},
},
],
diff --git a/docs/dyn/books_v1.cloudloading.html b/docs/dyn/books_v1.cloudloading.html
new file mode 100644
index 0000000..7ab41fb
--- /dev/null
+++ b/docs/dyn/books_v1.cloudloading.html
@@ -0,0 +1,144 @@
+<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="books_v1.html">Books API</a> . <a href="books_v1.cloudloading.html">cloudloading</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#addBook">addBook(upload_client_token=None, name=None, drive_document_id=None, mime_type=None)</a></code></p>
+<p class="firstline"></p>
+<p class="toc_element">
+ <code><a href="#deleteBook">deleteBook(volumeId)</a></code></p>
+<p class="firstline">Remove the book and its contents</p>
+<p class="toc_element">
+ <code><a href="#updateBook">updateBook(body)</a></code></p>
+<p class="firstline"></p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="addBook">addBook(upload_client_token=None, name=None, drive_document_id=None, mime_type=None)</code>
+ <pre>
+
+Args:
+ upload_client_token: string, A parameter
+ name: string, The document name. It can be set only if the drive_document_id is set.
+ drive_document_id: string, A drive document id. The upload_client_token must not be set.
+ mime_type: string, The document MIME type. It can be set only if the drive_document_id is set.
+
+Returns:
+ An object of the form:
+
+ {
+ "title": "A String",
+ "processingState": "A String",
+ "volumeId": "A String",
+ "author": "A String",
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="deleteBook">deleteBook(volumeId)</code>
+ <pre>Remove the book and its contents
+
+Args:
+ volumeId: string, The id of the book to be removed. (required)
+</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="updateBook">updateBook(body)</code>
+ <pre>
+
+Args:
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{
+ "title": "A String",
+ "processingState": "A String",
+ "volumeId": "A String",
+ "author": "A String",
+}
+
+
+Returns:
+ An object of the form:
+
+ {
+ "title": "A String",
+ "processingState": "A String",
+ "volumeId": "A String",
+ "author": "A String",
+ }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/books_v1.html b/docs/dyn/books_v1.html
index af94b97..4adb450 100644
--- a/docs/dyn/books_v1.html
+++ b/docs/dyn/books_v1.html
@@ -80,6 +80,11 @@
<p class="firstline">Returns the bookshelves Resource.</p>
<p class="toc_element">
+ <code><a href="books_v1.cloudloading.html">cloudloading()</a></code>
+</p>
+<p class="firstline">Returns the cloudloading Resource.</p>
+
+<p class="toc_element">
<code><a href="books_v1.layers.html">layers()</a></code>
</p>
<p class="firstline">Returns the layers Resource.</p>
diff --git a/docs/dyn/books_v1.myconfig.html b/docs/dyn/books_v1.myconfig.html
index f81aacd..f5d3ab1 100644
--- a/docs/dyn/books_v1.myconfig.html
+++ b/docs/dyn/books_v1.myconfig.html
@@ -81,7 +81,7 @@
<code><a href="#requestAccess">requestAccess(source, volumeId, nonce, cpksver, locale=None)</a></code></p>
<p class="firstline">Request concurrent and download access restrictions.</p>
<p class="toc_element">
- <code><a href="#syncVolumeLicenses">syncVolumeLicenses(source, nonce, cpksver, locale=None, showPreorders=None, volumeIds=None)</a></code></p>
+ <code><a href="#syncVolumeLicenses">syncVolumeLicenses(source, nonce, cpksver, features=None, locale=None, showPreorders=None, volumeIds=None)</a></code></p>
<p class="firstline">Request downloaded content access for specified volumes on the My eBooks shelf.</p>
<h3>Method Details</h3>
<div class="method">
@@ -165,13 +165,16 @@
</div>
<div class="method">
- <code class="details" id="syncVolumeLicenses">syncVolumeLicenses(source, nonce, cpksver, locale=None, showPreorders=None, volumeIds=None)</code>
+ <code class="details" id="syncVolumeLicenses">syncVolumeLicenses(source, nonce, cpksver, features=None, locale=None, showPreorders=None, volumeIds=None)</code>
<pre>Request downloaded content access for specified volumes on the My eBooks shelf.
Args:
source: string, String to identify the originator of this request. (required)
nonce: string, The client nonce value. (required)
cpksver: string, The device/version ID from which to release the restriction. (required)
+ features: string, List of features supported by the client, i.e., 'RENTALS' (repeated)
+ Allowed values
+ RENTALS - Client supports rentals.
locale: string, ISO-639-1, ISO-3166-1 codes for message localization, i.e. en_US.
showPreorders: boolean, Set to true to show pre-ordered books. Defaults to false.
volumeIds: string, The volume(s) to request download restrictions for. (repeated)
@@ -228,7 +231,24 @@
"currencyCode": "A String", # An ISO 4217, three-letter currency code. (In LITE projection.)
},
"isEbook": True or False, # Whether or not this volume is an eBook (can be added to the My eBooks shelf).
- "saleability": "A String", # Whether or not this book is available for sale or offered for free in the Google eBookstore for the country listed above. Possible values are FOR_SALE, FREE, NOT_FOR_SALE, or FOR_PREORDER.
+ "offers": [ # Offers available for this volume (sales and rentals).
+ {
+ "rentalDuration": { # The rental duration (for rental offers only).
+ "count": 3.14,
+ "unit": "A String",
+ },
+ "retailPrice": { # Offer retail (=discounted) price in Micros
+ "currencyCode": "A String",
+ "amountInMicros": 3.14,
+ },
+ "listPrice": { # Offer list (=undiscounted) price in Micros.
+ "currencyCode": "A String",
+ "amountInMicros": 3.14,
+ },
+ "finskyOfferType": 42, # The finsky offer type (e.g., PURCHASE=0 RENTAL=3)
+ },
+ ],
+ "saleability": "A String", # Whether or not this book is available for sale or offered for free in the Google eBookstore for the country listed above. Possible values are FOR_SALE, FOR_RENTAL_ONLY, FOR_SALE_AND_RENTAL, FREE, NOT_FOR_SALE, or FOR_PREORDER.
"buyLink": "A String", # URL to purchase this volume on the Google Books site. (In LITE projection)
"onSaleDate": "A String", # The date on which this book is available for sale.
"listPrice": { # Suggested retail price. (In LITE projection.)
@@ -294,7 +314,25 @@
},
"userInfo": { # User specific information related to this volume. (e.g. page this user last read or whether they purchased this book)
"isInMyBooks": True or False, # Whether or not this volume is currently in "my books."
+ "rentalPeriod": { # Period during this book is/was a valid rental.
+ "startUtcSec": "A String",
+ "endUtcSec": "A String",
+ },
"updated": "A String", # Timestamp when this volume was last modified by a user action, such as a reading position update, volume purchase or writing a review. (RFC 3339 UTC date-time format).
+ "userUploadedVolumeInfo": {
+ "processingState": "A String",
+ },
+ "rentalState": "A String", # Whether this book is an active or an expired rental.
+ "isPurchased": True or False, # Whether or not this volume was purchased by the authenticated user making the request. (In LITE projection.)
+ "readingPosition": { # The user's current reading position in the volume, if one is available. (In LITE projection.)
+ "kind": "books#readingPosition", # Resource type for a reading position.
+ "gbImagePosition": "A String", # Position in a volume for image-based content.
+ "epubCfiPosition": "A String", # Position in an EPUB as a CFI.
+ "updated": "A String", # Timestamp when this reading position was last updated (formatted UTC timestamp with millisecond resolution).
+ "volumeId": "A String", # Volume id associated with this reading position.
+ "pdfPosition": "A String", # Position in a PDF file.
+ "gbTextPosition": "A String", # Position in a volume for text-based content.
+ },
"review": { # This user's review of this volume, if one exists.
"rating": "A String", # Star rating for this review. Possible values are ONE, TWO, THREE, FOUR, FIVE or NOT_RATED.
"kind": "books#review", # Resource type for a review.
@@ -313,17 +351,14 @@
"type": "A String", # Source type for this review. Possible values are EDITORIAL, WEB_USER or GOOGLE_USER.
"fullTextUrl": "A String", # URL for the full review text, for reviews gathered from the web.
},
- "isPurchased": True or False, # Whether or not this volume was purchased by the authenticated user making the request. (In LITE projection.)
- "readingPosition": { # The user's current reading position in the volume, if one is available. (In LITE projection.)
- "kind": "books#readingPosition", # Resource type for a reading position.
- "gbImagePosition": "A String", # Position in a volume for image-based content.
- "epubCfiPosition": "A String", # Position in an EPUB as a CFI.
- "updated": "A String", # Timestamp when this reading position was last updated (formatted UTC timestamp with millisecond resolution).
- "volumeId": "A String", # Volume id associated with this reading position.
- "pdfPosition": "A String", # Position in a PDF file.
- "gbTextPosition": "A String", # Position in a volume for text-based content.
- },
"isPreordered": True or False, # Whether or not this volume was pre-ordered by the authenticated user making the request. (In LITE projection.)
+ "copy": { # Copy/Paste accounting information.
+ "limitType": "A String",
+ "remainingCharacterCount": 42,
+ "updated": "A String",
+ "allowedCharacterCount": 42,
+ },
+ "isUploaded": True or False, # Whether or not this volume was user uploaded.
},
},
],
diff --git a/docs/dyn/books_v1.mylibrary.annotations.html b/docs/dyn/books_v1.mylibrary.annotations.html
index 69c36a7..b2da444 100644
--- a/docs/dyn/books_v1.mylibrary.annotations.html
+++ b/docs/dyn/books_v1.mylibrary.annotations.html
@@ -81,7 +81,7 @@
<code><a href="#get">get(annotationId, source=None)</a></code></p>
<p class="firstline">Gets an annotation by its ID.</p>
<p class="toc_element">
- <code><a href="#insert">insert(body, source=None)</a></code></p>
+ <code><a href="#insert">insert(body, source=None, showOnlySummaryInResponse=None)</a></code></p>
<p class="firstline">Inserts a new annotation.</p>
<p class="toc_element">
<code><a href="#list">list(pageToken=None, updatedMax=None, layerId=None, volumeId=None, maxResults=None, showDeleted=None, pageIds=None, contentVersion=None, source=None, updatedMin=None)</a></code></p>
@@ -90,6 +90,9 @@
<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="#summary">summary(layerIds, volumeId)</a></code></p>
+<p class="firstline">Gets the summary of specified layers.</p>
+<p class="toc_element">
<code><a href="#update">update(annotationId, body, source=None)</a></code></p>
<p class="firstline">Updates an existing annotation.</p>
<h3>Method Details</h3>
@@ -119,7 +122,7 @@
"updated": "A String", # Timestamp for the last time this annotation was modified.
"created": "A String", # Timestamp for the created time of this annotation.
"deleted": True or False, # Indicates that this annotation is deleted.
- "beforeSelectedText": "A String", # Anchor text before excerpt.
+ "beforeSelectedText": "A String", # Anchor text before excerpt. For requests, if the user bookmarked a screen that has no flowing text on it, then this field should be empty.
"currentVersionRanges": { # Selection ranges for the most recent content version.
"contentVersion": "A String", # Content version applicable to ranges below.
"gbTextRange": { # Range in GB text format for this annotation for version above.
@@ -134,6 +137,12 @@
"startOffset": "A String", # The offset from the starting position.
"endOffset": "A String", # The offset from the ending position.
},
+ "imageCfiRange": { # Range in image CFI format for this annotation for version above.
+ "startPosition": "A String", # The starting position for the range.
+ "endPosition": "A String", # The ending position for the range.
+ "startOffset": "A String", # The offset from the starting position.
+ "endOffset": "A String", # The offset from the ending position.
+ },
"gbImageRange": { # Range in GB image format for this annotation for version above.
"startPosition": "A String", # The starting position for the range.
"endPosition": "A String", # The ending position for the range.
@@ -141,7 +150,7 @@
"endOffset": "A String", # The offset from the ending position.
},
},
- "afterSelectedText": "A String", # Anchor text after excerpt.
+ "afterSelectedText": "A String", # Anchor text after excerpt. For requests, if the user bookmarked a screen that has no flowing text on it, then this field should be empty.
"clientVersionRanges": { # Selection ranges sent from the client.
"contentVersion": "A String", # Content version the client sent in.
"gbTextRange": { # Range in GB text format for this annotation sent by client.
@@ -156,6 +165,12 @@
"startOffset": "A String", # The offset from the starting position.
"endOffset": "A String", # The offset from the ending position.
},
+ "imageCfiRange": { # Range in image CFI format for this annotation sent by client.
+ "startPosition": "A String", # The starting position for the range.
+ "endPosition": "A String", # The ending position for the range.
+ "startOffset": "A String", # The offset from the starting position.
+ "endOffset": "A String", # The offset from the ending position.
+ },
"gbImageRange": { # Range in GB image format for this annotation sent by client.
"startPosition": "A String", # The starting position for the range.
"endPosition": "A String", # The ending position for the range.
@@ -163,6 +178,11 @@
"endOffset": "A String", # The offset from the ending position.
},
},
+ "layerSummary": {
+ "limitType": "A String", # Type of limitation on this layer. "limited" or "unlimited" for the "copy" layer.
+ "remainingCharacterCount": 42, # Remaining allowed characters on this layer, especially for the "copy" layer.
+ "allowedCharacterCount": 42, # Maximum allowed characters on this layer, especially for the "copy" layer.
+ },
"volumeId": "A String", # The volume that this annotation belongs to.
"pageIds": [ # Pages that this annotation spans.
"A String",
@@ -177,7 +197,7 @@
</div>
<div class="method">
- <code class="details" id="insert">insert(body, source=None)</code>
+ <code class="details" id="insert">insert(body, source=None, showOnlySummaryInResponse=None)</code>
<pre>Inserts a new annotation.
Args:
@@ -189,7 +209,7 @@
"updated": "A String", # Timestamp for the last time this annotation was modified.
"created": "A String", # Timestamp for the created time of this annotation.
"deleted": True or False, # Indicates that this annotation is deleted.
- "beforeSelectedText": "A String", # Anchor text before excerpt.
+ "beforeSelectedText": "A String", # Anchor text before excerpt. For requests, if the user bookmarked a screen that has no flowing text on it, then this field should be empty.
"currentVersionRanges": { # Selection ranges for the most recent content version.
"contentVersion": "A String", # Content version applicable to ranges below.
"gbTextRange": { # Range in GB text format for this annotation for version above.
@@ -204,6 +224,12 @@
"startOffset": "A String", # The offset from the starting position.
"endOffset": "A String", # The offset from the ending position.
},
+ "imageCfiRange": { # Range in image CFI format for this annotation for version above.
+ "startPosition": "A String", # The starting position for the range.
+ "endPosition": "A String", # The ending position for the range.
+ "startOffset": "A String", # The offset from the starting position.
+ "endOffset": "A String", # The offset from the ending position.
+ },
"gbImageRange": { # Range in GB image format for this annotation for version above.
"startPosition": "A String", # The starting position for the range.
"endPosition": "A String", # The ending position for the range.
@@ -211,7 +237,7 @@
"endOffset": "A String", # The offset from the ending position.
},
},
- "afterSelectedText": "A String", # Anchor text after excerpt.
+ "afterSelectedText": "A String", # Anchor text after excerpt. For requests, if the user bookmarked a screen that has no flowing text on it, then this field should be empty.
"clientVersionRanges": { # Selection ranges sent from the client.
"contentVersion": "A String", # Content version the client sent in.
"gbTextRange": { # Range in GB text format for this annotation sent by client.
@@ -226,6 +252,12 @@
"startOffset": "A String", # The offset from the starting position.
"endOffset": "A String", # The offset from the ending position.
},
+ "imageCfiRange": { # Range in image CFI format for this annotation sent by client.
+ "startPosition": "A String", # The starting position for the range.
+ "endPosition": "A String", # The ending position for the range.
+ "startOffset": "A String", # The offset from the starting position.
+ "endOffset": "A String", # The offset from the ending position.
+ },
"gbImageRange": { # Range in GB image format for this annotation sent by client.
"startPosition": "A String", # The starting position for the range.
"endPosition": "A String", # The ending position for the range.
@@ -233,6 +265,11 @@
"endOffset": "A String", # The offset from the ending position.
},
},
+ "layerSummary": {
+ "limitType": "A String", # Type of limitation on this layer. "limited" or "unlimited" for the "copy" layer.
+ "remainingCharacterCount": 42, # Remaining allowed characters on this layer, especially for the "copy" layer.
+ "allowedCharacterCount": 42, # Maximum allowed characters on this layer, especially for the "copy" layer.
+ },
"volumeId": "A String", # The volume that this annotation belongs to.
"pageIds": [ # Pages that this annotation spans.
"A String",
@@ -246,6 +283,7 @@
}
source: string, String to identify the originator of this request.
+ showOnlySummaryInResponse: boolean, Requests that only the summary of the specified layer be provided in the response.
Returns:
An object of the form:
@@ -255,7 +293,7 @@
"updated": "A String", # Timestamp for the last time this annotation was modified.
"created": "A String", # Timestamp for the created time of this annotation.
"deleted": True or False, # Indicates that this annotation is deleted.
- "beforeSelectedText": "A String", # Anchor text before excerpt.
+ "beforeSelectedText": "A String", # Anchor text before excerpt. For requests, if the user bookmarked a screen that has no flowing text on it, then this field should be empty.
"currentVersionRanges": { # Selection ranges for the most recent content version.
"contentVersion": "A String", # Content version applicable to ranges below.
"gbTextRange": { # Range in GB text format for this annotation for version above.
@@ -270,6 +308,12 @@
"startOffset": "A String", # The offset from the starting position.
"endOffset": "A String", # The offset from the ending position.
},
+ "imageCfiRange": { # Range in image CFI format for this annotation for version above.
+ "startPosition": "A String", # The starting position for the range.
+ "endPosition": "A String", # The ending position for the range.
+ "startOffset": "A String", # The offset from the starting position.
+ "endOffset": "A String", # The offset from the ending position.
+ },
"gbImageRange": { # Range in GB image format for this annotation for version above.
"startPosition": "A String", # The starting position for the range.
"endPosition": "A String", # The ending position for the range.
@@ -277,7 +321,7 @@
"endOffset": "A String", # The offset from the ending position.
},
},
- "afterSelectedText": "A String", # Anchor text after excerpt.
+ "afterSelectedText": "A String", # Anchor text after excerpt. For requests, if the user bookmarked a screen that has no flowing text on it, then this field should be empty.
"clientVersionRanges": { # Selection ranges sent from the client.
"contentVersion": "A String", # Content version the client sent in.
"gbTextRange": { # Range in GB text format for this annotation sent by client.
@@ -292,6 +336,12 @@
"startOffset": "A String", # The offset from the starting position.
"endOffset": "A String", # The offset from the ending position.
},
+ "imageCfiRange": { # Range in image CFI format for this annotation sent by client.
+ "startPosition": "A String", # The starting position for the range.
+ "endPosition": "A String", # The ending position for the range.
+ "startOffset": "A String", # The offset from the starting position.
+ "endOffset": "A String", # The offset from the ending position.
+ },
"gbImageRange": { # Range in GB image format for this annotation sent by client.
"startPosition": "A String", # The starting position for the range.
"endPosition": "A String", # The ending position for the range.
@@ -299,6 +349,11 @@
"endOffset": "A String", # The offset from the ending position.
},
},
+ "layerSummary": {
+ "limitType": "A String", # Type of limitation on this layer. "limited" or "unlimited" for the "copy" layer.
+ "remainingCharacterCount": 42, # Remaining allowed characters on this layer, especially for the "copy" layer.
+ "allowedCharacterCount": 42, # Maximum allowed characters on this layer, especially for the "copy" layer.
+ },
"volumeId": "A String", # The volume that this annotation belongs to.
"pageIds": [ # Pages that this annotation spans.
"A String",
@@ -339,7 +394,7 @@
"updated": "A String", # Timestamp for the last time this annotation was modified.
"created": "A String", # Timestamp for the created time of this annotation.
"deleted": True or False, # Indicates that this annotation is deleted.
- "beforeSelectedText": "A String", # Anchor text before excerpt.
+ "beforeSelectedText": "A String", # Anchor text before excerpt. For requests, if the user bookmarked a screen that has no flowing text on it, then this field should be empty.
"currentVersionRanges": { # Selection ranges for the most recent content version.
"contentVersion": "A String", # Content version applicable to ranges below.
"gbTextRange": { # Range in GB text format for this annotation for version above.
@@ -354,6 +409,12 @@
"startOffset": "A String", # The offset from the starting position.
"endOffset": "A String", # The offset from the ending position.
},
+ "imageCfiRange": { # Range in image CFI format for this annotation for version above.
+ "startPosition": "A String", # The starting position for the range.
+ "endPosition": "A String", # The ending position for the range.
+ "startOffset": "A String", # The offset from the starting position.
+ "endOffset": "A String", # The offset from the ending position.
+ },
"gbImageRange": { # Range in GB image format for this annotation for version above.
"startPosition": "A String", # The starting position for the range.
"endPosition": "A String", # The ending position for the range.
@@ -361,7 +422,7 @@
"endOffset": "A String", # The offset from the ending position.
},
},
- "afterSelectedText": "A String", # Anchor text after excerpt.
+ "afterSelectedText": "A String", # Anchor text after excerpt. For requests, if the user bookmarked a screen that has no flowing text on it, then this field should be empty.
"clientVersionRanges": { # Selection ranges sent from the client.
"contentVersion": "A String", # Content version the client sent in.
"gbTextRange": { # Range in GB text format for this annotation sent by client.
@@ -376,6 +437,12 @@
"startOffset": "A String", # The offset from the starting position.
"endOffset": "A String", # The offset from the ending position.
},
+ "imageCfiRange": { # Range in image CFI format for this annotation sent by client.
+ "startPosition": "A String", # The starting position for the range.
+ "endPosition": "A String", # The ending position for the range.
+ "startOffset": "A String", # The offset from the starting position.
+ "endOffset": "A String", # The offset from the ending position.
+ },
"gbImageRange": { # Range in GB image format for this annotation sent by client.
"startPosition": "A String", # The starting position for the range.
"endPosition": "A String", # The ending position for the range.
@@ -383,6 +450,11 @@
"endOffset": "A String", # The offset from the ending position.
},
},
+ "layerSummary": {
+ "limitType": "A String", # Type of limitation on this layer. "limited" or "unlimited" for the "copy" layer.
+ "remainingCharacterCount": 42, # Remaining allowed characters on this layer, especially for the "copy" layer.
+ "allowedCharacterCount": 42, # Maximum allowed characters on this layer, especially for the "copy" layer.
+ },
"volumeId": "A String", # The volume that this annotation belongs to.
"pageIds": [ # Pages that this annotation spans.
"A String",
@@ -415,6 +487,31 @@
</div>
<div class="method">
+ <code class="details" id="summary">summary(layerIds, volumeId)</code>
+ <pre>Gets the summary of specified layers.
+
+Args:
+ layerIds: string, Array of layer IDs to get the summary for. (required) (repeated)
+ volumeId: string, Volume id to get the summary for. (required)
+
+Returns:
+ An object of the form:
+
+ {
+ "layers": [
+ {
+ "limitType": "A String",
+ "remainingCharacterCount": 42,
+ "updated": "A String",
+ "layerId": "A String",
+ "allowedCharacterCount": 42,
+ },
+ ],
+ "kind": "books#annotationsSummary",
+ }</pre>
+</div>
+
+<div class="method">
<code class="details" id="update">update(annotationId, body, source=None)</code>
<pre>Updates an existing annotation.
@@ -428,7 +525,7 @@
"updated": "A String", # Timestamp for the last time this annotation was modified.
"created": "A String", # Timestamp for the created time of this annotation.
"deleted": True or False, # Indicates that this annotation is deleted.
- "beforeSelectedText": "A String", # Anchor text before excerpt.
+ "beforeSelectedText": "A String", # Anchor text before excerpt. For requests, if the user bookmarked a screen that has no flowing text on it, then this field should be empty.
"currentVersionRanges": { # Selection ranges for the most recent content version.
"contentVersion": "A String", # Content version applicable to ranges below.
"gbTextRange": { # Range in GB text format for this annotation for version above.
@@ -443,6 +540,12 @@
"startOffset": "A String", # The offset from the starting position.
"endOffset": "A String", # The offset from the ending position.
},
+ "imageCfiRange": { # Range in image CFI format for this annotation for version above.
+ "startPosition": "A String", # The starting position for the range.
+ "endPosition": "A String", # The ending position for the range.
+ "startOffset": "A String", # The offset from the starting position.
+ "endOffset": "A String", # The offset from the ending position.
+ },
"gbImageRange": { # Range in GB image format for this annotation for version above.
"startPosition": "A String", # The starting position for the range.
"endPosition": "A String", # The ending position for the range.
@@ -450,7 +553,7 @@
"endOffset": "A String", # The offset from the ending position.
},
},
- "afterSelectedText": "A String", # Anchor text after excerpt.
+ "afterSelectedText": "A String", # Anchor text after excerpt. For requests, if the user bookmarked a screen that has no flowing text on it, then this field should be empty.
"clientVersionRanges": { # Selection ranges sent from the client.
"contentVersion": "A String", # Content version the client sent in.
"gbTextRange": { # Range in GB text format for this annotation sent by client.
@@ -465,6 +568,12 @@
"startOffset": "A String", # The offset from the starting position.
"endOffset": "A String", # The offset from the ending position.
},
+ "imageCfiRange": { # Range in image CFI format for this annotation sent by client.
+ "startPosition": "A String", # The starting position for the range.
+ "endPosition": "A String", # The ending position for the range.
+ "startOffset": "A String", # The offset from the starting position.
+ "endOffset": "A String", # The offset from the ending position.
+ },
"gbImageRange": { # Range in GB image format for this annotation sent by client.
"startPosition": "A String", # The starting position for the range.
"endPosition": "A String", # The ending position for the range.
@@ -472,6 +581,11 @@
"endOffset": "A String", # The offset from the ending position.
},
},
+ "layerSummary": {
+ "limitType": "A String", # Type of limitation on this layer. "limited" or "unlimited" for the "copy" layer.
+ "remainingCharacterCount": 42, # Remaining allowed characters on this layer, especially for the "copy" layer.
+ "allowedCharacterCount": 42, # Maximum allowed characters on this layer, especially for the "copy" layer.
+ },
"volumeId": "A String", # The volume that this annotation belongs to.
"pageIds": [ # Pages that this annotation spans.
"A String",
@@ -494,7 +608,7 @@
"updated": "A String", # Timestamp for the last time this annotation was modified.
"created": "A String", # Timestamp for the created time of this annotation.
"deleted": True or False, # Indicates that this annotation is deleted.
- "beforeSelectedText": "A String", # Anchor text before excerpt.
+ "beforeSelectedText": "A String", # Anchor text before excerpt. For requests, if the user bookmarked a screen that has no flowing text on it, then this field should be empty.
"currentVersionRanges": { # Selection ranges for the most recent content version.
"contentVersion": "A String", # Content version applicable to ranges below.
"gbTextRange": { # Range in GB text format for this annotation for version above.
@@ -509,6 +623,12 @@
"startOffset": "A String", # The offset from the starting position.
"endOffset": "A String", # The offset from the ending position.
},
+ "imageCfiRange": { # Range in image CFI format for this annotation for version above.
+ "startPosition": "A String", # The starting position for the range.
+ "endPosition": "A String", # The ending position for the range.
+ "startOffset": "A String", # The offset from the starting position.
+ "endOffset": "A String", # The offset from the ending position.
+ },
"gbImageRange": { # Range in GB image format for this annotation for version above.
"startPosition": "A String", # The starting position for the range.
"endPosition": "A String", # The ending position for the range.
@@ -516,7 +636,7 @@
"endOffset": "A String", # The offset from the ending position.
},
},
- "afterSelectedText": "A String", # Anchor text after excerpt.
+ "afterSelectedText": "A String", # Anchor text after excerpt. For requests, if the user bookmarked a screen that has no flowing text on it, then this field should be empty.
"clientVersionRanges": { # Selection ranges sent from the client.
"contentVersion": "A String", # Content version the client sent in.
"gbTextRange": { # Range in GB text format for this annotation sent by client.
@@ -531,6 +651,12 @@
"startOffset": "A String", # The offset from the starting position.
"endOffset": "A String", # The offset from the ending position.
},
+ "imageCfiRange": { # Range in image CFI format for this annotation sent by client.
+ "startPosition": "A String", # The starting position for the range.
+ "endPosition": "A String", # The ending position for the range.
+ "startOffset": "A String", # The offset from the starting position.
+ "endOffset": "A String", # The offset from the ending position.
+ },
"gbImageRange": { # Range in GB image format for this annotation sent by client.
"startPosition": "A String", # The starting position for the range.
"endPosition": "A String", # The ending position for the range.
@@ -538,6 +664,11 @@
"endOffset": "A String", # The offset from the ending position.
},
},
+ "layerSummary": {
+ "limitType": "A String", # Type of limitation on this layer. "limited" or "unlimited" for the "copy" layer.
+ "remainingCharacterCount": 42, # Remaining allowed characters on this layer, especially for the "copy" layer.
+ "allowedCharacterCount": 42, # Maximum allowed characters on this layer, especially for the "copy" layer.
+ },
"volumeId": "A String", # The volume that this annotation belongs to.
"pageIds": [ # Pages that this annotation spans.
"A String",
diff --git a/docs/dyn/books_v1.mylibrary.bookshelves.volumes.html b/docs/dyn/books_v1.mylibrary.bookshelves.volumes.html
index 2d3d5a3..c85e0bd 100644
--- a/docs/dyn/books_v1.mylibrary.bookshelves.volumes.html
+++ b/docs/dyn/books_v1.mylibrary.bookshelves.volumes.html
@@ -147,7 +147,24 @@
"currencyCode": "A String", # An ISO 4217, three-letter currency code. (In LITE projection.)
},
"isEbook": True or False, # Whether or not this volume is an eBook (can be added to the My eBooks shelf).
- "saleability": "A String", # Whether or not this book is available for sale or offered for free in the Google eBookstore for the country listed above. Possible values are FOR_SALE, FREE, NOT_FOR_SALE, or FOR_PREORDER.
+ "offers": [ # Offers available for this volume (sales and rentals).
+ {
+ "rentalDuration": { # The rental duration (for rental offers only).
+ "count": 3.14,
+ "unit": "A String",
+ },
+ "retailPrice": { # Offer retail (=discounted) price in Micros
+ "currencyCode": "A String",
+ "amountInMicros": 3.14,
+ },
+ "listPrice": { # Offer list (=undiscounted) price in Micros.
+ "currencyCode": "A String",
+ "amountInMicros": 3.14,
+ },
+ "finskyOfferType": 42, # The finsky offer type (e.g., PURCHASE=0 RENTAL=3)
+ },
+ ],
+ "saleability": "A String", # Whether or not this book is available for sale or offered for free in the Google eBookstore for the country listed above. Possible values are FOR_SALE, FOR_RENTAL_ONLY, FOR_SALE_AND_RENTAL, FREE, NOT_FOR_SALE, or FOR_PREORDER.
"buyLink": "A String", # URL to purchase this volume on the Google Books site. (In LITE projection)
"onSaleDate": "A String", # The date on which this book is available for sale.
"listPrice": { # Suggested retail price. (In LITE projection.)
@@ -213,7 +230,25 @@
},
"userInfo": { # User specific information related to this volume. (e.g. page this user last read or whether they purchased this book)
"isInMyBooks": True or False, # Whether or not this volume is currently in "my books."
+ "rentalPeriod": { # Period during this book is/was a valid rental.
+ "startUtcSec": "A String",
+ "endUtcSec": "A String",
+ },
"updated": "A String", # Timestamp when this volume was last modified by a user action, such as a reading position update, volume purchase or writing a review. (RFC 3339 UTC date-time format).
+ "userUploadedVolumeInfo": {
+ "processingState": "A String",
+ },
+ "rentalState": "A String", # Whether this book is an active or an expired rental.
+ "isPurchased": True or False, # Whether or not this volume was purchased by the authenticated user making the request. (In LITE projection.)
+ "readingPosition": { # The user's current reading position in the volume, if one is available. (In LITE projection.)
+ "kind": "books#readingPosition", # Resource type for a reading position.
+ "gbImagePosition": "A String", # Position in a volume for image-based content.
+ "epubCfiPosition": "A String", # Position in an EPUB as a CFI.
+ "updated": "A String", # Timestamp when this reading position was last updated (formatted UTC timestamp with millisecond resolution).
+ "volumeId": "A String", # Volume id associated with this reading position.
+ "pdfPosition": "A String", # Position in a PDF file.
+ "gbTextPosition": "A String", # Position in a volume for text-based content.
+ },
"review": { # This user's review of this volume, if one exists.
"rating": "A String", # Star rating for this review. Possible values are ONE, TWO, THREE, FOUR, FIVE or NOT_RATED.
"kind": "books#review", # Resource type for a review.
@@ -232,17 +267,14 @@
"type": "A String", # Source type for this review. Possible values are EDITORIAL, WEB_USER or GOOGLE_USER.
"fullTextUrl": "A String", # URL for the full review text, for reviews gathered from the web.
},
- "isPurchased": True or False, # Whether or not this volume was purchased by the authenticated user making the request. (In LITE projection.)
- "readingPosition": { # The user's current reading position in the volume, if one is available. (In LITE projection.)
- "kind": "books#readingPosition", # Resource type for a reading position.
- "gbImagePosition": "A String", # Position in a volume for image-based content.
- "epubCfiPosition": "A String", # Position in an EPUB as a CFI.
- "updated": "A String", # Timestamp when this reading position was last updated (formatted UTC timestamp with millisecond resolution).
- "volumeId": "A String", # Volume id associated with this reading position.
- "pdfPosition": "A String", # Position in a PDF file.
- "gbTextPosition": "A String", # Position in a volume for text-based content.
- },
"isPreordered": True or False, # Whether or not this volume was pre-ordered by the authenticated user making the request. (In LITE projection.)
+ "copy": { # Copy/Paste accounting information.
+ "limitType": "A String",
+ "remainingCharacterCount": 42,
+ "updated": "A String",
+ "allowedCharacterCount": 42,
+ },
+ "isUploaded": True or False, # Whether or not this volume was user uploaded.
},
},
],
diff --git a/docs/dyn/books_v1.volumes.associated.html b/docs/dyn/books_v1.volumes.associated.html
index 3305ed9..b705313 100644
--- a/docs/dyn/books_v1.volumes.associated.html
+++ b/docs/dyn/books_v1.volumes.associated.html
@@ -143,7 +143,24 @@
"currencyCode": "A String", # An ISO 4217, three-letter currency code. (In LITE projection.)
},
"isEbook": True or False, # Whether or not this volume is an eBook (can be added to the My eBooks shelf).
- "saleability": "A String", # Whether or not this book is available for sale or offered for free in the Google eBookstore for the country listed above. Possible values are FOR_SALE, FREE, NOT_FOR_SALE, or FOR_PREORDER.
+ "offers": [ # Offers available for this volume (sales and rentals).
+ {
+ "rentalDuration": { # The rental duration (for rental offers only).
+ "count": 3.14,
+ "unit": "A String",
+ },
+ "retailPrice": { # Offer retail (=discounted) price in Micros
+ "currencyCode": "A String",
+ "amountInMicros": 3.14,
+ },
+ "listPrice": { # Offer list (=undiscounted) price in Micros.
+ "currencyCode": "A String",
+ "amountInMicros": 3.14,
+ },
+ "finskyOfferType": 42, # The finsky offer type (e.g., PURCHASE=0 RENTAL=3)
+ },
+ ],
+ "saleability": "A String", # Whether or not this book is available for sale or offered for free in the Google eBookstore for the country listed above. Possible values are FOR_SALE, FOR_RENTAL_ONLY, FOR_SALE_AND_RENTAL, FREE, NOT_FOR_SALE, or FOR_PREORDER.
"buyLink": "A String", # URL to purchase this volume on the Google Books site. (In LITE projection)
"onSaleDate": "A String", # The date on which this book is available for sale.
"listPrice": { # Suggested retail price. (In LITE projection.)
@@ -209,7 +226,25 @@
},
"userInfo": { # User specific information related to this volume. (e.g. page this user last read or whether they purchased this book)
"isInMyBooks": True or False, # Whether or not this volume is currently in "my books."
+ "rentalPeriod": { # Period during this book is/was a valid rental.
+ "startUtcSec": "A String",
+ "endUtcSec": "A String",
+ },
"updated": "A String", # Timestamp when this volume was last modified by a user action, such as a reading position update, volume purchase or writing a review. (RFC 3339 UTC date-time format).
+ "userUploadedVolumeInfo": {
+ "processingState": "A String",
+ },
+ "rentalState": "A String", # Whether this book is an active or an expired rental.
+ "isPurchased": True or False, # Whether or not this volume was purchased by the authenticated user making the request. (In LITE projection.)
+ "readingPosition": { # The user's current reading position in the volume, if one is available. (In LITE projection.)
+ "kind": "books#readingPosition", # Resource type for a reading position.
+ "gbImagePosition": "A String", # Position in a volume for image-based content.
+ "epubCfiPosition": "A String", # Position in an EPUB as a CFI.
+ "updated": "A String", # Timestamp when this reading position was last updated (formatted UTC timestamp with millisecond resolution).
+ "volumeId": "A String", # Volume id associated with this reading position.
+ "pdfPosition": "A String", # Position in a PDF file.
+ "gbTextPosition": "A String", # Position in a volume for text-based content.
+ },
"review": { # This user's review of this volume, if one exists.
"rating": "A String", # Star rating for this review. Possible values are ONE, TWO, THREE, FOUR, FIVE or NOT_RATED.
"kind": "books#review", # Resource type for a review.
@@ -228,17 +263,14 @@
"type": "A String", # Source type for this review. Possible values are EDITORIAL, WEB_USER or GOOGLE_USER.
"fullTextUrl": "A String", # URL for the full review text, for reviews gathered from the web.
},
- "isPurchased": True or False, # Whether or not this volume was purchased by the authenticated user making the request. (In LITE projection.)
- "readingPosition": { # The user's current reading position in the volume, if one is available. (In LITE projection.)
- "kind": "books#readingPosition", # Resource type for a reading position.
- "gbImagePosition": "A String", # Position in a volume for image-based content.
- "epubCfiPosition": "A String", # Position in an EPUB as a CFI.
- "updated": "A String", # Timestamp when this reading position was last updated (formatted UTC timestamp with millisecond resolution).
- "volumeId": "A String", # Volume id associated with this reading position.
- "pdfPosition": "A String", # Position in a PDF file.
- "gbTextPosition": "A String", # Position in a volume for text-based content.
- },
"isPreordered": True or False, # Whether or not this volume was pre-ordered by the authenticated user making the request. (In LITE projection.)
+ "copy": { # Copy/Paste accounting information.
+ "limitType": "A String",
+ "remainingCharacterCount": 42,
+ "updated": "A String",
+ "allowedCharacterCount": 42,
+ },
+ "isUploaded": True or False, # Whether or not this volume was user uploaded.
},
},
],
diff --git a/docs/dyn/books_v1.volumes.html b/docs/dyn/books_v1.volumes.html
index a23eea2..0fd2b47 100644
--- a/docs/dyn/books_v1.volumes.html
+++ b/docs/dyn/books_v1.volumes.html
@@ -80,11 +80,21 @@
<p class="firstline">Returns the associated Resource.</p>
<p class="toc_element">
+ <code><a href="books_v1.volumes.mybooks.html">mybooks()</a></code>
+</p>
+<p class="firstline">Returns the mybooks Resource.</p>
+
+<p class="toc_element">
<code><a href="books_v1.volumes.recommended.html">recommended()</a></code>
</p>
<p class="firstline">Returns the recommended Resource.</p>
<p class="toc_element">
+ <code><a href="books_v1.volumes.useruploaded.html">useruploaded()</a></code>
+</p>
+<p class="firstline">Returns the useruploaded Resource.</p>
+
+<p class="toc_element">
<code><a href="#get">get(volumeId, projection=None, source=None, country=None, partner=None)</a></code></p>
<p class="firstline">Gets volume information for a single volume.</p>
<p class="toc_element">
@@ -154,7 +164,24 @@
"currencyCode": "A String", # An ISO 4217, three-letter currency code. (In LITE projection.)
},
"isEbook": True or False, # Whether or not this volume is an eBook (can be added to the My eBooks shelf).
- "saleability": "A String", # Whether or not this book is available for sale or offered for free in the Google eBookstore for the country listed above. Possible values are FOR_SALE, FREE, NOT_FOR_SALE, or FOR_PREORDER.
+ "offers": [ # Offers available for this volume (sales and rentals).
+ {
+ "rentalDuration": { # The rental duration (for rental offers only).
+ "count": 3.14,
+ "unit": "A String",
+ },
+ "retailPrice": { # Offer retail (=discounted) price in Micros
+ "currencyCode": "A String",
+ "amountInMicros": 3.14,
+ },
+ "listPrice": { # Offer list (=undiscounted) price in Micros.
+ "currencyCode": "A String",
+ "amountInMicros": 3.14,
+ },
+ "finskyOfferType": 42, # The finsky offer type (e.g., PURCHASE=0 RENTAL=3)
+ },
+ ],
+ "saleability": "A String", # Whether or not this book is available for sale or offered for free in the Google eBookstore for the country listed above. Possible values are FOR_SALE, FOR_RENTAL_ONLY, FOR_SALE_AND_RENTAL, FREE, NOT_FOR_SALE, or FOR_PREORDER.
"buyLink": "A String", # URL to purchase this volume on the Google Books site. (In LITE projection)
"onSaleDate": "A String", # The date on which this book is available for sale.
"listPrice": { # Suggested retail price. (In LITE projection.)
@@ -220,7 +247,25 @@
},
"userInfo": { # User specific information related to this volume. (e.g. page this user last read or whether they purchased this book)
"isInMyBooks": True or False, # Whether or not this volume is currently in "my books."
+ "rentalPeriod": { # Period during this book is/was a valid rental.
+ "startUtcSec": "A String",
+ "endUtcSec": "A String",
+ },
"updated": "A String", # Timestamp when this volume was last modified by a user action, such as a reading position update, volume purchase or writing a review. (RFC 3339 UTC date-time format).
+ "userUploadedVolumeInfo": {
+ "processingState": "A String",
+ },
+ "rentalState": "A String", # Whether this book is an active or an expired rental.
+ "isPurchased": True or False, # Whether or not this volume was purchased by the authenticated user making the request. (In LITE projection.)
+ "readingPosition": { # The user's current reading position in the volume, if one is available. (In LITE projection.)
+ "kind": "books#readingPosition", # Resource type for a reading position.
+ "gbImagePosition": "A String", # Position in a volume for image-based content.
+ "epubCfiPosition": "A String", # Position in an EPUB as a CFI.
+ "updated": "A String", # Timestamp when this reading position was last updated (formatted UTC timestamp with millisecond resolution).
+ "volumeId": "A String", # Volume id associated with this reading position.
+ "pdfPosition": "A String", # Position in a PDF file.
+ "gbTextPosition": "A String", # Position in a volume for text-based content.
+ },
"review": { # This user's review of this volume, if one exists.
"rating": "A String", # Star rating for this review. Possible values are ONE, TWO, THREE, FOUR, FIVE or NOT_RATED.
"kind": "books#review", # Resource type for a review.
@@ -239,17 +284,14 @@
"type": "A String", # Source type for this review. Possible values are EDITORIAL, WEB_USER or GOOGLE_USER.
"fullTextUrl": "A String", # URL for the full review text, for reviews gathered from the web.
},
- "isPurchased": True or False, # Whether or not this volume was purchased by the authenticated user making the request. (In LITE projection.)
- "readingPosition": { # The user's current reading position in the volume, if one is available. (In LITE projection.)
- "kind": "books#readingPosition", # Resource type for a reading position.
- "gbImagePosition": "A String", # Position in a volume for image-based content.
- "epubCfiPosition": "A String", # Position in an EPUB as a CFI.
- "updated": "A String", # Timestamp when this reading position was last updated (formatted UTC timestamp with millisecond resolution).
- "volumeId": "A String", # Volume id associated with this reading position.
- "pdfPosition": "A String", # Position in a PDF file.
- "gbTextPosition": "A String", # Position in a volume for text-based content.
- },
"isPreordered": True or False, # Whether or not this volume was pre-ordered by the authenticated user making the request. (In LITE projection.)
+ "copy": { # Copy/Paste accounting information.
+ "limitType": "A String",
+ "remainingCharacterCount": 42,
+ "updated": "A String",
+ "allowedCharacterCount": 42,
+ },
+ "isUploaded": True or False, # Whether or not this volume was user uploaded.
},
}</pre>
</div>
@@ -346,7 +388,24 @@
"currencyCode": "A String", # An ISO 4217, three-letter currency code. (In LITE projection.)
},
"isEbook": True or False, # Whether or not this volume is an eBook (can be added to the My eBooks shelf).
- "saleability": "A String", # Whether or not this book is available for sale or offered for free in the Google eBookstore for the country listed above. Possible values are FOR_SALE, FREE, NOT_FOR_SALE, or FOR_PREORDER.
+ "offers": [ # Offers available for this volume (sales and rentals).
+ {
+ "rentalDuration": { # The rental duration (for rental offers only).
+ "count": 3.14,
+ "unit": "A String",
+ },
+ "retailPrice": { # Offer retail (=discounted) price in Micros
+ "currencyCode": "A String",
+ "amountInMicros": 3.14,
+ },
+ "listPrice": { # Offer list (=undiscounted) price in Micros.
+ "currencyCode": "A String",
+ "amountInMicros": 3.14,
+ },
+ "finskyOfferType": 42, # The finsky offer type (e.g., PURCHASE=0 RENTAL=3)
+ },
+ ],
+ "saleability": "A String", # Whether or not this book is available for sale or offered for free in the Google eBookstore for the country listed above. Possible values are FOR_SALE, FOR_RENTAL_ONLY, FOR_SALE_AND_RENTAL, FREE, NOT_FOR_SALE, or FOR_PREORDER.
"buyLink": "A String", # URL to purchase this volume on the Google Books site. (In LITE projection)
"onSaleDate": "A String", # The date on which this book is available for sale.
"listPrice": { # Suggested retail price. (In LITE projection.)
@@ -412,7 +471,25 @@
},
"userInfo": { # User specific information related to this volume. (e.g. page this user last read or whether they purchased this book)
"isInMyBooks": True or False, # Whether or not this volume is currently in "my books."
+ "rentalPeriod": { # Period during this book is/was a valid rental.
+ "startUtcSec": "A String",
+ "endUtcSec": "A String",
+ },
"updated": "A String", # Timestamp when this volume was last modified by a user action, such as a reading position update, volume purchase or writing a review. (RFC 3339 UTC date-time format).
+ "userUploadedVolumeInfo": {
+ "processingState": "A String",
+ },
+ "rentalState": "A String", # Whether this book is an active or an expired rental.
+ "isPurchased": True or False, # Whether or not this volume was purchased by the authenticated user making the request. (In LITE projection.)
+ "readingPosition": { # The user's current reading position in the volume, if one is available. (In LITE projection.)
+ "kind": "books#readingPosition", # Resource type for a reading position.
+ "gbImagePosition": "A String", # Position in a volume for image-based content.
+ "epubCfiPosition": "A String", # Position in an EPUB as a CFI.
+ "updated": "A String", # Timestamp when this reading position was last updated (formatted UTC timestamp with millisecond resolution).
+ "volumeId": "A String", # Volume id associated with this reading position.
+ "pdfPosition": "A String", # Position in a PDF file.
+ "gbTextPosition": "A String", # Position in a volume for text-based content.
+ },
"review": { # This user's review of this volume, if one exists.
"rating": "A String", # Star rating for this review. Possible values are ONE, TWO, THREE, FOUR, FIVE or NOT_RATED.
"kind": "books#review", # Resource type for a review.
@@ -431,17 +508,14 @@
"type": "A String", # Source type for this review. Possible values are EDITORIAL, WEB_USER or GOOGLE_USER.
"fullTextUrl": "A String", # URL for the full review text, for reviews gathered from the web.
},
- "isPurchased": True or False, # Whether or not this volume was purchased by the authenticated user making the request. (In LITE projection.)
- "readingPosition": { # The user's current reading position in the volume, if one is available. (In LITE projection.)
- "kind": "books#readingPosition", # Resource type for a reading position.
- "gbImagePosition": "A String", # Position in a volume for image-based content.
- "epubCfiPosition": "A String", # Position in an EPUB as a CFI.
- "updated": "A String", # Timestamp when this reading position was last updated (formatted UTC timestamp with millisecond resolution).
- "volumeId": "A String", # Volume id associated with this reading position.
- "pdfPosition": "A String", # Position in a PDF file.
- "gbTextPosition": "A String", # Position in a volume for text-based content.
- },
"isPreordered": True or False, # Whether or not this volume was pre-ordered by the authenticated user making the request. (In LITE projection.)
+ "copy": { # Copy/Paste accounting information.
+ "limitType": "A String",
+ "remainingCharacterCount": 42,
+ "updated": "A String",
+ "allowedCharacterCount": 42,
+ },
+ "isUploaded": True or False, # Whether or not this volume was user uploaded.
},
},
],
diff --git a/docs/dyn/books_v1.volumes.mybooks.html b/docs/dyn/books_v1.volumes.mybooks.html
new file mode 100644
index 0000000..d579ef8
--- /dev/null
+++ b/docs/dyn/books_v1.volumes.mybooks.html
@@ -0,0 +1,292 @@
+<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="books_v1.html">Books API</a> . <a href="books_v1.volumes.html">volumes</a> . <a href="books_v1.volumes.mybooks.html">mybooks</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#list">list(source=None, locale=None, acquireMethod=None, maxResults=None, startIndex=None, processingState=None)</a></code></p>
+<p class="firstline">Return a list of books in My Library.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="list">list(source=None, locale=None, acquireMethod=None, maxResults=None, startIndex=None, processingState=None)</code>
+ <pre>Return a list of books in My Library.
+
+Args:
+ source: string, String to identify the originator of this request.
+ locale: string, ISO-639-1 language and ISO-3166-1 country code. Ex:'en_US'. Used for generating recommendations.
+ acquireMethod: string, How the book was aquired (repeated)
+ Allowed values
+ PREORDERED - Preordered books (not yet available)
+ PREVIOUSLY_RENTED - User-rented books past their expiration time
+ PUBLIC_DOMAIN - Public domain books
+ PURCHASED - Purchased books
+ RENTED - User-rented books
+ SAMPLE - Sample books
+ UPLOADED - User uploaded books
+ maxResults: integer, Maximum number of results to return.
+ startIndex: integer, Index of the first result to return (starts at 0)
+ processingState: string, The processing state of the user uploaded volumes to be returned. Applicable only if the UPLOADED is specified in the acquireMethod. (repeated)
+ Allowed values
+ COMPLETED_FAILED - The volume processing hase failed.
+ COMPLETED_SUCCESS - The volume processing was completed.
+ RUNNING - The volume processing is not completed.
+
+Returns:
+ An object of the form:
+
+ {
+ "totalItems": 42, # Total number of volumes found. This might be greater than the number of volumes returned in this response if results have been paginated.
+ "items": [ # A list of volumes.
+ {
+ "kind": "books#volume", # Resource type for a volume. (In LITE projection.)
+ "accessInfo": { # Any information about a volume related to reading or obtaining that volume text. This information can depend on country (books may be public domain in one country but not in another, e.g.).
+ "webReaderLink": "A String", # URL to read this volume on the Google Books site. Link will not allow users to read non-viewable volumes.
+ "publicDomain": True or False, # Whether or not this book is public domain in the country listed above.
+ "embeddable": True or False, # Whether this volume can be embedded in a viewport using the Embedded Viewer API.
+ "downloadAccess": { # Information about a volume's download license access restrictions.
+ "nonce": "A String", # Client nonce for verification. Download access and client-validation only.
+ "kind": "books#downloadAccessRestriction", # Resource type.
+ "justAcquired": True or False, # If deviceAllowed, whether access was just acquired with this request.
+ "maxDownloadDevices": 42, # If restricted, the maximum number of content download licenses for this volume.
+ "downloadsAcquired": 42, # If restricted, the number of content download licenses already acquired (including the requesting client, if licensed).
+ "signature": "A String", # Response signature.
+ "volumeId": "A String", # Identifies the volume for which this entry applies.
+ "deviceAllowed": True or False, # If restricted, whether access is granted for this (user, device, volume).
+ "source": "A String", # Client app identifier for verification. Download access and client-validation only.
+ "restricted": True or False, # Whether this volume has any download access restrictions.
+ "reasonCode": "A String", # Error/warning reason code. Additional codes may be added in the future. 0 OK 100 ACCESS_DENIED_PUBLISHER_LIMIT 101 ACCESS_DENIED_LIMIT 200 WARNING_USED_LAST_ACCESS
+ "message": "A String", # Error/warning message.
+ },
+ "country": "A String", # The two-letter ISO_3166-1 country code for which this access information is valid. (In LITE projection.)
+ "viewOrderUrl": "A String", # For ordered but not yet processed orders, we give a URL that can be used to go to the appropriate Google Wallet page.
+ "textToSpeechPermission": "A String", # Whether text-to-speech is permitted for this volume. Values can be ALLOWED, ALLOWED_FOR_ACCESSIBILITY, or NOT_ALLOWED.
+ "pdf": { # Information about pdf content. (In LITE projection.)
+ "isAvailable": True or False, # Is a scanned image pdf available either as public domain or for purchase. (In LITE projection.)
+ "downloadLink": "A String", # URL to download pdf. (In LITE projection.)
+ "acsTokenLink": "A String", # URL to retrieve ACS token for pdf download. (In LITE projection.)
+ },
+ "viewability": "A String", # The read access of a volume. Possible values are PARTIAL, ALL_PAGES, NO_PAGES or UNKNOWN. This value depends on the country listed above. A value of PARTIAL means that the publisher has allowed some portion of the volume to be viewed publicly, without purchase. This can apply to eBooks as well as non-eBooks. Public domain books will always have a value of ALL_PAGES.
+ "epub": { # Information about epub content. (In LITE projection.)
+ "isAvailable": True or False, # Is a flowing text epub available either as public domain or for purchase. (In LITE projection.)
+ "downloadLink": "A String", # URL to download epub. (In LITE projection.)
+ "acsTokenLink": "A String", # URL to retrieve ACS token for epub download. (In LITE projection.)
+ },
+ "accessViewStatus": "A String", # Combines the access and viewability of this volume into a single status field for this user. Values can be FULL_PURCHASED, FULL_PUBLIC_DOMAIN, SAMPLE or NONE. (In LITE projection.)
+ },
+ "searchInfo": { # Search result information related to this volume.
+ "textSnippet": "A String", # A text snippet containing the search query.
+ },
+ "saleInfo": { # Any information about a volume related to the eBookstore and/or purchaseability. This information can depend on the country where the request originates from (i.e. books may not be for sale in certain countries).
+ "country": "A String", # The two-letter ISO_3166-1 country code for which this sale information is valid. (In LITE projection.)
+ "retailPrice": { # The actual selling price of the book. This is the same as the suggested retail or list price unless there are offers or discounts on this volume. (In LITE projection.)
+ "amount": 3.14, # Amount in the currency listed below. (In LITE projection.)
+ "currencyCode": "A String", # An ISO 4217, three-letter currency code. (In LITE projection.)
+ },
+ "isEbook": True or False, # Whether or not this volume is an eBook (can be added to the My eBooks shelf).
+ "offers": [ # Offers available for this volume (sales and rentals).
+ {
+ "rentalDuration": { # The rental duration (for rental offers only).
+ "count": 3.14,
+ "unit": "A String",
+ },
+ "retailPrice": { # Offer retail (=discounted) price in Micros
+ "currencyCode": "A String",
+ "amountInMicros": 3.14,
+ },
+ "listPrice": { # Offer list (=undiscounted) price in Micros.
+ "currencyCode": "A String",
+ "amountInMicros": 3.14,
+ },
+ "finskyOfferType": 42, # The finsky offer type (e.g., PURCHASE=0 RENTAL=3)
+ },
+ ],
+ "saleability": "A String", # Whether or not this book is available for sale or offered for free in the Google eBookstore for the country listed above. Possible values are FOR_SALE, FOR_RENTAL_ONLY, FOR_SALE_AND_RENTAL, FREE, NOT_FOR_SALE, or FOR_PREORDER.
+ "buyLink": "A String", # URL to purchase this volume on the Google Books site. (In LITE projection)
+ "onSaleDate": "A String", # The date on which this book is available for sale.
+ "listPrice": { # Suggested retail price. (In LITE projection.)
+ "amount": 3.14, # Amount in the currency listed below. (In LITE projection.)
+ "currencyCode": "A String", # An ISO 4217, three-letter currency code. (In LITE projection.)
+ },
+ },
+ "etag": "A String", # Opaque identifier for a specific version of a volume resource. (In LITE projection)
+ "selfLink": "A String", # URL to this resource. (In LITE projection.)
+ "volumeInfo": { # General volume information.
+ "publisher": "A String", # Publisher of this volume. (In LITE projection.)
+ "subtitle": "A String", # Volume subtitle. (In LITE projection.)
+ "description": "A String", # A synopsis of the volume. The text of the description is formatted in HTML and includes simple formatting elements, such as b, i, and br tags. (In LITE projection.)
+ "language": "A String", # Best language for this volume (based on content). It is the two-letter ISO 639-1 code such as 'fr', 'en', etc.
+ "pageCount": 42, # Total number of pages.
+ "imageLinks": { # A list of image links for all the sizes that are available. (In LITE projection.)
+ "medium": "A String", # Image link for medium size (width of ~575 pixels). (In LITE projection)
+ "smallThumbnail": "A String", # Image link for small thumbnail size (width of ~80 pixels). (In LITE projection)
+ "large": "A String", # Image link for large size (width of ~800 pixels). (In LITE projection)
+ "extraLarge": "A String", # Image link for extra large size (width of ~1280 pixels). (In LITE projection)
+ "small": "A String", # Image link for small size (width of ~300 pixels). (In LITE projection)
+ "thumbnail": "A String", # Image link for thumbnail size (width of ~128 pixels). (In LITE projection)
+ },
+ "publishedDate": "A String", # Date of publication. (In LITE projection.)
+ "previewLink": "A String", # URL to preview this volume on the Google Books site.
+ "printType": "A String", # Type of publication of this volume. Possible values are BOOK or MAGAZINE.
+ "ratingsCount": 42, # The number of review ratings for this volume.
+ "mainCategory": "A String", # The main category to which this volume belongs. It will be the category from the categories list returned below that has the highest weight.
+ "dimensions": { # Physical dimensions of this volume.
+ "width": "A String", # Width of this volume (in cm).
+ "thickness": "A String", # Thickness of this volume (in cm).
+ "height": "A String", # Height or length of this volume (in cm).
+ },
+ "contentVersion": "A String", # An identifier for the version of the volume content (text & images). (In LITE projection)
+ "industryIdentifiers": [ # Industry standard identifiers for this volume.
+ {
+ "identifier": "A String", # Industry specific volume identifier.
+ "type": "A String", # Identifier type. Possible values are ISBN_10, ISBN_13, ISSN and OTHER.
+ },
+ ],
+ "authors": [ # The names of the authors and/or editors for this volume. (In LITE projection)
+ "A String",
+ ],
+ "title": "A String", # Volume title. (In LITE projection.)
+ "canonicalVolumeLink": "A String", # Canonical URL for a volume. (In LITE projection.)
+ "infoLink": "A String", # URL to view information about this volume on the Google Books site. (In LITE projection)
+ "categories": [ # A list of subject categories, such as "Fiction", "Suspense", etc.
+ "A String",
+ ],
+ "averageRating": 3.14, # The mean review rating for this volume. (min = 1.0, max = 5.0)
+ },
+ "recommendedInfo": { # Recommendation related information for this volume.
+ "explanation": "A String", # A text explaining why this volume is recommended.
+ },
+ "id": "A String", # Unique identifier for a volume. (In LITE projection.)
+ "layerInfo": { # What layers exist in this volume and high level information about them.
+ "layers": [ # A layer should appear here if and only if the layer exists for this book.
+ {
+ "volumeAnnotationsVersion": "A String", # The current version of this layer's volume annotations. Note that this version applies only to the data in the books.layers.volumeAnnotations.* responses. The actual annotation data is versioned separately.
+ "layerId": "A String", # The layer id of this layer (e.g. "geo").
+ },
+ ],
+ },
+ "userInfo": { # User specific information related to this volume. (e.g. page this user last read or whether they purchased this book)
+ "isInMyBooks": True or False, # Whether or not this volume is currently in "my books."
+ "rentalPeriod": { # Period during this book is/was a valid rental.
+ "startUtcSec": "A String",
+ "endUtcSec": "A String",
+ },
+ "updated": "A String", # Timestamp when this volume was last modified by a user action, such as a reading position update, volume purchase or writing a review. (RFC 3339 UTC date-time format).
+ "userUploadedVolumeInfo": {
+ "processingState": "A String",
+ },
+ "rentalState": "A String", # Whether this book is an active or an expired rental.
+ "isPurchased": True or False, # Whether or not this volume was purchased by the authenticated user making the request. (In LITE projection.)
+ "readingPosition": { # The user's current reading position in the volume, if one is available. (In LITE projection.)
+ "kind": "books#readingPosition", # Resource type for a reading position.
+ "gbImagePosition": "A String", # Position in a volume for image-based content.
+ "epubCfiPosition": "A String", # Position in an EPUB as a CFI.
+ "updated": "A String", # Timestamp when this reading position was last updated (formatted UTC timestamp with millisecond resolution).
+ "volumeId": "A String", # Volume id associated with this reading position.
+ "pdfPosition": "A String", # Position in a PDF file.
+ "gbTextPosition": "A String", # Position in a volume for text-based content.
+ },
+ "review": { # This user's review of this volume, if one exists.
+ "rating": "A String", # Star rating for this review. Possible values are ONE, TWO, THREE, FOUR, FIVE or NOT_RATED.
+ "kind": "books#review", # Resource type for a review.
+ "author": { # Author of this review.
+ "displayName": "A String", # Name of this person.
+ },
+ "title": "A String", # Title for this review.
+ "volumeId": "A String", # Volume that this review is for.
+ "content": "A String", # Review text.
+ "source": { # Information regarding the source of this review, when the review is not from a Google Books user.
+ "extraDescription": "A String", # Extra text about the source of the review.
+ "url": "A String", # URL of the source of the review.
+ "description": "A String", # Name of the source.
+ },
+ "date": "A String", # Date of this review.
+ "type": "A String", # Source type for this review. Possible values are EDITORIAL, WEB_USER or GOOGLE_USER.
+ "fullTextUrl": "A String", # URL for the full review text, for reviews gathered from the web.
+ },
+ "isPreordered": True or False, # Whether or not this volume was pre-ordered by the authenticated user making the request. (In LITE projection.)
+ "copy": { # Copy/Paste accounting information.
+ "limitType": "A String",
+ "remainingCharacterCount": 42,
+ "updated": "A String",
+ "allowedCharacterCount": 42,
+ },
+ "isUploaded": True or False, # Whether or not this volume was user uploaded.
+ },
+ },
+ ],
+ "kind": "books#volumes", # Resource type.
+ }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/books_v1.volumes.recommended.html b/docs/dyn/books_v1.volumes.recommended.html
index 05b76be..a5fc294 100644
--- a/docs/dyn/books_v1.volumes.recommended.html
+++ b/docs/dyn/books_v1.volumes.recommended.html
@@ -138,7 +138,24 @@
"currencyCode": "A String", # An ISO 4217, three-letter currency code. (In LITE projection.)
},
"isEbook": True or False, # Whether or not this volume is an eBook (can be added to the My eBooks shelf).
- "saleability": "A String", # Whether or not this book is available for sale or offered for free in the Google eBookstore for the country listed above. Possible values are FOR_SALE, FREE, NOT_FOR_SALE, or FOR_PREORDER.
+ "offers": [ # Offers available for this volume (sales and rentals).
+ {
+ "rentalDuration": { # The rental duration (for rental offers only).
+ "count": 3.14,
+ "unit": "A String",
+ },
+ "retailPrice": { # Offer retail (=discounted) price in Micros
+ "currencyCode": "A String",
+ "amountInMicros": 3.14,
+ },
+ "listPrice": { # Offer list (=undiscounted) price in Micros.
+ "currencyCode": "A String",
+ "amountInMicros": 3.14,
+ },
+ "finskyOfferType": 42, # The finsky offer type (e.g., PURCHASE=0 RENTAL=3)
+ },
+ ],
+ "saleability": "A String", # Whether or not this book is available for sale or offered for free in the Google eBookstore for the country listed above. Possible values are FOR_SALE, FOR_RENTAL_ONLY, FOR_SALE_AND_RENTAL, FREE, NOT_FOR_SALE, or FOR_PREORDER.
"buyLink": "A String", # URL to purchase this volume on the Google Books site. (In LITE projection)
"onSaleDate": "A String", # The date on which this book is available for sale.
"listPrice": { # Suggested retail price. (In LITE projection.)
@@ -204,7 +221,25 @@
},
"userInfo": { # User specific information related to this volume. (e.g. page this user last read or whether they purchased this book)
"isInMyBooks": True or False, # Whether or not this volume is currently in "my books."
+ "rentalPeriod": { # Period during this book is/was a valid rental.
+ "startUtcSec": "A String",
+ "endUtcSec": "A String",
+ },
"updated": "A String", # Timestamp when this volume was last modified by a user action, such as a reading position update, volume purchase or writing a review. (RFC 3339 UTC date-time format).
+ "userUploadedVolumeInfo": {
+ "processingState": "A String",
+ },
+ "rentalState": "A String", # Whether this book is an active or an expired rental.
+ "isPurchased": True or False, # Whether or not this volume was purchased by the authenticated user making the request. (In LITE projection.)
+ "readingPosition": { # The user's current reading position in the volume, if one is available. (In LITE projection.)
+ "kind": "books#readingPosition", # Resource type for a reading position.
+ "gbImagePosition": "A String", # Position in a volume for image-based content.
+ "epubCfiPosition": "A String", # Position in an EPUB as a CFI.
+ "updated": "A String", # Timestamp when this reading position was last updated (formatted UTC timestamp with millisecond resolution).
+ "volumeId": "A String", # Volume id associated with this reading position.
+ "pdfPosition": "A String", # Position in a PDF file.
+ "gbTextPosition": "A String", # Position in a volume for text-based content.
+ },
"review": { # This user's review of this volume, if one exists.
"rating": "A String", # Star rating for this review. Possible values are ONE, TWO, THREE, FOUR, FIVE or NOT_RATED.
"kind": "books#review", # Resource type for a review.
@@ -223,17 +258,14 @@
"type": "A String", # Source type for this review. Possible values are EDITORIAL, WEB_USER or GOOGLE_USER.
"fullTextUrl": "A String", # URL for the full review text, for reviews gathered from the web.
},
- "isPurchased": True or False, # Whether or not this volume was purchased by the authenticated user making the request. (In LITE projection.)
- "readingPosition": { # The user's current reading position in the volume, if one is available. (In LITE projection.)
- "kind": "books#readingPosition", # Resource type for a reading position.
- "gbImagePosition": "A String", # Position in a volume for image-based content.
- "epubCfiPosition": "A String", # Position in an EPUB as a CFI.
- "updated": "A String", # Timestamp when this reading position was last updated (formatted UTC timestamp with millisecond resolution).
- "volumeId": "A String", # Volume id associated with this reading position.
- "pdfPosition": "A String", # Position in a PDF file.
- "gbTextPosition": "A String", # Position in a volume for text-based content.
- },
"isPreordered": True or False, # Whether or not this volume was pre-ordered by the authenticated user making the request. (In LITE projection.)
+ "copy": { # Copy/Paste accounting information.
+ "limitType": "A String",
+ "remainingCharacterCount": 42,
+ "updated": "A String",
+ "allowedCharacterCount": 42,
+ },
+ "isUploaded": True or False, # Whether or not this volume was user uploaded.
},
},
],
diff --git a/docs/dyn/books_v1.volumes.useruploaded.html b/docs/dyn/books_v1.volumes.useruploaded.html
new file mode 100644
index 0000000..cf727d4
--- /dev/null
+++ b/docs/dyn/books_v1.volumes.useruploaded.html
@@ -0,0 +1,284 @@
+<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="books_v1.html">Books API</a> . <a href="books_v1.volumes.html">volumes</a> . <a href="books_v1.volumes.useruploaded.html">useruploaded</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#list">list(source=None, locale=None, volumeId=None, maxResults=None, startIndex=None, processingState=None)</a></code></p>
+<p class="firstline">Return a list of books uploaded by the current user.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="list">list(source=None, locale=None, volumeId=None, maxResults=None, startIndex=None, processingState=None)</code>
+ <pre>Return a list of books uploaded by the current user.
+
+Args:
+ source: string, String to identify the originator of this request.
+ locale: string, ISO-639-1 language and ISO-3166-1 country code. Ex: 'en_US'. Used for generating recommendations.
+ volumeId: string, The ids of the volumes to be returned. If not specified all that match the processingState are returned. (repeated)
+ maxResults: integer, Maximum number of results to return.
+ startIndex: integer, Index of the first result to return (starts at 0)
+ processingState: string, The processing state of the user uploaded volumes to be returned. (repeated)
+ Allowed values
+ COMPLETED_FAILED - The volume processing hase failed.
+ COMPLETED_SUCCESS - The volume processing was completed.
+ RUNNING - The volume processing is not completed.
+
+Returns:
+ An object of the form:
+
+ {
+ "totalItems": 42, # Total number of volumes found. This might be greater than the number of volumes returned in this response if results have been paginated.
+ "items": [ # A list of volumes.
+ {
+ "kind": "books#volume", # Resource type for a volume. (In LITE projection.)
+ "accessInfo": { # Any information about a volume related to reading or obtaining that volume text. This information can depend on country (books may be public domain in one country but not in another, e.g.).
+ "webReaderLink": "A String", # URL to read this volume on the Google Books site. Link will not allow users to read non-viewable volumes.
+ "publicDomain": True or False, # Whether or not this book is public domain in the country listed above.
+ "embeddable": True or False, # Whether this volume can be embedded in a viewport using the Embedded Viewer API.
+ "downloadAccess": { # Information about a volume's download license access restrictions.
+ "nonce": "A String", # Client nonce for verification. Download access and client-validation only.
+ "kind": "books#downloadAccessRestriction", # Resource type.
+ "justAcquired": True or False, # If deviceAllowed, whether access was just acquired with this request.
+ "maxDownloadDevices": 42, # If restricted, the maximum number of content download licenses for this volume.
+ "downloadsAcquired": 42, # If restricted, the number of content download licenses already acquired (including the requesting client, if licensed).
+ "signature": "A String", # Response signature.
+ "volumeId": "A String", # Identifies the volume for which this entry applies.
+ "deviceAllowed": True or False, # If restricted, whether access is granted for this (user, device, volume).
+ "source": "A String", # Client app identifier for verification. Download access and client-validation only.
+ "restricted": True or False, # Whether this volume has any download access restrictions.
+ "reasonCode": "A String", # Error/warning reason code. Additional codes may be added in the future. 0 OK 100 ACCESS_DENIED_PUBLISHER_LIMIT 101 ACCESS_DENIED_LIMIT 200 WARNING_USED_LAST_ACCESS
+ "message": "A String", # Error/warning message.
+ },
+ "country": "A String", # The two-letter ISO_3166-1 country code for which this access information is valid. (In LITE projection.)
+ "viewOrderUrl": "A String", # For ordered but not yet processed orders, we give a URL that can be used to go to the appropriate Google Wallet page.
+ "textToSpeechPermission": "A String", # Whether text-to-speech is permitted for this volume. Values can be ALLOWED, ALLOWED_FOR_ACCESSIBILITY, or NOT_ALLOWED.
+ "pdf": { # Information about pdf content. (In LITE projection.)
+ "isAvailable": True or False, # Is a scanned image pdf available either as public domain or for purchase. (In LITE projection.)
+ "downloadLink": "A String", # URL to download pdf. (In LITE projection.)
+ "acsTokenLink": "A String", # URL to retrieve ACS token for pdf download. (In LITE projection.)
+ },
+ "viewability": "A String", # The read access of a volume. Possible values are PARTIAL, ALL_PAGES, NO_PAGES or UNKNOWN. This value depends on the country listed above. A value of PARTIAL means that the publisher has allowed some portion of the volume to be viewed publicly, without purchase. This can apply to eBooks as well as non-eBooks. Public domain books will always have a value of ALL_PAGES.
+ "epub": { # Information about epub content. (In LITE projection.)
+ "isAvailable": True or False, # Is a flowing text epub available either as public domain or for purchase. (In LITE projection.)
+ "downloadLink": "A String", # URL to download epub. (In LITE projection.)
+ "acsTokenLink": "A String", # URL to retrieve ACS token for epub download. (In LITE projection.)
+ },
+ "accessViewStatus": "A String", # Combines the access and viewability of this volume into a single status field for this user. Values can be FULL_PURCHASED, FULL_PUBLIC_DOMAIN, SAMPLE or NONE. (In LITE projection.)
+ },
+ "searchInfo": { # Search result information related to this volume.
+ "textSnippet": "A String", # A text snippet containing the search query.
+ },
+ "saleInfo": { # Any information about a volume related to the eBookstore and/or purchaseability. This information can depend on the country where the request originates from (i.e. books may not be for sale in certain countries).
+ "country": "A String", # The two-letter ISO_3166-1 country code for which this sale information is valid. (In LITE projection.)
+ "retailPrice": { # The actual selling price of the book. This is the same as the suggested retail or list price unless there are offers or discounts on this volume. (In LITE projection.)
+ "amount": 3.14, # Amount in the currency listed below. (In LITE projection.)
+ "currencyCode": "A String", # An ISO 4217, three-letter currency code. (In LITE projection.)
+ },
+ "isEbook": True or False, # Whether or not this volume is an eBook (can be added to the My eBooks shelf).
+ "offers": [ # Offers available for this volume (sales and rentals).
+ {
+ "rentalDuration": { # The rental duration (for rental offers only).
+ "count": 3.14,
+ "unit": "A String",
+ },
+ "retailPrice": { # Offer retail (=discounted) price in Micros
+ "currencyCode": "A String",
+ "amountInMicros": 3.14,
+ },
+ "listPrice": { # Offer list (=undiscounted) price in Micros.
+ "currencyCode": "A String",
+ "amountInMicros": 3.14,
+ },
+ "finskyOfferType": 42, # The finsky offer type (e.g., PURCHASE=0 RENTAL=3)
+ },
+ ],
+ "saleability": "A String", # Whether or not this book is available for sale or offered for free in the Google eBookstore for the country listed above. Possible values are FOR_SALE, FOR_RENTAL_ONLY, FOR_SALE_AND_RENTAL, FREE, NOT_FOR_SALE, or FOR_PREORDER.
+ "buyLink": "A String", # URL to purchase this volume on the Google Books site. (In LITE projection)
+ "onSaleDate": "A String", # The date on which this book is available for sale.
+ "listPrice": { # Suggested retail price. (In LITE projection.)
+ "amount": 3.14, # Amount in the currency listed below. (In LITE projection.)
+ "currencyCode": "A String", # An ISO 4217, three-letter currency code. (In LITE projection.)
+ },
+ },
+ "etag": "A String", # Opaque identifier for a specific version of a volume resource. (In LITE projection)
+ "selfLink": "A String", # URL to this resource. (In LITE projection.)
+ "volumeInfo": { # General volume information.
+ "publisher": "A String", # Publisher of this volume. (In LITE projection.)
+ "subtitle": "A String", # Volume subtitle. (In LITE projection.)
+ "description": "A String", # A synopsis of the volume. The text of the description is formatted in HTML and includes simple formatting elements, such as b, i, and br tags. (In LITE projection.)
+ "language": "A String", # Best language for this volume (based on content). It is the two-letter ISO 639-1 code such as 'fr', 'en', etc.
+ "pageCount": 42, # Total number of pages.
+ "imageLinks": { # A list of image links for all the sizes that are available. (In LITE projection.)
+ "medium": "A String", # Image link for medium size (width of ~575 pixels). (In LITE projection)
+ "smallThumbnail": "A String", # Image link for small thumbnail size (width of ~80 pixels). (In LITE projection)
+ "large": "A String", # Image link for large size (width of ~800 pixels). (In LITE projection)
+ "extraLarge": "A String", # Image link for extra large size (width of ~1280 pixels). (In LITE projection)
+ "small": "A String", # Image link for small size (width of ~300 pixels). (In LITE projection)
+ "thumbnail": "A String", # Image link for thumbnail size (width of ~128 pixels). (In LITE projection)
+ },
+ "publishedDate": "A String", # Date of publication. (In LITE projection.)
+ "previewLink": "A String", # URL to preview this volume on the Google Books site.
+ "printType": "A String", # Type of publication of this volume. Possible values are BOOK or MAGAZINE.
+ "ratingsCount": 42, # The number of review ratings for this volume.
+ "mainCategory": "A String", # The main category to which this volume belongs. It will be the category from the categories list returned below that has the highest weight.
+ "dimensions": { # Physical dimensions of this volume.
+ "width": "A String", # Width of this volume (in cm).
+ "thickness": "A String", # Thickness of this volume (in cm).
+ "height": "A String", # Height or length of this volume (in cm).
+ },
+ "contentVersion": "A String", # An identifier for the version of the volume content (text & images). (In LITE projection)
+ "industryIdentifiers": [ # Industry standard identifiers for this volume.
+ {
+ "identifier": "A String", # Industry specific volume identifier.
+ "type": "A String", # Identifier type. Possible values are ISBN_10, ISBN_13, ISSN and OTHER.
+ },
+ ],
+ "authors": [ # The names of the authors and/or editors for this volume. (In LITE projection)
+ "A String",
+ ],
+ "title": "A String", # Volume title. (In LITE projection.)
+ "canonicalVolumeLink": "A String", # Canonical URL for a volume. (In LITE projection.)
+ "infoLink": "A String", # URL to view information about this volume on the Google Books site. (In LITE projection)
+ "categories": [ # A list of subject categories, such as "Fiction", "Suspense", etc.
+ "A String",
+ ],
+ "averageRating": 3.14, # The mean review rating for this volume. (min = 1.0, max = 5.0)
+ },
+ "recommendedInfo": { # Recommendation related information for this volume.
+ "explanation": "A String", # A text explaining why this volume is recommended.
+ },
+ "id": "A String", # Unique identifier for a volume. (In LITE projection.)
+ "layerInfo": { # What layers exist in this volume and high level information about them.
+ "layers": [ # A layer should appear here if and only if the layer exists for this book.
+ {
+ "volumeAnnotationsVersion": "A String", # The current version of this layer's volume annotations. Note that this version applies only to the data in the books.layers.volumeAnnotations.* responses. The actual annotation data is versioned separately.
+ "layerId": "A String", # The layer id of this layer (e.g. "geo").
+ },
+ ],
+ },
+ "userInfo": { # User specific information related to this volume. (e.g. page this user last read or whether they purchased this book)
+ "isInMyBooks": True or False, # Whether or not this volume is currently in "my books."
+ "rentalPeriod": { # Period during this book is/was a valid rental.
+ "startUtcSec": "A String",
+ "endUtcSec": "A String",
+ },
+ "updated": "A String", # Timestamp when this volume was last modified by a user action, such as a reading position update, volume purchase or writing a review. (RFC 3339 UTC date-time format).
+ "userUploadedVolumeInfo": {
+ "processingState": "A String",
+ },
+ "rentalState": "A String", # Whether this book is an active or an expired rental.
+ "isPurchased": True or False, # Whether or not this volume was purchased by the authenticated user making the request. (In LITE projection.)
+ "readingPosition": { # The user's current reading position in the volume, if one is available. (In LITE projection.)
+ "kind": "books#readingPosition", # Resource type for a reading position.
+ "gbImagePosition": "A String", # Position in a volume for image-based content.
+ "epubCfiPosition": "A String", # Position in an EPUB as a CFI.
+ "updated": "A String", # Timestamp when this reading position was last updated (formatted UTC timestamp with millisecond resolution).
+ "volumeId": "A String", # Volume id associated with this reading position.
+ "pdfPosition": "A String", # Position in a PDF file.
+ "gbTextPosition": "A String", # Position in a volume for text-based content.
+ },
+ "review": { # This user's review of this volume, if one exists.
+ "rating": "A String", # Star rating for this review. Possible values are ONE, TWO, THREE, FOUR, FIVE or NOT_RATED.
+ "kind": "books#review", # Resource type for a review.
+ "author": { # Author of this review.
+ "displayName": "A String", # Name of this person.
+ },
+ "title": "A String", # Title for this review.
+ "volumeId": "A String", # Volume that this review is for.
+ "content": "A String", # Review text.
+ "source": { # Information regarding the source of this review, when the review is not from a Google Books user.
+ "extraDescription": "A String", # Extra text about the source of the review.
+ "url": "A String", # URL of the source of the review.
+ "description": "A String", # Name of the source.
+ },
+ "date": "A String", # Date of this review.
+ "type": "A String", # Source type for this review. Possible values are EDITORIAL, WEB_USER or GOOGLE_USER.
+ "fullTextUrl": "A String", # URL for the full review text, for reviews gathered from the web.
+ },
+ "isPreordered": True or False, # Whether or not this volume was pre-ordered by the authenticated user making the request. (In LITE projection.)
+ "copy": { # Copy/Paste accounting information.
+ "limitType": "A String",
+ "remainingCharacterCount": 42,
+ "updated": "A String",
+ "allowedCharacterCount": 42,
+ },
+ "isUploaded": True or False, # Whether or not this volume was user uploaded.
+ },
+ },
+ ],
+ "kind": "books#volumes", # Resource type.
+ }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/calendar_v3.channels.html b/docs/dyn/calendar_v3.channels.html
new file mode 100644
index 0000000..c65da65
--- /dev/null
+++ b/docs/dyn/calendar_v3.channels.html
@@ -0,0 +1,106 @@
+<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="calendar_v3.html">Calendar API</a> . <a href="calendar_v3.channels.html">channels</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#stop">stop(body)</a></code></p>
+<p class="firstline">A description of how to use this function</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="stop">stop(body)</code>
+ <pre>A description of how to use this function
+
+Args:
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{
+ "resourceUri": "A String", # The canonicalized ID of the watched resource.
+ "kind": "api#channel", # A channel watching an API resource
+ "resourceId": "A String", # An opaque id that identifies the resource that is being watched. Stable across different API versions
+ "token": "A String", # An arbitrary string associated with the channel that is delivered to the target address with each event delivered over this channel.
+ "params": { # Additional parameters controlling delivery channel behavior
+ "a_key": "A String", # Declares a new parameter by name.
+ },
+ "expiration": "A String", # The expiration instant for this channel if it is defined.
+ "address": "A String", # The address of the receiving entity where events are delivered. Specific to the channel type.
+ "type": "A String", # The type of delivery mechanism used by this channel
+ "id": "A String", # A UUID for the channel
+ }
+
+</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/calendar_v3.events.html b/docs/dyn/calendar_v3.events.html
index 14939a3..ab55b93 100644
--- a/docs/dyn/calendar_v3.events.html
+++ b/docs/dyn/calendar_v3.events.html
@@ -82,7 +82,7 @@
<p class="firstline">Returns an event.</p>
<p class="toc_element">
<code><a href="#import_">import_(calendarId, body)</a></code></p>
-<p class="firstline">Imports an event.</p>
+<p class="firstline">Imports an event. This operation is used to add a private copy of an existing event to a calendar.</p>
<p class="toc_element">
<code><a href="#insert">insert(calendarId, body, sendNotifications=None, maxAttendees=None)</a></code></p>
<p class="firstline">Creates an event.</p>
@@ -110,6 +110,9 @@
<p class="toc_element">
<code><a href="#update">update(calendarId, eventId, body, sendNotifications=None, alwaysIncludeEmail=None, maxAttendees=None)</a></code></p>
<p class="firstline">Updates an event.</p>
+<p class="toc_element">
+ <code><a href="#watch">watch(calendarId, body, orderBy=None, showHiddenInvitations=None, timeMin=None, pageToken=None, updatedMin=None, singleEvents=None, alwaysIncludeEmail=None, showDeleted=None, maxAttendees=None, iCalUID=None, maxResults=None, timeMax=None, q=None, timeZone=None)</a></code></p>
+<p class="firstline">Subscribe to changes in events collection</p>
<h3>Method Details</h3>
<div class="method">
<code class="details" id="delete">delete(calendarId, eventId, sendNotifications=None)</code>
@@ -170,15 +173,19 @@
"email": "A String", # The attendee's email address, if available. This field must be present when adding an attendee.
},
],
- "htmlLink": "A String", # An absolute link to this event in the Google Calendar Web UI. Read-only.
- "recurrence": [ # List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event. This field is omitted for single events or instances of recurring events.
- "A String",
- ],
"start": { # The (inclusive) start time of the event. For a recurring event, this is the start time of the first instance.
"date": "A String", # The date, in the format "yyyy-mm-dd", if this is an all-day event.
"timeZone": "A String", # The name of the time zone in which the time is specified (e.g. "Europe/Zurich"). Optional. The default is the time zone of the calendar.
"dateTime": "A String", # The time, as a combined date-time value (formatted according to RFC 3339). A time zone offset is required unless a time zone is explicitly specified in 'timeZone'.
},
+ "htmlLink": "A String", # An absolute link to this event in the Google Calendar Web UI. Read-only.
+ "recurrence": [ # List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event. This field is omitted for single events or instances of recurring events.
+ "A String",
+ ],
+ "source": { # Source of an event from which it was created; for example a web page, an email message or any document identifiable by an URL using HTTP/HTTPS protocol. Accessible only by the creator of the event.
+ "url": "A String", # URL of the source pointing to a resource. URL's protocol must be HTTP or HTTPS.
+ "title": "A String", # Title of the source; for example a title of a web page or an email subject.
+ },
"etag": "A String", # ETag of the resource.
"location": "A String", # Geographic location of the event as free-form text. Optional.
"recurringEventId": "A String", # For an instance of a recurring event, this is the event ID of the recurring event itself. Immutable.
@@ -252,13 +259,13 @@
"transparency": "A String", # Whether the event blocks time on the calendar. Optional. Possible values are:
# - "opaque" - The event blocks time on the calendar. This is the default value.
# - "transparent" - The event does not block time on the calendar.
- "privateCopy": True or False, # Whether this is a private event copy where changes are not shared with other copies on other calendars. Optional. Immutable.
+ "privateCopy": True or False, # Whether this is a private event copy where changes are not shared with other copies on other calendars. Optional. Immutable. The default is False.
}</pre>
</div>
<div class="method">
<code class="details" id="import_">import_(calendarId, body)</code>
- <pre>Imports an event.
+ <pre>Imports an event. This operation is used to add a private copy of an existing event to a calendar.
Args:
calendarId: string, Calendar identifier. (required)
@@ -299,15 +306,19 @@
"email": "A String", # The attendee's email address, if available. This field must be present when adding an attendee.
},
],
- "htmlLink": "A String", # An absolute link to this event in the Google Calendar Web UI. Read-only.
- "recurrence": [ # List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event. This field is omitted for single events or instances of recurring events.
- "A String",
- ],
"start": { # The (inclusive) start time of the event. For a recurring event, this is the start time of the first instance.
"date": "A String", # The date, in the format "yyyy-mm-dd", if this is an all-day event.
"timeZone": "A String", # The name of the time zone in which the time is specified (e.g. "Europe/Zurich"). Optional. The default is the time zone of the calendar.
"dateTime": "A String", # The time, as a combined date-time value (formatted according to RFC 3339). A time zone offset is required unless a time zone is explicitly specified in 'timeZone'.
},
+ "htmlLink": "A String", # An absolute link to this event in the Google Calendar Web UI. Read-only.
+ "recurrence": [ # List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event. This field is omitted for single events or instances of recurring events.
+ "A String",
+ ],
+ "source": { # Source of an event from which it was created; for example a web page, an email message or any document identifiable by an URL using HTTP/HTTPS protocol. Accessible only by the creator of the event.
+ "url": "A String", # URL of the source pointing to a resource. URL's protocol must be HTTP or HTTPS.
+ "title": "A String", # Title of the source; for example a title of a web page or an email subject.
+ },
"etag": "A String", # ETag of the resource.
"location": "A String", # Geographic location of the event as free-form text. Optional.
"recurringEventId": "A String", # For an instance of a recurring event, this is the event ID of the recurring event itself. Immutable.
@@ -381,7 +392,7 @@
"transparency": "A String", # Whether the event blocks time on the calendar. Optional. Possible values are:
# - "opaque" - The event blocks time on the calendar. This is the default value.
# - "transparent" - The event does not block time on the calendar.
- "privateCopy": True or False, # Whether this is a private event copy where changes are not shared with other copies on other calendars. Optional. Immutable.
+ "privateCopy": True or False, # Whether this is a private event copy where changes are not shared with other copies on other calendars. Optional. Immutable. The default is False.
}
@@ -422,15 +433,19 @@
"email": "A String", # The attendee's email address, if available. This field must be present when adding an attendee.
},
],
- "htmlLink": "A String", # An absolute link to this event in the Google Calendar Web UI. Read-only.
- "recurrence": [ # List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event. This field is omitted for single events or instances of recurring events.
- "A String",
- ],
"start": { # The (inclusive) start time of the event. For a recurring event, this is the start time of the first instance.
"date": "A String", # The date, in the format "yyyy-mm-dd", if this is an all-day event.
"timeZone": "A String", # The name of the time zone in which the time is specified (e.g. "Europe/Zurich"). Optional. The default is the time zone of the calendar.
"dateTime": "A String", # The time, as a combined date-time value (formatted according to RFC 3339). A time zone offset is required unless a time zone is explicitly specified in 'timeZone'.
},
+ "htmlLink": "A String", # An absolute link to this event in the Google Calendar Web UI. Read-only.
+ "recurrence": [ # List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event. This field is omitted for single events or instances of recurring events.
+ "A String",
+ ],
+ "source": { # Source of an event from which it was created; for example a web page, an email message or any document identifiable by an URL using HTTP/HTTPS protocol. Accessible only by the creator of the event.
+ "url": "A String", # URL of the source pointing to a resource. URL's protocol must be HTTP or HTTPS.
+ "title": "A String", # Title of the source; for example a title of a web page or an email subject.
+ },
"etag": "A String", # ETag of the resource.
"location": "A String", # Geographic location of the event as free-form text. Optional.
"recurringEventId": "A String", # For an instance of a recurring event, this is the event ID of the recurring event itself. Immutable.
@@ -504,7 +519,7 @@
"transparency": "A String", # Whether the event blocks time on the calendar. Optional. Possible values are:
# - "opaque" - The event blocks time on the calendar. This is the default value.
# - "transparent" - The event does not block time on the calendar.
- "privateCopy": True or False, # Whether this is a private event copy where changes are not shared with other copies on other calendars. Optional. Immutable.
+ "privateCopy": True or False, # Whether this is a private event copy where changes are not shared with other copies on other calendars. Optional. Immutable. The default is False.
}</pre>
</div>
@@ -551,15 +566,19 @@
"email": "A String", # The attendee's email address, if available. This field must be present when adding an attendee.
},
],
- "htmlLink": "A String", # An absolute link to this event in the Google Calendar Web UI. Read-only.
- "recurrence": [ # List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event. This field is omitted for single events or instances of recurring events.
- "A String",
- ],
"start": { # The (inclusive) start time of the event. For a recurring event, this is the start time of the first instance.
"date": "A String", # The date, in the format "yyyy-mm-dd", if this is an all-day event.
"timeZone": "A String", # The name of the time zone in which the time is specified (e.g. "Europe/Zurich"). Optional. The default is the time zone of the calendar.
"dateTime": "A String", # The time, as a combined date-time value (formatted according to RFC 3339). A time zone offset is required unless a time zone is explicitly specified in 'timeZone'.
},
+ "htmlLink": "A String", # An absolute link to this event in the Google Calendar Web UI. Read-only.
+ "recurrence": [ # List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event. This field is omitted for single events or instances of recurring events.
+ "A String",
+ ],
+ "source": { # Source of an event from which it was created; for example a web page, an email message or any document identifiable by an URL using HTTP/HTTPS protocol. Accessible only by the creator of the event.
+ "url": "A String", # URL of the source pointing to a resource. URL's protocol must be HTTP or HTTPS.
+ "title": "A String", # Title of the source; for example a title of a web page or an email subject.
+ },
"etag": "A String", # ETag of the resource.
"location": "A String", # Geographic location of the event as free-form text. Optional.
"recurringEventId": "A String", # For an instance of a recurring event, this is the event ID of the recurring event itself. Immutable.
@@ -633,7 +652,7 @@
"transparency": "A String", # Whether the event blocks time on the calendar. Optional. Possible values are:
# - "opaque" - The event blocks time on the calendar. This is the default value.
# - "transparent" - The event does not block time on the calendar.
- "privateCopy": True or False, # Whether this is a private event copy where changes are not shared with other copies on other calendars. Optional. Immutable.
+ "privateCopy": True or False, # Whether this is a private event copy where changes are not shared with other copies on other calendars. Optional. Immutable. The default is False.
}
sendNotifications: boolean, Whether to send notifications about the creation of the new event. Optional. The default is False.
@@ -676,15 +695,19 @@
"email": "A String", # The attendee's email address, if available. This field must be present when adding an attendee.
},
],
- "htmlLink": "A String", # An absolute link to this event in the Google Calendar Web UI. Read-only.
- "recurrence": [ # List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event. This field is omitted for single events or instances of recurring events.
- "A String",
- ],
"start": { # The (inclusive) start time of the event. For a recurring event, this is the start time of the first instance.
"date": "A String", # The date, in the format "yyyy-mm-dd", if this is an all-day event.
"timeZone": "A String", # The name of the time zone in which the time is specified (e.g. "Europe/Zurich"). Optional. The default is the time zone of the calendar.
"dateTime": "A String", # The time, as a combined date-time value (formatted according to RFC 3339). A time zone offset is required unless a time zone is explicitly specified in 'timeZone'.
},
+ "htmlLink": "A String", # An absolute link to this event in the Google Calendar Web UI. Read-only.
+ "recurrence": [ # List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event. This field is omitted for single events or instances of recurring events.
+ "A String",
+ ],
+ "source": { # Source of an event from which it was created; for example a web page, an email message or any document identifiable by an URL using HTTP/HTTPS protocol. Accessible only by the creator of the event.
+ "url": "A String", # URL of the source pointing to a resource. URL's protocol must be HTTP or HTTPS.
+ "title": "A String", # Title of the source; for example a title of a web page or an email subject.
+ },
"etag": "A String", # ETag of the resource.
"location": "A String", # Geographic location of the event as free-form text. Optional.
"recurringEventId": "A String", # For an instance of a recurring event, this is the event ID of the recurring event itself. Immutable.
@@ -758,7 +781,7 @@
"transparency": "A String", # Whether the event blocks time on the calendar. Optional. Possible values are:
# - "opaque" - The event blocks time on the calendar. This is the default value.
# - "transparent" - The event does not block time on the calendar.
- "privateCopy": True or False, # Whether this is a private event copy where changes are not shared with other copies on other calendars. Optional. Immutable.
+ "privateCopy": True or False, # Whether this is a private event copy where changes are not shared with other copies on other calendars. Optional. Immutable. The default is False.
}</pre>
</div>
@@ -830,15 +853,19 @@
"email": "A String", # The attendee's email address, if available. This field must be present when adding an attendee.
},
],
- "htmlLink": "A String", # An absolute link to this event in the Google Calendar Web UI. Read-only.
- "recurrence": [ # List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event. This field is omitted for single events or instances of recurring events.
- "A String",
- ],
"start": { # The (inclusive) start time of the event. For a recurring event, this is the start time of the first instance.
"date": "A String", # The date, in the format "yyyy-mm-dd", if this is an all-day event.
"timeZone": "A String", # The name of the time zone in which the time is specified (e.g. "Europe/Zurich"). Optional. The default is the time zone of the calendar.
"dateTime": "A String", # The time, as a combined date-time value (formatted according to RFC 3339). A time zone offset is required unless a time zone is explicitly specified in 'timeZone'.
},
+ "htmlLink": "A String", # An absolute link to this event in the Google Calendar Web UI. Read-only.
+ "recurrence": [ # List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event. This field is omitted for single events or instances of recurring events.
+ "A String",
+ ],
+ "source": { # Source of an event from which it was created; for example a web page, an email message or any document identifiable by an URL using HTTP/HTTPS protocol. Accessible only by the creator of the event.
+ "url": "A String", # URL of the source pointing to a resource. URL's protocol must be HTTP or HTTPS.
+ "title": "A String", # Title of the source; for example a title of a web page or an email subject.
+ },
"etag": "A String", # ETag of the resource.
"location": "A String", # Geographic location of the event as free-form text. Optional.
"recurringEventId": "A String", # For an instance of a recurring event, this is the event ID of the recurring event itself. Immutable.
@@ -912,7 +939,7 @@
"transparency": "A String", # Whether the event blocks time on the calendar. Optional. Possible values are:
# - "opaque" - The event blocks time on the calendar. This is the default value.
# - "transparent" - The event does not block time on the calendar.
- "privateCopy": True or False, # Whether this is a private event copy where changes are not shared with other copies on other calendars. Optional. Immutable.
+ "privateCopy": True or False, # Whether this is a private event copy where changes are not shared with other copies on other calendars. Optional. Immutable. The default is False.
},
],
"updated": "A String", # Last modification time of the calendar (as a RFC 3339 timestamp). Read-only.
@@ -958,7 +985,7 @@
updatedMin: string, Lower bound for an event's last modification time (as a RFC 3339 timestamp) to filter by. Optional. The default is not to filter by last modification time.
singleEvents: boolean, Whether to expand recurring events into instances and only return single one-off events and instances of recurring events, but not the underlying recurring events themselves. Optional. The default is False.
alwaysIncludeEmail: boolean, Whether to always include a value in the "email" field for the organizer, creator and attendees, even if no real email is available (i.e. a generated, non-working value will be provided). The use of this option is discouraged and should only be used by clients which cannot handle the absence of an email address value in the mentioned places. Optional. The default is False.
- showDeleted: boolean, Whether to include deleted events (with 'status' equals 'cancelled') in the result. Cancelled instances of recurring events (but not the underlying recurring event) will still be included if 'showDeleted' and 'singleEvents' are both False. If 'showDeleted' and 'singleEvents' are both True only single instances of deleted events (but not the underlying recurring events) are returned. Optional. The default is False.
+ showDeleted: boolean, Whether to include deleted events (with 'status' equals 'cancelled') in the result. Cancelled instances of recurring events (but not the underlying recurring event) will still be included if 'showDeleted' and 'singleEvents' are both False. If 'showDeleted' and 'singleEvents' are both True, only single instances of deleted events (but not the underlying recurring events) are returned. Optional. The default is False.
maxAttendees: integer, The maximum number of attendees to include in the response. If there are more than the specified number of attendees, only the participant is returned. Optional.
iCalUID: string, Specifies iCalendar UID (iCalUID) of events to be included in the response. Optional.
maxResults: integer, Maximum number of events returned on one result page. Optional.
@@ -1017,15 +1044,19 @@
"email": "A String", # The attendee's email address, if available. This field must be present when adding an attendee.
},
],
- "htmlLink": "A String", # An absolute link to this event in the Google Calendar Web UI. Read-only.
- "recurrence": [ # List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event. This field is omitted for single events or instances of recurring events.
- "A String",
- ],
"start": { # The (inclusive) start time of the event. For a recurring event, this is the start time of the first instance.
"date": "A String", # The date, in the format "yyyy-mm-dd", if this is an all-day event.
"timeZone": "A String", # The name of the time zone in which the time is specified (e.g. "Europe/Zurich"). Optional. The default is the time zone of the calendar.
"dateTime": "A String", # The time, as a combined date-time value (formatted according to RFC 3339). A time zone offset is required unless a time zone is explicitly specified in 'timeZone'.
},
+ "htmlLink": "A String", # An absolute link to this event in the Google Calendar Web UI. Read-only.
+ "recurrence": [ # List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event. This field is omitted for single events or instances of recurring events.
+ "A String",
+ ],
+ "source": { # Source of an event from which it was created; for example a web page, an email message or any document identifiable by an URL using HTTP/HTTPS protocol. Accessible only by the creator of the event.
+ "url": "A String", # URL of the source pointing to a resource. URL's protocol must be HTTP or HTTPS.
+ "title": "A String", # Title of the source; for example a title of a web page or an email subject.
+ },
"etag": "A String", # ETag of the resource.
"location": "A String", # Geographic location of the event as free-form text. Optional.
"recurringEventId": "A String", # For an instance of a recurring event, this is the event ID of the recurring event itself. Immutable.
@@ -1099,7 +1130,7 @@
"transparency": "A String", # Whether the event blocks time on the calendar. Optional. Possible values are:
# - "opaque" - The event blocks time on the calendar. This is the default value.
# - "transparent" - The event does not block time on the calendar.
- "privateCopy": True or False, # Whether this is a private event copy where changes are not shared with other copies on other calendars. Optional. Immutable.
+ "privateCopy": True or False, # Whether this is a private event copy where changes are not shared with other copies on other calendars. Optional. Immutable. The default is False.
},
],
"updated": "A String", # Last modification time of the calendar (as a RFC 3339 timestamp). Read-only.
@@ -1176,15 +1207,19 @@
"email": "A String", # The attendee's email address, if available. This field must be present when adding an attendee.
},
],
- "htmlLink": "A String", # An absolute link to this event in the Google Calendar Web UI. Read-only.
- "recurrence": [ # List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event. This field is omitted for single events or instances of recurring events.
- "A String",
- ],
"start": { # The (inclusive) start time of the event. For a recurring event, this is the start time of the first instance.
"date": "A String", # The date, in the format "yyyy-mm-dd", if this is an all-day event.
"timeZone": "A String", # The name of the time zone in which the time is specified (e.g. "Europe/Zurich"). Optional. The default is the time zone of the calendar.
"dateTime": "A String", # The time, as a combined date-time value (formatted according to RFC 3339). A time zone offset is required unless a time zone is explicitly specified in 'timeZone'.
},
+ "htmlLink": "A String", # An absolute link to this event in the Google Calendar Web UI. Read-only.
+ "recurrence": [ # List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event. This field is omitted for single events or instances of recurring events.
+ "A String",
+ ],
+ "source": { # Source of an event from which it was created; for example a web page, an email message or any document identifiable by an URL using HTTP/HTTPS protocol. Accessible only by the creator of the event.
+ "url": "A String", # URL of the source pointing to a resource. URL's protocol must be HTTP or HTTPS.
+ "title": "A String", # Title of the source; for example a title of a web page or an email subject.
+ },
"etag": "A String", # ETag of the resource.
"location": "A String", # Geographic location of the event as free-form text. Optional.
"recurringEventId": "A String", # For an instance of a recurring event, this is the event ID of the recurring event itself. Immutable.
@@ -1258,7 +1293,7 @@
"transparency": "A String", # Whether the event blocks time on the calendar. Optional. Possible values are:
# - "opaque" - The event blocks time on the calendar. This is the default value.
# - "transparent" - The event does not block time on the calendar.
- "privateCopy": True or False, # Whether this is a private event copy where changes are not shared with other copies on other calendars. Optional. Immutable.
+ "privateCopy": True or False, # Whether this is a private event copy where changes are not shared with other copies on other calendars. Optional. Immutable. The default is False.
}</pre>
</div>
@@ -1306,15 +1341,19 @@
"email": "A String", # The attendee's email address, if available. This field must be present when adding an attendee.
},
],
- "htmlLink": "A String", # An absolute link to this event in the Google Calendar Web UI. Read-only.
- "recurrence": [ # List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event. This field is omitted for single events or instances of recurring events.
- "A String",
- ],
"start": { # The (inclusive) start time of the event. For a recurring event, this is the start time of the first instance.
"date": "A String", # The date, in the format "yyyy-mm-dd", if this is an all-day event.
"timeZone": "A String", # The name of the time zone in which the time is specified (e.g. "Europe/Zurich"). Optional. The default is the time zone of the calendar.
"dateTime": "A String", # The time, as a combined date-time value (formatted according to RFC 3339). A time zone offset is required unless a time zone is explicitly specified in 'timeZone'.
},
+ "htmlLink": "A String", # An absolute link to this event in the Google Calendar Web UI. Read-only.
+ "recurrence": [ # List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event. This field is omitted for single events or instances of recurring events.
+ "A String",
+ ],
+ "source": { # Source of an event from which it was created; for example a web page, an email message or any document identifiable by an URL using HTTP/HTTPS protocol. Accessible only by the creator of the event.
+ "url": "A String", # URL of the source pointing to a resource. URL's protocol must be HTTP or HTTPS.
+ "title": "A String", # Title of the source; for example a title of a web page or an email subject.
+ },
"etag": "A String", # ETag of the resource.
"location": "A String", # Geographic location of the event as free-form text. Optional.
"recurringEventId": "A String", # For an instance of a recurring event, this is the event ID of the recurring event itself. Immutable.
@@ -1388,7 +1427,7 @@
"transparency": "A String", # Whether the event blocks time on the calendar. Optional. Possible values are:
# - "opaque" - The event blocks time on the calendar. This is the default value.
# - "transparent" - The event does not block time on the calendar.
- "privateCopy": True or False, # Whether this is a private event copy where changes are not shared with other copies on other calendars. Optional. Immutable.
+ "privateCopy": True or False, # Whether this is a private event copy where changes are not shared with other copies on other calendars. Optional. Immutable. The default is False.
}
sendNotifications: boolean, Whether to send notifications about the event update (e.g. attendee's responses, title changes, etc.). Optional. The default is False.
@@ -1432,15 +1471,19 @@
"email": "A String", # The attendee's email address, if available. This field must be present when adding an attendee.
},
],
- "htmlLink": "A String", # An absolute link to this event in the Google Calendar Web UI. Read-only.
- "recurrence": [ # List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event. This field is omitted for single events or instances of recurring events.
- "A String",
- ],
"start": { # The (inclusive) start time of the event. For a recurring event, this is the start time of the first instance.
"date": "A String", # The date, in the format "yyyy-mm-dd", if this is an all-day event.
"timeZone": "A String", # The name of the time zone in which the time is specified (e.g. "Europe/Zurich"). Optional. The default is the time zone of the calendar.
"dateTime": "A String", # The time, as a combined date-time value (formatted according to RFC 3339). A time zone offset is required unless a time zone is explicitly specified in 'timeZone'.
},
+ "htmlLink": "A String", # An absolute link to this event in the Google Calendar Web UI. Read-only.
+ "recurrence": [ # List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event. This field is omitted for single events or instances of recurring events.
+ "A String",
+ ],
+ "source": { # Source of an event from which it was created; for example a web page, an email message or any document identifiable by an URL using HTTP/HTTPS protocol. Accessible only by the creator of the event.
+ "url": "A String", # URL of the source pointing to a resource. URL's protocol must be HTTP or HTTPS.
+ "title": "A String", # Title of the source; for example a title of a web page or an email subject.
+ },
"etag": "A String", # ETag of the resource.
"location": "A String", # Geographic location of the event as free-form text. Optional.
"recurringEventId": "A String", # For an instance of a recurring event, this is the event ID of the recurring event itself. Immutable.
@@ -1514,7 +1557,7 @@
"transparency": "A String", # Whether the event blocks time on the calendar. Optional. Possible values are:
# - "opaque" - The event blocks time on the calendar. This is the default value.
# - "transparent" - The event does not block time on the calendar.
- "privateCopy": True or False, # Whether this is a private event copy where changes are not shared with other copies on other calendars. Optional. Immutable.
+ "privateCopy": True or False, # Whether this is a private event copy where changes are not shared with other copies on other calendars. Optional. Immutable. The default is False.
}</pre>
</div>
@@ -1564,15 +1607,19 @@
"email": "A String", # The attendee's email address, if available. This field must be present when adding an attendee.
},
],
- "htmlLink": "A String", # An absolute link to this event in the Google Calendar Web UI. Read-only.
- "recurrence": [ # List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event. This field is omitted for single events or instances of recurring events.
- "A String",
- ],
"start": { # The (inclusive) start time of the event. For a recurring event, this is the start time of the first instance.
"date": "A String", # The date, in the format "yyyy-mm-dd", if this is an all-day event.
"timeZone": "A String", # The name of the time zone in which the time is specified (e.g. "Europe/Zurich"). Optional. The default is the time zone of the calendar.
"dateTime": "A String", # The time, as a combined date-time value (formatted according to RFC 3339). A time zone offset is required unless a time zone is explicitly specified in 'timeZone'.
},
+ "htmlLink": "A String", # An absolute link to this event in the Google Calendar Web UI. Read-only.
+ "recurrence": [ # List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event. This field is omitted for single events or instances of recurring events.
+ "A String",
+ ],
+ "source": { # Source of an event from which it was created; for example a web page, an email message or any document identifiable by an URL using HTTP/HTTPS protocol. Accessible only by the creator of the event.
+ "url": "A String", # URL of the source pointing to a resource. URL's protocol must be HTTP or HTTPS.
+ "title": "A String", # Title of the source; for example a title of a web page or an email subject.
+ },
"etag": "A String", # ETag of the resource.
"location": "A String", # Geographic location of the event as free-form text. Optional.
"recurringEventId": "A String", # For an instance of a recurring event, this is the event ID of the recurring event itself. Immutable.
@@ -1646,7 +1693,7 @@
"transparency": "A String", # Whether the event blocks time on the calendar. Optional. Possible values are:
# - "opaque" - The event blocks time on the calendar. This is the default value.
# - "transparent" - The event does not block time on the calendar.
- "privateCopy": True or False, # Whether this is a private event copy where changes are not shared with other copies on other calendars. Optional. Immutable.
+ "privateCopy": True or False, # Whether this is a private event copy where changes are not shared with other copies on other calendars. Optional. Immutable. The default is False.
}</pre>
</div>
@@ -1694,15 +1741,19 @@
"email": "A String", # The attendee's email address, if available. This field must be present when adding an attendee.
},
],
- "htmlLink": "A String", # An absolute link to this event in the Google Calendar Web UI. Read-only.
- "recurrence": [ # List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event. This field is omitted for single events or instances of recurring events.
- "A String",
- ],
"start": { # The (inclusive) start time of the event. For a recurring event, this is the start time of the first instance.
"date": "A String", # The date, in the format "yyyy-mm-dd", if this is an all-day event.
"timeZone": "A String", # The name of the time zone in which the time is specified (e.g. "Europe/Zurich"). Optional. The default is the time zone of the calendar.
"dateTime": "A String", # The time, as a combined date-time value (formatted according to RFC 3339). A time zone offset is required unless a time zone is explicitly specified in 'timeZone'.
},
+ "htmlLink": "A String", # An absolute link to this event in the Google Calendar Web UI. Read-only.
+ "recurrence": [ # List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event. This field is omitted for single events or instances of recurring events.
+ "A String",
+ ],
+ "source": { # Source of an event from which it was created; for example a web page, an email message or any document identifiable by an URL using HTTP/HTTPS protocol. Accessible only by the creator of the event.
+ "url": "A String", # URL of the source pointing to a resource. URL's protocol must be HTTP or HTTPS.
+ "title": "A String", # Title of the source; for example a title of a web page or an email subject.
+ },
"etag": "A String", # ETag of the resource.
"location": "A String", # Geographic location of the event as free-form text. Optional.
"recurringEventId": "A String", # For an instance of a recurring event, this is the event ID of the recurring event itself. Immutable.
@@ -1776,7 +1827,7 @@
"transparency": "A String", # Whether the event blocks time on the calendar. Optional. Possible values are:
# - "opaque" - The event blocks time on the calendar. This is the default value.
# - "transparent" - The event does not block time on the calendar.
- "privateCopy": True or False, # Whether this is a private event copy where changes are not shared with other copies on other calendars. Optional. Immutable.
+ "privateCopy": True or False, # Whether this is a private event copy where changes are not shared with other copies on other calendars. Optional. Immutable. The default is False.
}
sendNotifications: boolean, Whether to send notifications about the event update (e.g. attendee's responses, title changes, etc.). Optional. The default is False.
@@ -1820,15 +1871,19 @@
"email": "A String", # The attendee's email address, if available. This field must be present when adding an attendee.
},
],
- "htmlLink": "A String", # An absolute link to this event in the Google Calendar Web UI. Read-only.
- "recurrence": [ # List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event. This field is omitted for single events or instances of recurring events.
- "A String",
- ],
"start": { # The (inclusive) start time of the event. For a recurring event, this is the start time of the first instance.
"date": "A String", # The date, in the format "yyyy-mm-dd", if this is an all-day event.
"timeZone": "A String", # The name of the time zone in which the time is specified (e.g. "Europe/Zurich"). Optional. The default is the time zone of the calendar.
"dateTime": "A String", # The time, as a combined date-time value (formatted according to RFC 3339). A time zone offset is required unless a time zone is explicitly specified in 'timeZone'.
},
+ "htmlLink": "A String", # An absolute link to this event in the Google Calendar Web UI. Read-only.
+ "recurrence": [ # List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event. This field is omitted for single events or instances of recurring events.
+ "A String",
+ ],
+ "source": { # Source of an event from which it was created; for example a web page, an email message or any document identifiable by an URL using HTTP/HTTPS protocol. Accessible only by the creator of the event.
+ "url": "A String", # URL of the source pointing to a resource. URL's protocol must be HTTP or HTTPS.
+ "title": "A String", # Title of the source; for example a title of a web page or an email subject.
+ },
"etag": "A String", # ETag of the resource.
"location": "A String", # Geographic location of the event as free-form text. Optional.
"recurringEventId": "A String", # For an instance of a recurring event, this is the event ID of the recurring event itself. Immutable.
@@ -1902,7 +1957,66 @@
"transparency": "A String", # Whether the event blocks time on the calendar. Optional. Possible values are:
# - "opaque" - The event blocks time on the calendar. This is the default value.
# - "transparent" - The event does not block time on the calendar.
- "privateCopy": True or False, # Whether this is a private event copy where changes are not shared with other copies on other calendars. Optional. Immutable.
+ "privateCopy": True or False, # Whether this is a private event copy where changes are not shared with other copies on other calendars. Optional. Immutable. The default is False.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="watch">watch(calendarId, body, orderBy=None, showHiddenInvitations=None, timeMin=None, pageToken=None, updatedMin=None, singleEvents=None, alwaysIncludeEmail=None, showDeleted=None, maxAttendees=None, iCalUID=None, maxResults=None, timeMax=None, q=None, timeZone=None)</code>
+ <pre>Subscribe to changes in events collection
+
+Args:
+ calendarId: string, Calendar identifier. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{
+ "resourceUri": "A String", # The canonicalized ID of the watched resource.
+ "kind": "api#channel", # A channel watching an API resource
+ "resourceId": "A String", # An opaque id that identifies the resource that is being watched. Stable across different API versions
+ "token": "A String", # An arbitrary string associated with the channel that is delivered to the target address with each event delivered over this channel.
+ "params": { # Additional parameters controlling delivery channel behavior
+ "a_key": "A String", # Declares a new parameter by name.
+ },
+ "expiration": "A String", # The expiration instant for this channel if it is defined.
+ "address": "A String", # The address of the receiving entity where events are delivered. Specific to the channel type.
+ "type": "A String", # The type of delivery mechanism used by this channel
+ "id": "A String", # A UUID for the channel
+ }
+
+ orderBy: string, The order of the events returned in the result. Optional. The default is an unspecified, stable order.
+ Allowed values
+ startTime - Order by the start date/time (ascending). This is only available when querying single events (i.e. the parameter "singleEvents" is True)
+ updated - Order by last modification time (ascending).
+ showHiddenInvitations: boolean, Whether to include hidden invitations in the result. Optional. The default is False.
+ timeMin: string, Lower bound (inclusive) for an event's end time to filter by. Optional. The default is not to filter by end time.
+ pageToken: string, Token specifying which result page to return. Optional.
+ updatedMin: string, Lower bound for an event's last modification time (as a RFC 3339 timestamp) to filter by. Optional. The default is not to filter by last modification time.
+ singleEvents: boolean, Whether to expand recurring events into instances and only return single one-off events and instances of recurring events, but not the underlying recurring events themselves. Optional. The default is False.
+ alwaysIncludeEmail: boolean, Whether to always include a value in the "email" field for the organizer, creator and attendees, even if no real email is available (i.e. a generated, non-working value will be provided). The use of this option is discouraged and should only be used by clients which cannot handle the absence of an email address value in the mentioned places. Optional. The default is False.
+ showDeleted: boolean, Whether to include deleted events (with 'status' equals 'cancelled') in the result. Cancelled instances of recurring events (but not the underlying recurring event) will still be included if 'showDeleted' and 'singleEvents' are both False. If 'showDeleted' and 'singleEvents' are both True, only single instances of deleted events (but not the underlying recurring events) are returned. Optional. The default is False.
+ maxAttendees: integer, The maximum number of attendees to include in the response. If there are more than the specified number of attendees, only the participant is returned. Optional.
+ iCalUID: string, Specifies iCalendar UID (iCalUID) of events to be included in the response. Optional.
+ maxResults: integer, Maximum number of events returned on one result page. Optional.
+ timeMax: string, Upper bound (exclusive) for an event's start time to filter by. Optional. The default is not to filter by start time.
+ q: string, Free text search terms to find events that match these terms in any field, except for extended properties. Optional.
+ timeZone: string, Time zone used in the response. Optional. The default is the time zone of the calendar.
+
+Returns:
+ An object of the form:
+
+ {
+ "resourceUri": "A String", # The canonicalized ID of the watched resource.
+ "kind": "api#channel", # A channel watching an API resource
+ "resourceId": "A String", # An opaque id that identifies the resource that is being watched. Stable across different API versions
+ "token": "A String", # An arbitrary string associated with the channel that is delivered to the target address with each event delivered over this channel.
+ "params": { # Additional parameters controlling delivery channel behavior
+ "a_key": "A String", # Declares a new parameter by name.
+ },
+ "expiration": "A String", # The expiration instant for this channel if it is defined.
+ "address": "A String", # The address of the receiving entity where events are delivered. Specific to the channel type.
+ "type": "A String", # The type of delivery mechanism used by this channel
+ "id": "A String", # A UUID for the channel
}</pre>
</div>
diff --git a/docs/dyn/calendar_v3.html b/docs/dyn/calendar_v3.html
index f2f2b8d..1681f9d 100644
--- a/docs/dyn/calendar_v3.html
+++ b/docs/dyn/calendar_v3.html
@@ -90,6 +90,11 @@
<p class="firstline">Returns the calendars Resource.</p>
<p class="toc_element">
+ <code><a href="calendar_v3.channels.html">channels()</a></code>
+</p>
+<p class="firstline">Returns the channels Resource.</p>
+
+<p class="toc_element">
<code><a href="calendar_v3.colors.html">colors()</a></code>
</p>
<p class="firstline">Returns the colors Resource.</p>
diff --git a/docs/dyn/civicinfo_us_v1.elections.html b/docs/dyn/civicinfo_us_v1.elections.html
index 6b4b906..af9b880 100644
--- a/docs/dyn/civicinfo_us_v1.elections.html
+++ b/docs/dyn/civicinfo_us_v1.elections.html
@@ -248,7 +248,7 @@
"numberVotingFor": "A String", # The number of candidates that a voter may vote for in this contest.
"office": "A String", # The name of the office for this contest.
"district": { # Describes the geographic scope of a contest. # Information about the electoral district that this contest is in.
- "scope": "A String", # The geographic scope of this district. If unspecified the district's geography is not known. One of: statewide, congressional, stateUpper, stateLower, countywide, judicial, schoolBoard, cityWide, special
+ "scope": "A String", # The geographic scope of this district. If unspecified the district's geography is not known. One of: national, statewide, congressional, stateUpper, stateLower, countywide, judicial, schoolBoard, cityWide, township, countyCouncil, cityCouncil, ward, special
"id": "A String", # An identifier for this district, relative to its scope. For example, the 34th State Senate district would have id "34" and a scope of stateUpper.
"name": "A String", # The name of the district.
},
@@ -281,9 +281,9 @@
},
],
"numberElected": "A String", # The number of candidates that will be elected to office in this contest.
- "referendumUrl": "A String", # A link the referendum. This field is only populated for contests of type 'Referendum'.
+ "referendumUrl": "A String", # A link to the referendum. This field is only populated for contests of type 'Referendum'.
"electorateSpecifications": "A String", # A description of any additional eligibility requirements for voting in this contest.
- "referendumTitle": "A String", # The title of the referendum. (e.g. 'Proposition 42') This field is only populated for contests of type 'Referendum'.
+ "referendumTitle": "A String", # The title of the referendum (e.g. 'Proposition 42'). This field is only populated for contests of type 'Referendum'.
"id": "A String", # An ID for this object. IDs may change in future requests and should not be cached. Access to this field requires special access that can be requested from the Request more link on the Quotas page.
"special": "A String", # "Yes" or "No" depending on whether this a contest being held outside the normal election cycle.
},
diff --git a/docs/dyn/compute_v1beta15.addresses.html b/docs/dyn/compute_v1beta15.addresses.html
new file mode 100644
index 0000000..0eacb0b
--- /dev/null
+++ b/docs/dyn/compute_v1beta15.addresses.html
@@ -0,0 +1,367 @@
+<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="compute_v1beta15.html">Compute Engine API</a> . <a href="compute_v1beta15.addresses.html">addresses</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#aggregatedList">aggregatedList(project, maxResults=None, pageToken=None, filter=None)</a></code></p>
+<p class="firstline">Retrieves the list of addresses grouped by scope.</p>
+<p class="toc_element">
+ <code><a href="#aggregatedList_next">aggregatedList_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="#delete">delete(project, region, address)</a></code></p>
+<p class="firstline">Deletes the specified address resource.</p>
+<p class="toc_element">
+ <code><a href="#get">get(project, region, address)</a></code></p>
+<p class="firstline">Returns the specified address resource.</p>
+<p class="toc_element">
+ <code><a href="#insert">insert(project, region, body)</a></code></p>
+<p class="firstline">Creates an address resource in the specified project using the data included in the request.</p>
+<p class="toc_element">
+ <code><a href="#list">list(project, region, maxResults=None, pageToken=None, filter=None)</a></code></p>
+<p class="firstline">Retrieves the list of address resources contained within the specified region.</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>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="aggregatedList">aggregatedList(project, maxResults=None, pageToken=None, filter=None)</code>
+ <pre>Retrieves the list of addresses grouped by scope.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ maxResults: integer, Optional. Maximum count of results to be returned. Maximum and default value is 100.
+ pageToken: string, Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a previous list request.
+ filter: string, Optional. Filter expression for filtering listed resources.
+
+Returns:
+ An object of the form:
+
+ {
+ "nextPageToken": "A String", # A token used to continue a truncated list request (output only).
+ "items": { # A map of scoped address lists.
+ "a_key": { # Name of the scope containing this set of addresses.
+ "warning": { # Informational warning which replaces the list of addresses when the list is empty.
+ "message": "A String", # Optional human-readable details for this warning.
+ "code": "A String", # The warning type identifier for this warning.
+ "data": [ # Metadata for this warning in 'key: value' format.
+ {
+ "value": "A String", # A warning data value corresponding to the key.
+ "key": "A String", # A key for the warning data.
+ },
+ ],
+ },
+ "addresses": [ # List of addresses contained in this scope.
+ { # A reserved address resource.
+ "status": "A String", # The status of the address (output only).
+ "kind": "compute#address", # Type of the resource.
+ "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
+ "region": "A String", # URL of the region where the address resides (output only).
+ "user": "A String", # URL of the resource currently using this address (output only).
+ "address": "A String", # The IP address represented by this resource.
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "name": "A String", # Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035.
+ },
+ ],
+ },
+ },
+ "kind": "compute#addressAggregatedList", # Type of resource.
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "selfLink": "A String", # Server defined URL for this resource (output only).
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="aggregatedList_next">aggregatedList_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="delete">delete(project, region, address)</code>
+ <pre>Deletes the specified address resource.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ region: string, Name of the region scoping this request. (required)
+ address: string, Name of the address resource to delete. (required)
+
+Returns:
+ An object of the form:
+
+ { # An operation resource, used to manage asynchronous API requests.
+ "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+ "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "zone": "A String", # URL of the zone where the operation resides (output only).
+ "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+ "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+ "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+ "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+ "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+ "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+ "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+ "warnings": [ # If warning messages generated during processing of this operation, this field will be populated (output only).
+ {
+ "message": "A String", # Optional human-readable details for this warning.
+ "code": "A String", # The warning type identifier for this warning.
+ "data": [ # Metadata for this warning in 'key: value' format.
+ {
+ "value": "A String", # A warning data value corresponding to the key.
+ "key": "A String", # A key for the warning data.
+ },
+ ],
+ },
+ ],
+ "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+ "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+ "kind": "compute#operation", # Type of the resource.
+ "name": "A String", # Name of the resource (output only).
+ "region": "A String", # URL of the region where the operation resides (output only).
+ "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+ "errors": [ # The array of errors encountered while processing this operation.
+ {
+ "message": "A String", # An optional, human-readable error message.
+ "code": "A String", # The error type identifier for this error.
+ "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+ },
+ ],
+ },
+ "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="get">get(project, region, address)</code>
+ <pre>Returns the specified address resource.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ region: string, Name of the region scoping this request. (required)
+ address: string, Name of the address resource to return. (required)
+
+Returns:
+ An object of the form:
+
+ { # A reserved address resource.
+ "status": "A String", # The status of the address (output only).
+ "kind": "compute#address", # Type of the resource.
+ "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
+ "region": "A String", # URL of the region where the address resides (output only).
+ "user": "A String", # URL of the resource currently using this address (output only).
+ "address": "A String", # The IP address represented by this resource.
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "name": "A String", # Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="insert">insert(project, region, body)</code>
+ <pre>Creates an address resource in the specified project using the data included in the request.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ region: string, Name of the region scoping this request. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # A reserved address resource.
+ "status": "A String", # The status of the address (output only).
+ "kind": "compute#address", # Type of the resource.
+ "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
+ "region": "A String", # URL of the region where the address resides (output only).
+ "user": "A String", # URL of the resource currently using this address (output only).
+ "address": "A String", # The IP address represented by this resource.
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "name": "A String", # Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035.
+ }
+
+
+Returns:
+ An object of the form:
+
+ { # An operation resource, used to manage asynchronous API requests.
+ "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+ "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "zone": "A String", # URL of the zone where the operation resides (output only).
+ "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+ "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+ "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+ "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+ "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+ "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+ "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+ "warnings": [ # If warning messages generated during processing of this operation, this field will be populated (output only).
+ {
+ "message": "A String", # Optional human-readable details for this warning.
+ "code": "A String", # The warning type identifier for this warning.
+ "data": [ # Metadata for this warning in 'key: value' format.
+ {
+ "value": "A String", # A warning data value corresponding to the key.
+ "key": "A String", # A key for the warning data.
+ },
+ ],
+ },
+ ],
+ "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+ "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+ "kind": "compute#operation", # Type of the resource.
+ "name": "A String", # Name of the resource (output only).
+ "region": "A String", # URL of the region where the operation resides (output only).
+ "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+ "errors": [ # The array of errors encountered while processing this operation.
+ {
+ "message": "A String", # An optional, human-readable error message.
+ "code": "A String", # The error type identifier for this error.
+ "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+ },
+ ],
+ },
+ "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="list">list(project, region, maxResults=None, pageToken=None, filter=None)</code>
+ <pre>Retrieves the list of address resources contained within the specified region.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ region: string, Name of the region scoping this request. (required)
+ maxResults: integer, Optional. Maximum count of results to be returned. Maximum and default value is 100.
+ pageToken: string, Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a previous list request.
+ filter: string, Optional. Filter expression for filtering listed resources.
+
+Returns:
+ An object of the form:
+
+ { # Contains a list of address resources.
+ "nextPageToken": "A String", # A token used to continue a truncated list request (output only).
+ "items": [ # The address resources.
+ { # A reserved address resource.
+ "status": "A String", # The status of the address (output only).
+ "kind": "compute#address", # Type of the resource.
+ "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
+ "region": "A String", # URL of the region where the address resides (output only).
+ "user": "A String", # URL of the resource currently using this address (output only).
+ "address": "A String", # The IP address represented by this resource.
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "name": "A String", # Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035.
+ },
+ ],
+ "kind": "compute#addressList", # Type of resource.
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "selfLink": "A String", # Server defined URL for this resource (output only).
+ }</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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/compute_v1beta15.disks.html b/docs/dyn/compute_v1beta15.disks.html
new file mode 100644
index 0000000..47cb29c
--- /dev/null
+++ b/docs/dyn/compute_v1beta15.disks.html
@@ -0,0 +1,452 @@
+<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="compute_v1beta15.html">Compute Engine API</a> . <a href="compute_v1beta15.disks.html">disks</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#aggregatedList">aggregatedList(project, maxResults=None, pageToken=None, filter=None)</a></code></p>
+<p class="firstline">Retrieves the list of disks grouped by scope.</p>
+<p class="toc_element">
+ <code><a href="#aggregatedList_next">aggregatedList_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="#createSnapshot">createSnapshot(project, zone, disk, body)</a></code></p>
+<p class="firstline">A description of how to use this function</p>
+<p class="toc_element">
+ <code><a href="#delete">delete(project, zone, disk)</a></code></p>
+<p class="firstline">Deletes the specified persistent disk resource.</p>
+<p class="toc_element">
+ <code><a href="#get">get(project, zone, disk)</a></code></p>
+<p class="firstline">Returns the specified persistent disk resource.</p>
+<p class="toc_element">
+ <code><a href="#insert">insert(project, zone, body, sourceImage=None)</a></code></p>
+<p class="firstline">Creates a persistent disk resource in the specified project using the data included in the request.</p>
+<p class="toc_element">
+ <code><a href="#list">list(project, zone, maxResults=None, pageToken=None, filter=None)</a></code></p>
+<p class="firstline">Retrieves the list of persistent disk resources contained within the specified zone.</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>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="aggregatedList">aggregatedList(project, maxResults=None, pageToken=None, filter=None)</code>
+ <pre>Retrieves the list of disks grouped by scope.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ maxResults: integer, Optional. Maximum count of results to be returned. Maximum and default value is 100.
+ pageToken: string, Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a previous list request.
+ filter: string, Optional. Filter expression for filtering listed resources.
+
+Returns:
+ An object of the form:
+
+ {
+ "nextPageToken": "A String", # A token used to continue a truncated list request (output only).
+ "items": { # A map of scoped disk lists.
+ "a_key": { # Name of the scope containing this set of disks.
+ "disks": [ # List of disks contained in this scope.
+ { # A persistent disk resource.
+ "status": "A String", # The status of disk creation (output only).
+ "sourceSnapshot": "A String", # The source snapshot used to create this disk. Once the source snapshot has been deleted from the system, this field will be cleared, and will not be set even if a snapshot with the same name has been re-created.
+ "kind": "compute#disk", # Type of the resource.
+ "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
+ "sizeGb": "A String", # Size of the persistent disk, specified in GB. This parameter is optional when creating a disk from a disk image or a snapshot, otherwise it is required.
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "sourceSnapshotId": "A String", # The 'id' value of the snapshot used to create this disk. This value may be used to determine whether the disk was created from the current or a previous instance of a given disk snapshot.
+ "zone": "A String", # URL of the zone where the disk resides (output only).
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "options": "A String", # Internal use only.
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "name": "A String", # Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035.
+ },
+ ],
+ "warning": { # Informational warning which replaces the list of disks when the list is empty.
+ "message": "A String", # Optional human-readable details for this warning.
+ "code": "A String", # The warning type identifier for this warning.
+ "data": [ # Metadata for this warning in 'key: value' format.
+ {
+ "value": "A String", # A warning data value corresponding to the key.
+ "key": "A String", # A key for the warning data.
+ },
+ ],
+ },
+ },
+ },
+ "kind": "compute#diskAggregatedList", # Type of resource.
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "selfLink": "A String", # Server defined URL for this resource (output only).
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="aggregatedList_next">aggregatedList_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="createSnapshot">createSnapshot(project, zone, disk, body)</code>
+ <pre>A description of how to use this function
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ zone: string, Name of the zone scoping this request. (required)
+ disk: string, Name of the persistent disk resource to delete. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # A persistent disk snapshot resource.
+ "status": "A String", # The status of the persistent disk snapshot (output only).
+ "kind": "compute#snapshot", # Type of the resource.
+ "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
+ "sourceDisk": "A String", # The source disk used to create this snapshot. Once the source disk has been deleted from the system, this field will be cleared, and will not be set even if a disk with the same name has been re-created (output only).
+ "sourceDiskId": "A String", # The 'id' value of the disk used to create this snapshot. This value may be used to determine whether the snapshot was taken from the current or a previous instance of a given disk name.
+ "diskSizeGb": "A String", # Size of the persistent disk snapshot, specified in GB (output only).
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "name": "A String", # Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035.
+ }
+
+
+Returns:
+ An object of the form:
+
+ { # An operation resource, used to manage asynchronous API requests.
+ "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+ "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "zone": "A String", # URL of the zone where the operation resides (output only).
+ "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+ "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+ "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+ "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+ "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+ "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+ "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+ "warnings": [ # If warning messages generated during processing of this operation, this field will be populated (output only).
+ {
+ "message": "A String", # Optional human-readable details for this warning.
+ "code": "A String", # The warning type identifier for this warning.
+ "data": [ # Metadata for this warning in 'key: value' format.
+ {
+ "value": "A String", # A warning data value corresponding to the key.
+ "key": "A String", # A key for the warning data.
+ },
+ ],
+ },
+ ],
+ "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+ "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+ "kind": "compute#operation", # Type of the resource.
+ "name": "A String", # Name of the resource (output only).
+ "region": "A String", # URL of the region where the operation resides (output only).
+ "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+ "errors": [ # The array of errors encountered while processing this operation.
+ {
+ "message": "A String", # An optional, human-readable error message.
+ "code": "A String", # The error type identifier for this error.
+ "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+ },
+ ],
+ },
+ "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="delete">delete(project, zone, disk)</code>
+ <pre>Deletes the specified persistent disk resource.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ zone: string, Name of the zone scoping this request. (required)
+ disk: string, Name of the persistent disk resource to delete. (required)
+
+Returns:
+ An object of the form:
+
+ { # An operation resource, used to manage asynchronous API requests.
+ "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+ "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "zone": "A String", # URL of the zone where the operation resides (output only).
+ "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+ "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+ "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+ "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+ "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+ "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+ "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+ "warnings": [ # If warning messages generated during processing of this operation, this field will be populated (output only).
+ {
+ "message": "A String", # Optional human-readable details for this warning.
+ "code": "A String", # The warning type identifier for this warning.
+ "data": [ # Metadata for this warning in 'key: value' format.
+ {
+ "value": "A String", # A warning data value corresponding to the key.
+ "key": "A String", # A key for the warning data.
+ },
+ ],
+ },
+ ],
+ "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+ "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+ "kind": "compute#operation", # Type of the resource.
+ "name": "A String", # Name of the resource (output only).
+ "region": "A String", # URL of the region where the operation resides (output only).
+ "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+ "errors": [ # The array of errors encountered while processing this operation.
+ {
+ "message": "A String", # An optional, human-readable error message.
+ "code": "A String", # The error type identifier for this error.
+ "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+ },
+ ],
+ },
+ "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="get">get(project, zone, disk)</code>
+ <pre>Returns the specified persistent disk resource.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ zone: string, Name of the zone scoping this request. (required)
+ disk: string, Name of the persistent disk resource to return. (required)
+
+Returns:
+ An object of the form:
+
+ { # A persistent disk resource.
+ "status": "A String", # The status of disk creation (output only).
+ "sourceSnapshot": "A String", # The source snapshot used to create this disk. Once the source snapshot has been deleted from the system, this field will be cleared, and will not be set even if a snapshot with the same name has been re-created.
+ "kind": "compute#disk", # Type of the resource.
+ "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
+ "sizeGb": "A String", # Size of the persistent disk, specified in GB. This parameter is optional when creating a disk from a disk image or a snapshot, otherwise it is required.
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "sourceSnapshotId": "A String", # The 'id' value of the snapshot used to create this disk. This value may be used to determine whether the disk was created from the current or a previous instance of a given disk snapshot.
+ "zone": "A String", # URL of the zone where the disk resides (output only).
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "options": "A String", # Internal use only.
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "name": "A String", # Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="insert">insert(project, zone, body, sourceImage=None)</code>
+ <pre>Creates a persistent disk resource in the specified project using the data included in the request.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ zone: string, Name of the zone scoping this request. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # A persistent disk resource.
+ "status": "A String", # The status of disk creation (output only).
+ "sourceSnapshot": "A String", # The source snapshot used to create this disk. Once the source snapshot has been deleted from the system, this field will be cleared, and will not be set even if a snapshot with the same name has been re-created.
+ "kind": "compute#disk", # Type of the resource.
+ "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
+ "sizeGb": "A String", # Size of the persistent disk, specified in GB. This parameter is optional when creating a disk from a disk image or a snapshot, otherwise it is required.
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "sourceSnapshotId": "A String", # The 'id' value of the snapshot used to create this disk. This value may be used to determine whether the disk was created from the current or a previous instance of a given disk snapshot.
+ "zone": "A String", # URL of the zone where the disk resides (output only).
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "options": "A String", # Internal use only.
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "name": "A String", # Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035.
+ }
+
+ sourceImage: string, Optional. Source image to restore onto a disk.
+
+Returns:
+ An object of the form:
+
+ { # An operation resource, used to manage asynchronous API requests.
+ "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+ "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "zone": "A String", # URL of the zone where the operation resides (output only).
+ "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+ "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+ "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+ "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+ "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+ "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+ "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+ "warnings": [ # If warning messages generated during processing of this operation, this field will be populated (output only).
+ {
+ "message": "A String", # Optional human-readable details for this warning.
+ "code": "A String", # The warning type identifier for this warning.
+ "data": [ # Metadata for this warning in 'key: value' format.
+ {
+ "value": "A String", # A warning data value corresponding to the key.
+ "key": "A String", # A key for the warning data.
+ },
+ ],
+ },
+ ],
+ "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+ "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+ "kind": "compute#operation", # Type of the resource.
+ "name": "A String", # Name of the resource (output only).
+ "region": "A String", # URL of the region where the operation resides (output only).
+ "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+ "errors": [ # The array of errors encountered while processing this operation.
+ {
+ "message": "A String", # An optional, human-readable error message.
+ "code": "A String", # The error type identifier for this error.
+ "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+ },
+ ],
+ },
+ "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="list">list(project, zone, maxResults=None, pageToken=None, filter=None)</code>
+ <pre>Retrieves the list of persistent disk resources contained within the specified zone.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ zone: string, Name of the zone scoping this request. (required)
+ maxResults: integer, Optional. Maximum count of results to be returned. Maximum and default value is 100.
+ pageToken: string, Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a previous list request.
+ filter: string, Optional. Filter expression for filtering listed resources.
+
+Returns:
+ An object of the form:
+
+ { # Contains a list of persistent disk resources.
+ "nextPageToken": "A String", # A token used to continue a truncated list request (output only).
+ "items": [ # The persistent disk resources.
+ { # A persistent disk resource.
+ "status": "A String", # The status of disk creation (output only).
+ "sourceSnapshot": "A String", # The source snapshot used to create this disk. Once the source snapshot has been deleted from the system, this field will be cleared, and will not be set even if a snapshot with the same name has been re-created.
+ "kind": "compute#disk", # Type of the resource.
+ "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
+ "sizeGb": "A String", # Size of the persistent disk, specified in GB. This parameter is optional when creating a disk from a disk image or a snapshot, otherwise it is required.
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "sourceSnapshotId": "A String", # The 'id' value of the snapshot used to create this disk. This value may be used to determine whether the disk was created from the current or a previous instance of a given disk snapshot.
+ "zone": "A String", # URL of the zone where the disk resides (output only).
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "options": "A String", # Internal use only.
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "name": "A String", # Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035.
+ },
+ ],
+ "kind": "compute#diskList", # Type of resource.
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "selfLink": "A String", # Server defined URL for this resource (output only).
+ }</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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/compute_v1beta15.firewalls.html b/docs/dyn/compute_v1beta15.firewalls.html
new file mode 100644
index 0000000..678a63f
--- /dev/null
+++ b/docs/dyn/compute_v1beta15.firewalls.html
@@ -0,0 +1,524 @@
+<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="compute_v1beta15.html">Compute Engine API</a> . <a href="compute_v1beta15.firewalls.html">firewalls</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#delete">delete(project, firewall)</a></code></p>
+<p class="firstline">Deletes the specified firewall resource.</p>
+<p class="toc_element">
+ <code><a href="#get">get(project, firewall)</a></code></p>
+<p class="firstline">Returns the specified firewall resource.</p>
+<p class="toc_element">
+ <code><a href="#insert">insert(project, body)</a></code></p>
+<p class="firstline">Creates a firewall resource in the specified project using the data included in the request.</p>
+<p class="toc_element">
+ <code><a href="#list">list(project, maxResults=None, pageToken=None, filter=None)</a></code></p>
+<p class="firstline">Retrieves the list of firewall resources available to the specified project.</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(project, firewall, body)</a></code></p>
+<p class="firstline">Updates the specified firewall resource with the data included in the request. This method supports patch semantics.</p>
+<p class="toc_element">
+ <code><a href="#update">update(project, firewall, body)</a></code></p>
+<p class="firstline">Updates the specified firewall resource with the data included in the request.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="delete">delete(project, firewall)</code>
+ <pre>Deletes the specified firewall resource.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ firewall: string, Name of the firewall resource to delete. (required)
+
+Returns:
+ An object of the form:
+
+ { # An operation resource, used to manage asynchronous API requests.
+ "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+ "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "zone": "A String", # URL of the zone where the operation resides (output only).
+ "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+ "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+ "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+ "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+ "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+ "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+ "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+ "warnings": [ # If warning messages generated during processing of this operation, this field will be populated (output only).
+ {
+ "message": "A String", # Optional human-readable details for this warning.
+ "code": "A String", # The warning type identifier for this warning.
+ "data": [ # Metadata for this warning in 'key: value' format.
+ {
+ "value": "A String", # A warning data value corresponding to the key.
+ "key": "A String", # A key for the warning data.
+ },
+ ],
+ },
+ ],
+ "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+ "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+ "kind": "compute#operation", # Type of the resource.
+ "name": "A String", # Name of the resource (output only).
+ "region": "A String", # URL of the region where the operation resides (output only).
+ "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+ "errors": [ # The array of errors encountered while processing this operation.
+ {
+ "message": "A String", # An optional, human-readable error message.
+ "code": "A String", # The error type identifier for this error.
+ "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+ },
+ ],
+ },
+ "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="get">get(project, firewall)</code>
+ <pre>Returns the specified firewall resource.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ firewall: string, Name of the firewall resource to return. (required)
+
+Returns:
+ An object of the form:
+
+ { # A firewall resource.
+ "kind": "compute#firewall", # Type of the resource.
+ "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
+ "sourceTags": [ # A list of instance tags which this rule applies to. One or both of sourceRanges and sourceTags may be set; an inbound connection is allowed if either the range or the tag of the source matches.
+ "A String",
+ ],
+ "sourceRanges": [ # A list of IP address blocks expressed in CIDR format which this rule applies to. One or both of sourceRanges and sourceTags may be set; an inbound connection is allowed if either the range or the tag of the source matches.
+ "A String",
+ ],
+ "network": "A String", # URL of the network to which this firewall is applied; provided by the client when the firewall is created.
+ "targetTags": [ # A list of instance tags indicating sets of instances located on network which may make network connections as specified in allowed. If no targetTags are specified, the firewall rule applies to all instances on the specified network.
+ "A String",
+ ],
+ "allowed": [ # The list of rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a permitted connection.
+ {
+ "IPProtocol": "A String", # Required; this is the IP protocol that is allowed for this rule. This can either be a well known protocol string (tcp, udp or icmp) or the IP protocol number.
+ "ports": [ # An optional list of ports which are allowed. It is an error to specify this for any protocol that isn't UDP or TCP. Each entry must be either an integer or a range. If not specified, connections through any port are allowed.
+ #
+ # Example inputs include: ["22"], ["80","443"] and ["12345-12349"].
+ "A String",
+ ],
+ },
+ ],
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "name": "A String", # Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="insert">insert(project, body)</code>
+ <pre>Creates a firewall resource in the specified project using the data included in the request.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # A firewall resource.
+ "kind": "compute#firewall", # Type of the resource.
+ "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
+ "sourceTags": [ # A list of instance tags which this rule applies to. One or both of sourceRanges and sourceTags may be set; an inbound connection is allowed if either the range or the tag of the source matches.
+ "A String",
+ ],
+ "sourceRanges": [ # A list of IP address blocks expressed in CIDR format which this rule applies to. One or both of sourceRanges and sourceTags may be set; an inbound connection is allowed if either the range or the tag of the source matches.
+ "A String",
+ ],
+ "network": "A String", # URL of the network to which this firewall is applied; provided by the client when the firewall is created.
+ "targetTags": [ # A list of instance tags indicating sets of instances located on network which may make network connections as specified in allowed. If no targetTags are specified, the firewall rule applies to all instances on the specified network.
+ "A String",
+ ],
+ "allowed": [ # The list of rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a permitted connection.
+ {
+ "IPProtocol": "A String", # Required; this is the IP protocol that is allowed for this rule. This can either be a well known protocol string (tcp, udp or icmp) or the IP protocol number.
+ "ports": [ # An optional list of ports which are allowed. It is an error to specify this for any protocol that isn't UDP or TCP. Each entry must be either an integer or a range. If not specified, connections through any port are allowed.
+ #
+ # Example inputs include: ["22"], ["80","443"] and ["12345-12349"].
+ "A String",
+ ],
+ },
+ ],
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "name": "A String", # Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035.
+ }
+
+
+Returns:
+ An object of the form:
+
+ { # An operation resource, used to manage asynchronous API requests.
+ "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+ "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "zone": "A String", # URL of the zone where the operation resides (output only).
+ "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+ "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+ "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+ "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+ "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+ "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+ "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+ "warnings": [ # If warning messages generated during processing of this operation, this field will be populated (output only).
+ {
+ "message": "A String", # Optional human-readable details for this warning.
+ "code": "A String", # The warning type identifier for this warning.
+ "data": [ # Metadata for this warning in 'key: value' format.
+ {
+ "value": "A String", # A warning data value corresponding to the key.
+ "key": "A String", # A key for the warning data.
+ },
+ ],
+ },
+ ],
+ "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+ "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+ "kind": "compute#operation", # Type of the resource.
+ "name": "A String", # Name of the resource (output only).
+ "region": "A String", # URL of the region where the operation resides (output only).
+ "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+ "errors": [ # The array of errors encountered while processing this operation.
+ {
+ "message": "A String", # An optional, human-readable error message.
+ "code": "A String", # The error type identifier for this error.
+ "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+ },
+ ],
+ },
+ "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="list">list(project, maxResults=None, pageToken=None, filter=None)</code>
+ <pre>Retrieves the list of firewall resources available to the specified project.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ maxResults: integer, Optional. Maximum count of results to be returned. Maximum and default value is 100.
+ pageToken: string, Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a previous list request.
+ filter: string, Optional. Filter expression for filtering listed resources.
+
+Returns:
+ An object of the form:
+
+ { # Contains a list of firewall resources.
+ "nextPageToken": "A String", # A token used to continue a truncated list request (output only).
+ "items": [ # The firewall resources.
+ { # A firewall resource.
+ "kind": "compute#firewall", # Type of the resource.
+ "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
+ "sourceTags": [ # A list of instance tags which this rule applies to. One or both of sourceRanges and sourceTags may be set; an inbound connection is allowed if either the range or the tag of the source matches.
+ "A String",
+ ],
+ "sourceRanges": [ # A list of IP address blocks expressed in CIDR format which this rule applies to. One or both of sourceRanges and sourceTags may be set; an inbound connection is allowed if either the range or the tag of the source matches.
+ "A String",
+ ],
+ "network": "A String", # URL of the network to which this firewall is applied; provided by the client when the firewall is created.
+ "targetTags": [ # A list of instance tags indicating sets of instances located on network which may make network connections as specified in allowed. If no targetTags are specified, the firewall rule applies to all instances on the specified network.
+ "A String",
+ ],
+ "allowed": [ # The list of rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a permitted connection.
+ {
+ "IPProtocol": "A String", # Required; this is the IP protocol that is allowed for this rule. This can either be a well known protocol string (tcp, udp or icmp) or the IP protocol number.
+ "ports": [ # An optional list of ports which are allowed. It is an error to specify this for any protocol that isn't UDP or TCP. Each entry must be either an integer or a range. If not specified, connections through any port are allowed.
+ #
+ # Example inputs include: ["22"], ["80","443"] and ["12345-12349"].
+ "A String",
+ ],
+ },
+ ],
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "name": "A String", # Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035.
+ },
+ ],
+ "kind": "compute#firewallList", # Type of resource.
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "selfLink": "A String", # Server defined URL for this resource (output only).
+ }</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(project, firewall, body)</code>
+ <pre>Updates the specified firewall resource with the data included in the request. This method supports patch semantics.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ firewall: string, Name of the firewall resource to update. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # A firewall resource.
+ "kind": "compute#firewall", # Type of the resource.
+ "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
+ "sourceTags": [ # A list of instance tags which this rule applies to. One or both of sourceRanges and sourceTags may be set; an inbound connection is allowed if either the range or the tag of the source matches.
+ "A String",
+ ],
+ "sourceRanges": [ # A list of IP address blocks expressed in CIDR format which this rule applies to. One or both of sourceRanges and sourceTags may be set; an inbound connection is allowed if either the range or the tag of the source matches.
+ "A String",
+ ],
+ "network": "A String", # URL of the network to which this firewall is applied; provided by the client when the firewall is created.
+ "targetTags": [ # A list of instance tags indicating sets of instances located on network which may make network connections as specified in allowed. If no targetTags are specified, the firewall rule applies to all instances on the specified network.
+ "A String",
+ ],
+ "allowed": [ # The list of rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a permitted connection.
+ {
+ "IPProtocol": "A String", # Required; this is the IP protocol that is allowed for this rule. This can either be a well known protocol string (tcp, udp or icmp) or the IP protocol number.
+ "ports": [ # An optional list of ports which are allowed. It is an error to specify this for any protocol that isn't UDP or TCP. Each entry must be either an integer or a range. If not specified, connections through any port are allowed.
+ #
+ # Example inputs include: ["22"], ["80","443"] and ["12345-12349"].
+ "A String",
+ ],
+ },
+ ],
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "name": "A String", # Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035.
+ }
+
+
+Returns:
+ An object of the form:
+
+ { # An operation resource, used to manage asynchronous API requests.
+ "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+ "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "zone": "A String", # URL of the zone where the operation resides (output only).
+ "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+ "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+ "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+ "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+ "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+ "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+ "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+ "warnings": [ # If warning messages generated during processing of this operation, this field will be populated (output only).
+ {
+ "message": "A String", # Optional human-readable details for this warning.
+ "code": "A String", # The warning type identifier for this warning.
+ "data": [ # Metadata for this warning in 'key: value' format.
+ {
+ "value": "A String", # A warning data value corresponding to the key.
+ "key": "A String", # A key for the warning data.
+ },
+ ],
+ },
+ ],
+ "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+ "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+ "kind": "compute#operation", # Type of the resource.
+ "name": "A String", # Name of the resource (output only).
+ "region": "A String", # URL of the region where the operation resides (output only).
+ "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+ "errors": [ # The array of errors encountered while processing this operation.
+ {
+ "message": "A String", # An optional, human-readable error message.
+ "code": "A String", # The error type identifier for this error.
+ "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+ },
+ ],
+ },
+ "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="update">update(project, firewall, body)</code>
+ <pre>Updates the specified firewall resource with the data included in the request.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ firewall: string, Name of the firewall resource to update. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # A firewall resource.
+ "kind": "compute#firewall", # Type of the resource.
+ "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
+ "sourceTags": [ # A list of instance tags which this rule applies to. One or both of sourceRanges and sourceTags may be set; an inbound connection is allowed if either the range or the tag of the source matches.
+ "A String",
+ ],
+ "sourceRanges": [ # A list of IP address blocks expressed in CIDR format which this rule applies to. One or both of sourceRanges and sourceTags may be set; an inbound connection is allowed if either the range or the tag of the source matches.
+ "A String",
+ ],
+ "network": "A String", # URL of the network to which this firewall is applied; provided by the client when the firewall is created.
+ "targetTags": [ # A list of instance tags indicating sets of instances located on network which may make network connections as specified in allowed. If no targetTags are specified, the firewall rule applies to all instances on the specified network.
+ "A String",
+ ],
+ "allowed": [ # The list of rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a permitted connection.
+ {
+ "IPProtocol": "A String", # Required; this is the IP protocol that is allowed for this rule. This can either be a well known protocol string (tcp, udp or icmp) or the IP protocol number.
+ "ports": [ # An optional list of ports which are allowed. It is an error to specify this for any protocol that isn't UDP or TCP. Each entry must be either an integer or a range. If not specified, connections through any port are allowed.
+ #
+ # Example inputs include: ["22"], ["80","443"] and ["12345-12349"].
+ "A String",
+ ],
+ },
+ ],
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "name": "A String", # Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035.
+ }
+
+
+Returns:
+ An object of the form:
+
+ { # An operation resource, used to manage asynchronous API requests.
+ "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+ "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "zone": "A String", # URL of the zone where the operation resides (output only).
+ "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+ "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+ "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+ "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+ "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+ "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+ "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+ "warnings": [ # If warning messages generated during processing of this operation, this field will be populated (output only).
+ {
+ "message": "A String", # Optional human-readable details for this warning.
+ "code": "A String", # The warning type identifier for this warning.
+ "data": [ # Metadata for this warning in 'key: value' format.
+ {
+ "value": "A String", # A warning data value corresponding to the key.
+ "key": "A String", # A key for the warning data.
+ },
+ ],
+ },
+ ],
+ "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+ "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+ "kind": "compute#operation", # Type of the resource.
+ "name": "A String", # Name of the resource (output only).
+ "region": "A String", # URL of the region where the operation resides (output only).
+ "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+ "errors": [ # The array of errors encountered while processing this operation.
+ {
+ "message": "A String", # An optional, human-readable error message.
+ "code": "A String", # The error type identifier for this error.
+ "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+ },
+ ],
+ },
+ "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+ }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/compute_v1beta15.globalOperations.html b/docs/dyn/compute_v1beta15.globalOperations.html
new file mode 100644
index 0000000..b647562
--- /dev/null
+++ b/docs/dyn/compute_v1beta15.globalOperations.html
@@ -0,0 +1,336 @@
+<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="compute_v1beta15.html">Compute Engine API</a> . <a href="compute_v1beta15.globalOperations.html">globalOperations</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#aggregatedList">aggregatedList(project, maxResults=None, pageToken=None, filter=None)</a></code></p>
+<p class="firstline">Retrieves the list of all operations grouped by scope.</p>
+<p class="toc_element">
+ <code><a href="#aggregatedList_next">aggregatedList_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="#delete">delete(project, operation)</a></code></p>
+<p class="firstline">Deletes the specified operation resource.</p>
+<p class="toc_element">
+ <code><a href="#get">get(project, operation)</a></code></p>
+<p class="firstline">Retrieves the specified operation resource.</p>
+<p class="toc_element">
+ <code><a href="#list">list(project, maxResults=None, pageToken=None, filter=None)</a></code></p>
+<p class="firstline">Retrieves the list of operation resources contained within the specified project.</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>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="aggregatedList">aggregatedList(project, maxResults=None, pageToken=None, filter=None)</code>
+ <pre>Retrieves the list of all operations grouped by scope.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ maxResults: integer, Optional. Maximum count of results to be returned. Maximum and default value is 100.
+ pageToken: string, Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a previous list request.
+ filter: string, Optional. Filter expression for filtering listed resources.
+
+Returns:
+ An object of the form:
+
+ {
+ "nextPageToken": "A String", # A token used to continue a truncated list request (output only).
+ "items": { # A map of scoped operation lists.
+ "a_key": { # Name of the scope containing this set of operations.
+ "operations": [ # List of operations contained in this scope.
+ { # An operation resource, used to manage asynchronous API requests.
+ "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+ "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "zone": "A String", # URL of the zone where the operation resides (output only).
+ "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+ "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+ "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+ "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+ "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+ "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+ "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+ "warnings": [ # If warning messages generated during processing of this operation, this field will be populated (output only).
+ {
+ "message": "A String", # Optional human-readable details for this warning.
+ "code": "A String", # The warning type identifier for this warning.
+ "data": [ # Metadata for this warning in 'key: value' format.
+ {
+ "value": "A String", # A warning data value corresponding to the key.
+ "key": "A String", # A key for the warning data.
+ },
+ ],
+ },
+ ],
+ "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+ "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+ "kind": "compute#operation", # Type of the resource.
+ "name": "A String", # Name of the resource (output only).
+ "region": "A String", # URL of the region where the operation resides (output only).
+ "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+ "errors": [ # The array of errors encountered while processing this operation.
+ {
+ "message": "A String", # An optional, human-readable error message.
+ "code": "A String", # The error type identifier for this error.
+ "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+ },
+ ],
+ },
+ "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+ },
+ ],
+ "warning": { # Informational warning which replaces the list of operations when the list is empty.
+ "message": "A String", # Optional human-readable details for this warning.
+ "code": "A String", # The warning type identifier for this warning.
+ "data": [ # Metadata for this warning in 'key: value' format.
+ {
+ "value": "A String", # A warning data value corresponding to the key.
+ "key": "A String", # A key for the warning data.
+ },
+ ],
+ },
+ },
+ },
+ "kind": "compute#operationAggregatedList", # Type of resource.
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "selfLink": "A String", # Server defined URL for this resource (output only).
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="aggregatedList_next">aggregatedList_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="delete">delete(project, operation)</code>
+ <pre>Deletes the specified operation resource.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ operation: string, Name of the operation resource to delete. (required)
+</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="get">get(project, operation)</code>
+ <pre>Retrieves the specified operation resource.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ operation: string, Name of the operation resource to return. (required)
+
+Returns:
+ An object of the form:
+
+ { # An operation resource, used to manage asynchronous API requests.
+ "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+ "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "zone": "A String", # URL of the zone where the operation resides (output only).
+ "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+ "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+ "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+ "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+ "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+ "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+ "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+ "warnings": [ # If warning messages generated during processing of this operation, this field will be populated (output only).
+ {
+ "message": "A String", # Optional human-readable details for this warning.
+ "code": "A String", # The warning type identifier for this warning.
+ "data": [ # Metadata for this warning in 'key: value' format.
+ {
+ "value": "A String", # A warning data value corresponding to the key.
+ "key": "A String", # A key for the warning data.
+ },
+ ],
+ },
+ ],
+ "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+ "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+ "kind": "compute#operation", # Type of the resource.
+ "name": "A String", # Name of the resource (output only).
+ "region": "A String", # URL of the region where the operation resides (output only).
+ "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+ "errors": [ # The array of errors encountered while processing this operation.
+ {
+ "message": "A String", # An optional, human-readable error message.
+ "code": "A String", # The error type identifier for this error.
+ "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+ },
+ ],
+ },
+ "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="list">list(project, maxResults=None, pageToken=None, filter=None)</code>
+ <pre>Retrieves the list of operation resources contained within the specified project.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ maxResults: integer, Optional. Maximum count of results to be returned. Maximum and default value is 100.
+ pageToken: string, Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a previous list request.
+ filter: string, Optional. Filter expression for filtering listed resources.
+
+Returns:
+ An object of the form:
+
+ { # Contains a list of operation resources.
+ "nextPageToken": "A String", # A token used to continue a truncated list request (output only).
+ "items": [ # The operation resources.
+ { # An operation resource, used to manage asynchronous API requests.
+ "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+ "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "zone": "A String", # URL of the zone where the operation resides (output only).
+ "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+ "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+ "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+ "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+ "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+ "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+ "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+ "warnings": [ # If warning messages generated during processing of this operation, this field will be populated (output only).
+ {
+ "message": "A String", # Optional human-readable details for this warning.
+ "code": "A String", # The warning type identifier for this warning.
+ "data": [ # Metadata for this warning in 'key: value' format.
+ {
+ "value": "A String", # A warning data value corresponding to the key.
+ "key": "A String", # A key for the warning data.
+ },
+ ],
+ },
+ ],
+ "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+ "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+ "kind": "compute#operation", # Type of the resource.
+ "name": "A String", # Name of the resource (output only).
+ "region": "A String", # URL of the region where the operation resides (output only).
+ "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+ "errors": [ # The array of errors encountered while processing this operation.
+ {
+ "message": "A String", # An optional, human-readable error message.
+ "code": "A String", # The error type identifier for this error.
+ "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+ },
+ ],
+ },
+ "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+ },
+ ],
+ "kind": "compute#operationList", # Type of resource.
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "selfLink": "A String", # Server defined URL for this resource (output only).
+ }</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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/compute_v1beta15.html b/docs/dyn/compute_v1beta15.html
new file mode 100644
index 0000000..dcf75f8
--- /dev/null
+++ b/docs/dyn/compute_v1beta15.html
@@ -0,0 +1,162 @@
+<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="compute_v1beta15.html">Compute Engine API</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="compute_v1beta15.addresses.html">addresses()</a></code>
+</p>
+<p class="firstline">Returns the addresses Resource.</p>
+
+<p class="toc_element">
+ <code><a href="compute_v1beta15.disks.html">disks()</a></code>
+</p>
+<p class="firstline">Returns the disks Resource.</p>
+
+<p class="toc_element">
+ <code><a href="compute_v1beta15.firewalls.html">firewalls()</a></code>
+</p>
+<p class="firstline">Returns the firewalls Resource.</p>
+
+<p class="toc_element">
+ <code><a href="compute_v1beta15.globalOperations.html">globalOperations()</a></code>
+</p>
+<p class="firstline">Returns the globalOperations Resource.</p>
+
+<p class="toc_element">
+ <code><a href="compute_v1beta15.httpHealthChecks.html">httpHealthChecks()</a></code>
+</p>
+<p class="firstline">Returns the httpHealthChecks Resource.</p>
+
+<p class="toc_element">
+ <code><a href="compute_v1beta15.images.html">images()</a></code>
+</p>
+<p class="firstline">Returns the images Resource.</p>
+
+<p class="toc_element">
+ <code><a href="compute_v1beta15.instances.html">instances()</a></code>
+</p>
+<p class="firstline">Returns the instances Resource.</p>
+
+<p class="toc_element">
+ <code><a href="compute_v1beta15.kernels.html">kernels()</a></code>
+</p>
+<p class="firstline">Returns the kernels Resource.</p>
+
+<p class="toc_element">
+ <code><a href="compute_v1beta15.machineTypes.html">machineTypes()</a></code>
+</p>
+<p class="firstline">Returns the machineTypes Resource.</p>
+
+<p class="toc_element">
+ <code><a href="compute_v1beta15.networks.html">networks()</a></code>
+</p>
+<p class="firstline">Returns the networks Resource.</p>
+
+<p class="toc_element">
+ <code><a href="compute_v1beta15.projects.html">projects()</a></code>
+</p>
+<p class="firstline">Returns the projects Resource.</p>
+
+<p class="toc_element">
+ <code><a href="compute_v1beta15.regionOperations.html">regionOperations()</a></code>
+</p>
+<p class="firstline">Returns the regionOperations Resource.</p>
+
+<p class="toc_element">
+ <code><a href="compute_v1beta15.regions.html">regions()</a></code>
+</p>
+<p class="firstline">Returns the regions Resource.</p>
+
+<p class="toc_element">
+ <code><a href="compute_v1beta15.routes.html">routes()</a></code>
+</p>
+<p class="firstline">Returns the routes Resource.</p>
+
+<p class="toc_element">
+ <code><a href="compute_v1beta15.snapshots.html">snapshots()</a></code>
+</p>
+<p class="firstline">Returns the snapshots Resource.</p>
+
+<p class="toc_element">
+ <code><a href="compute_v1beta15.zoneOperations.html">zoneOperations()</a></code>
+</p>
+<p class="firstline">Returns the zoneOperations Resource.</p>
+
+<p class="toc_element">
+ <code><a href="compute_v1beta15.zones.html">zones()</a></code>
+</p>
+<p class="firstline">Returns the zones Resource.</p>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/compute_v1beta15.httpHealthChecks.html b/docs/dyn/compute_v1beta15.httpHealthChecks.html
new file mode 100644
index 0000000..951e94f
--- /dev/null
+++ b/docs/dyn/compute_v1beta15.httpHealthChecks.html
@@ -0,0 +1,156 @@
+<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="compute_v1beta15.html">Compute Engine API</a> . <a href="compute_v1beta15.httpHealthChecks.html">httpHealthChecks</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#patch">patch(project, httpHealthCheck, body)</a></code></p>
+<p class="firstline">Updates a HttpHealthCheck resource in the specified project using the data included in the request. This method supports patch semantics.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="patch">patch(project, httpHealthCheck, body)</code>
+ <pre>Updates a HttpHealthCheck resource in the specified project using the data included in the request. This method supports patch semantics.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ httpHealthCheck: string, Name of the HttpHealthCheck resource to update. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # An HttpHealthCheck resource. This resource defines a template for how individual VMs should be checked for health, via HTTP.
+ "kind": "compute#httpHealthCheck", # Type of the resource.
+ "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
+ "timeoutSec": 42, # How long (in seconds) to wait before claiming failure. The default value is 5 seconds.
+ "checkIntervalSec": 42, # How often (in seconds) to send a health check. The default value is 5 seconds.
+ "port": 42, # The TCP port number for the HTTP health check request. The default value is 80.
+ "healthyThreshold": 42, # A so-far unhealthy VM will be marked healthy after this many consecutive successes. The default value is 2.
+ "host": "A String", # The value of the host header in the HTTP health check request. If left empty (default value), the public IP on behalf of which this health check is performed will be used.
+ "requestPath": "A String", # The request path of the HTTP health check request. The default value is "/".
+ "unhealthyThreshold": 42, # A so-far healthy VM will be marked unhealthy after this many consecutive failures. The default value is 2.
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "name": "A String", # Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035.
+ }
+
+
+Returns:
+ An object of the form:
+
+ { # An operation resource, used to manage asynchronous API requests.
+ "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+ "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "zone": "A String", # URL of the zone where the operation resides (output only).
+ "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+ "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+ "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+ "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+ "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+ "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+ "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+ "warnings": [ # If warning messages generated during processing of this operation, this field will be populated (output only).
+ {
+ "message": "A String", # Optional human-readable details for this warning.
+ "code": "A String", # The warning type identifier for this warning.
+ "data": [ # Metadata for this warning in 'key: value' format.
+ {
+ "value": "A String", # A warning data value corresponding to the key.
+ "key": "A String", # A key for the warning data.
+ },
+ ],
+ },
+ ],
+ "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+ "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+ "kind": "compute#operation", # Type of the resource.
+ "name": "A String", # Name of the resource (output only).
+ "region": "A String", # URL of the region where the operation resides (output only).
+ "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+ "errors": [ # The array of errors encountered while processing this operation.
+ {
+ "message": "A String", # An optional, human-readable error message.
+ "code": "A String", # The error type identifier for this error.
+ "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+ },
+ ],
+ },
+ "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+ }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/compute_v1beta15.images.html b/docs/dyn/compute_v1beta15.images.html
new file mode 100644
index 0000000..13555d5
--- /dev/null
+++ b/docs/dyn/compute_v1beta15.images.html
@@ -0,0 +1,397 @@
+<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="compute_v1beta15.html">Compute Engine API</a> . <a href="compute_v1beta15.images.html">images</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#delete">delete(project, image)</a></code></p>
+<p class="firstline">Deletes the specified image resource.</p>
+<p class="toc_element">
+ <code><a href="#deprecate">deprecate(project, image, body)</a></code></p>
+<p class="firstline">Sets the deprecation status of an image. If no message body is given, clears the deprecation status instead.</p>
+<p class="toc_element">
+ <code><a href="#get">get(project, image)</a></code></p>
+<p class="firstline">Returns the specified image resource.</p>
+<p class="toc_element">
+ <code><a href="#insert">insert(project, body)</a></code></p>
+<p class="firstline">Creates an image resource in the specified project using the data included in the request.</p>
+<p class="toc_element">
+ <code><a href="#list">list(project, maxResults=None, pageToken=None, filter=None)</a></code></p>
+<p class="firstline">Retrieves the list of image resources available to the specified project.</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>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="delete">delete(project, image)</code>
+ <pre>Deletes the specified image resource.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ image: string, Name of the image resource to delete. (required)
+
+Returns:
+ An object of the form:
+
+ { # An operation resource, used to manage asynchronous API requests.
+ "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+ "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "zone": "A String", # URL of the zone where the operation resides (output only).
+ "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+ "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+ "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+ "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+ "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+ "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+ "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+ "warnings": [ # If warning messages generated during processing of this operation, this field will be populated (output only).
+ {
+ "message": "A String", # Optional human-readable details for this warning.
+ "code": "A String", # The warning type identifier for this warning.
+ "data": [ # Metadata for this warning in 'key: value' format.
+ {
+ "value": "A String", # A warning data value corresponding to the key.
+ "key": "A String", # A key for the warning data.
+ },
+ ],
+ },
+ ],
+ "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+ "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+ "kind": "compute#operation", # Type of the resource.
+ "name": "A String", # Name of the resource (output only).
+ "region": "A String", # URL of the region where the operation resides (output only).
+ "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+ "errors": [ # The array of errors encountered while processing this operation.
+ {
+ "message": "A String", # An optional, human-readable error message.
+ "code": "A String", # The error type identifier for this error.
+ "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+ },
+ ],
+ },
+ "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="deprecate">deprecate(project, image, body)</code>
+ <pre>Sets the deprecation status of an image. If no message body is given, clears the deprecation status instead.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ image: string, Image name. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # Deprecation status for a public resource.
+ "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
+ "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+ "state": "A String", # The deprecation state. Can be "DEPRECATED", "OBSOLETE", or "DELETED". Operations which create a new resource using a "DEPRECATED" resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. New uses of "OBSOLETE" or "DELETED" resources will result in an error.
+ "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+ "replacement": "A String", # A URL of the suggested replacement for the deprecated resource. The deprecated resource and its replacement must be resources of the same kind.
+}
+
+
+Returns:
+ An object of the form:
+
+ { # An operation resource, used to manage asynchronous API requests.
+ "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+ "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "zone": "A String", # URL of the zone where the operation resides (output only).
+ "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+ "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+ "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+ "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+ "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+ "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+ "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+ "warnings": [ # If warning messages generated during processing of this operation, this field will be populated (output only).
+ {
+ "message": "A String", # Optional human-readable details for this warning.
+ "code": "A String", # The warning type identifier for this warning.
+ "data": [ # Metadata for this warning in 'key: value' format.
+ {
+ "value": "A String", # A warning data value corresponding to the key.
+ "key": "A String", # A key for the warning data.
+ },
+ ],
+ },
+ ],
+ "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+ "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+ "kind": "compute#operation", # Type of the resource.
+ "name": "A String", # Name of the resource (output only).
+ "region": "A String", # URL of the region where the operation resides (output only).
+ "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+ "errors": [ # The array of errors encountered while processing this operation.
+ {
+ "message": "A String", # An optional, human-readable error message.
+ "code": "A String", # The error type identifier for this error.
+ "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+ },
+ ],
+ },
+ "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="get">get(project, image)</code>
+ <pre>Returns the specified image resource.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ image: string, Name of the image resource to return. (required)
+
+Returns:
+ An object of the form:
+
+ { # A disk image resource.
+ "status": "A String", # Status of the image (output only). It will be one of the following READY - after image has been successfully created and is ready for use FAILED - if creating the image fails for some reason PENDING - the image creation is in progress An image can be used to create other resources suck as instances only after the image has been successfully created and the status is set to READY.
+ "kind": "compute#image", # Type of the resource.
+ "description": "A String", # Textual description of the resource; provided by the client when the resource is created.
+ "rawDisk": { # The raw disk image parameters.
+ "containerType": "TAR", # The format used to encode and transmit the block device. Should be TAR. This is just a container and transmission format and not a runtime format. Provided by the client when the disk image is created.
+ "source": "A String", # The full Google Cloud Storage URL where the disk image is stored; provided by the client when the disk image is created.
+ "sha1Checksum": "A String", # An optional SHA1 checksum of the disk image before unpackaging; provided by the client when the disk image is created.
+ },
+ "preferredKernel": "A String", # An optional URL of the preferred kernel for use with this disk image. If not specified, a server defined default kernel will be used.
+ "deprecated": { # Deprecation status for a public resource. # The deprecation status associated with this image.
+ "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
+ "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+ "state": "A String", # The deprecation state. Can be "DEPRECATED", "OBSOLETE", or "DELETED". Operations which create a new resource using a "DEPRECATED" resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. New uses of "OBSOLETE" or "DELETED" resources will result in an error.
+ "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+ "replacement": "A String", # A URL of the suggested replacement for the deprecated resource. The deprecated resource and its replacement must be resources of the same kind.
+ },
+ "sourceType": "RAW", # Must be "RAW"; provided by the client when the disk image is created.
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "name": "A String", # Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="insert">insert(project, body)</code>
+ <pre>Creates an image resource in the specified project using the data included in the request.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # A disk image resource.
+ "status": "A String", # Status of the image (output only). It will be one of the following READY - after image has been successfully created and is ready for use FAILED - if creating the image fails for some reason PENDING - the image creation is in progress An image can be used to create other resources suck as instances only after the image has been successfully created and the status is set to READY.
+ "kind": "compute#image", # Type of the resource.
+ "description": "A String", # Textual description of the resource; provided by the client when the resource is created.
+ "rawDisk": { # The raw disk image parameters.
+ "containerType": "TAR", # The format used to encode and transmit the block device. Should be TAR. This is just a container and transmission format and not a runtime format. Provided by the client when the disk image is created.
+ "source": "A String", # The full Google Cloud Storage URL where the disk image is stored; provided by the client when the disk image is created.
+ "sha1Checksum": "A String", # An optional SHA1 checksum of the disk image before unpackaging; provided by the client when the disk image is created.
+ },
+ "preferredKernel": "A String", # An optional URL of the preferred kernel for use with this disk image. If not specified, a server defined default kernel will be used.
+ "deprecated": { # Deprecation status for a public resource. # The deprecation status associated with this image.
+ "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
+ "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+ "state": "A String", # The deprecation state. Can be "DEPRECATED", "OBSOLETE", or "DELETED". Operations which create a new resource using a "DEPRECATED" resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. New uses of "OBSOLETE" or "DELETED" resources will result in an error.
+ "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+ "replacement": "A String", # A URL of the suggested replacement for the deprecated resource. The deprecated resource and its replacement must be resources of the same kind.
+ },
+ "sourceType": "RAW", # Must be "RAW"; provided by the client when the disk image is created.
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "name": "A String", # Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035.
+ }
+
+
+Returns:
+ An object of the form:
+
+ { # An operation resource, used to manage asynchronous API requests.
+ "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+ "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "zone": "A String", # URL of the zone where the operation resides (output only).
+ "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+ "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+ "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+ "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+ "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+ "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+ "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+ "warnings": [ # If warning messages generated during processing of this operation, this field will be populated (output only).
+ {
+ "message": "A String", # Optional human-readable details for this warning.
+ "code": "A String", # The warning type identifier for this warning.
+ "data": [ # Metadata for this warning in 'key: value' format.
+ {
+ "value": "A String", # A warning data value corresponding to the key.
+ "key": "A String", # A key for the warning data.
+ },
+ ],
+ },
+ ],
+ "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+ "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+ "kind": "compute#operation", # Type of the resource.
+ "name": "A String", # Name of the resource (output only).
+ "region": "A String", # URL of the region where the operation resides (output only).
+ "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+ "errors": [ # The array of errors encountered while processing this operation.
+ {
+ "message": "A String", # An optional, human-readable error message.
+ "code": "A String", # The error type identifier for this error.
+ "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+ },
+ ],
+ },
+ "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="list">list(project, maxResults=None, pageToken=None, filter=None)</code>
+ <pre>Retrieves the list of image resources available to the specified project.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ maxResults: integer, Optional. Maximum count of results to be returned. Maximum and default value is 100.
+ pageToken: string, Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a previous list request.
+ filter: string, Optional. Filter expression for filtering listed resources.
+
+Returns:
+ An object of the form:
+
+ { # Contains a list of disk image resources.
+ "nextPageToken": "A String", # A token used to continue a truncated list request (output only).
+ "items": [ # The disk image resources.
+ { # A disk image resource.
+ "status": "A String", # Status of the image (output only). It will be one of the following READY - after image has been successfully created and is ready for use FAILED - if creating the image fails for some reason PENDING - the image creation is in progress An image can be used to create other resources suck as instances only after the image has been successfully created and the status is set to READY.
+ "kind": "compute#image", # Type of the resource.
+ "description": "A String", # Textual description of the resource; provided by the client when the resource is created.
+ "rawDisk": { # The raw disk image parameters.
+ "containerType": "TAR", # The format used to encode and transmit the block device. Should be TAR. This is just a container and transmission format and not a runtime format. Provided by the client when the disk image is created.
+ "source": "A String", # The full Google Cloud Storage URL where the disk image is stored; provided by the client when the disk image is created.
+ "sha1Checksum": "A String", # An optional SHA1 checksum of the disk image before unpackaging; provided by the client when the disk image is created.
+ },
+ "preferredKernel": "A String", # An optional URL of the preferred kernel for use with this disk image. If not specified, a server defined default kernel will be used.
+ "deprecated": { # Deprecation status for a public resource. # The deprecation status associated with this image.
+ "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
+ "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+ "state": "A String", # The deprecation state. Can be "DEPRECATED", "OBSOLETE", or "DELETED". Operations which create a new resource using a "DEPRECATED" resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. New uses of "OBSOLETE" or "DELETED" resources will result in an error.
+ "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+ "replacement": "A String", # A URL of the suggested replacement for the deprecated resource. The deprecated resource and its replacement must be resources of the same kind.
+ },
+ "sourceType": "RAW", # Must be "RAW"; provided by the client when the disk image is created.
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "name": "A String", # Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035.
+ },
+ ],
+ "kind": "compute#imageList", # Type of resource.
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "selfLink": "A String", # Server defined URL for this resource (output only).
+ }</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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/compute_v1beta15.instances.html b/docs/dyn/compute_v1beta15.instances.html
new file mode 100644
index 0000000..4a6f91d
--- /dev/null
+++ b/docs/dyn/compute_v1beta15.instances.html
@@ -0,0 +1,1072 @@
+<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="compute_v1beta15.html">Compute Engine API</a> . <a href="compute_v1beta15.instances.html">instances</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#addAccessConfig">addAccessConfig(project, zone, instance, networkInterface, body)</a></code></p>
+<p class="firstline">Adds an access config to an instance's network interface.</p>
+<p class="toc_element">
+ <code><a href="#aggregatedList">aggregatedList(project, maxResults=None, pageToken=None, filter=None)</a></code></p>
+<p class="firstline">A description of how to use this function</p>
+<p class="toc_element">
+ <code><a href="#aggregatedList_next">aggregatedList_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="#attachDisk">attachDisk(project, zone, instance, body)</a></code></p>
+<p class="firstline">Attaches a disk resource to an instance.</p>
+<p class="toc_element">
+ <code><a href="#delete">delete(project, zone, instance)</a></code></p>
+<p class="firstline">Deletes the specified instance resource.</p>
+<p class="toc_element">
+ <code><a href="#deleteAccessConfig">deleteAccessConfig(project, zone, instance, accessConfig, networkInterface)</a></code></p>
+<p class="firstline">Deletes an access config from an instance's network interface.</p>
+<p class="toc_element">
+ <code><a href="#detachDisk">detachDisk(project, zone, instance, deviceName)</a></code></p>
+<p class="firstline">Detaches a disk from an instance.</p>
+<p class="toc_element">
+ <code><a href="#get">get(project, zone, instance)</a></code></p>
+<p class="firstline">Returns the specified instance resource.</p>
+<p class="toc_element">
+ <code><a href="#getSerialPortOutput">getSerialPortOutput(project, zone, instance)</a></code></p>
+<p class="firstline">Returns the specified instance's serial port output.</p>
+<p class="toc_element">
+ <code><a href="#insert">insert(project, zone, body)</a></code></p>
+<p class="firstline">Creates an instance resource in the specified project using the data included in the request.</p>
+<p class="toc_element">
+ <code><a href="#list">list(project, zone, maxResults=None, pageToken=None, filter=None)</a></code></p>
+<p class="firstline">Retrieves the list of instance resources contained within the specified zone.</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="#reset">reset(project, zone, instance)</a></code></p>
+<p class="firstline">Performs a hard reset on the instance.</p>
+<p class="toc_element">
+ <code><a href="#setMetadata">setMetadata(project, zone, instance, body)</a></code></p>
+<p class="firstline">Sets metadata for the specified instance to the data included in the request.</p>
+<p class="toc_element">
+ <code><a href="#setTags">setTags(project, zone, instance, body)</a></code></p>
+<p class="firstline">Sets tags for the specified instance to the data included in the request.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="addAccessConfig">addAccessConfig(project, zone, instance, networkInterface, body)</code>
+ <pre>Adds an access config to an instance's network interface.
+
+Args:
+ project: string, Project name. (required)
+ zone: string, Name of the zone scoping this request. (required)
+ instance: string, Instance name. (required)
+ networkInterface: string, Network interface name. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # An access configuration attached to an instance's network interface.
+ "kind": "compute#accessConfig", # Type of the resource.
+ "type": "ONE_TO_ONE_NAT", # Type of configuration. Must be set to "ONE_TO_ONE_NAT". This configures port-for-port NAT to the internet.
+ "name": "A String", # Name of this access configuration.
+ "natIP": "A String", # An external IP address associated with this instance. Specify an unused static IP address available to the project. If not specified, the external IP will be drawn from a shared ephemeral pool.
+}
+
+
+Returns:
+ An object of the form:
+
+ { # An operation resource, used to manage asynchronous API requests.
+ "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+ "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "zone": "A String", # URL of the zone where the operation resides (output only).
+ "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+ "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+ "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+ "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+ "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+ "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+ "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+ "warnings": [ # If warning messages generated during processing of this operation, this field will be populated (output only).
+ {
+ "message": "A String", # Optional human-readable details for this warning.
+ "code": "A String", # The warning type identifier for this warning.
+ "data": [ # Metadata for this warning in 'key: value' format.
+ {
+ "value": "A String", # A warning data value corresponding to the key.
+ "key": "A String", # A key for the warning data.
+ },
+ ],
+ },
+ ],
+ "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+ "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+ "kind": "compute#operation", # Type of the resource.
+ "name": "A String", # Name of the resource (output only).
+ "region": "A String", # URL of the region where the operation resides (output only).
+ "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+ "errors": [ # The array of errors encountered while processing this operation.
+ {
+ "message": "A String", # An optional, human-readable error message.
+ "code": "A String", # The error type identifier for this error.
+ "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+ },
+ ],
+ },
+ "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="aggregatedList">aggregatedList(project, maxResults=None, pageToken=None, filter=None)</code>
+ <pre>A description of how to use this function
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ maxResults: integer, Optional. Maximum count of results to be returned. Maximum and default value is 100.
+ pageToken: string, Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a previous list request.
+ filter: string, Optional. Filter expression for filtering listed resources.
+
+Returns:
+ An object of the form:
+
+ {
+ "nextPageToken": "A String", # A token used to continue a truncated list request (output only).
+ "items": { # A map of scoped instance lists.
+ "a_key": { # Name of the scope containing this set of instances.
+ "instances": [ # List of instances contained in this scope.
+ { # An instance resource.
+ "status": "A String", # Instance status. One of the following values: "PROVISIONING", "STAGING", "RUNNING", "STOPPING", "STOPPED", "TERMINATED" (output only).
+ "kernel": "A String", # URL of the kernel resource to use when booting. In case of booting from persistent disk, this parameter is required. When booting from a disk image, it is optional, but may be provided to use a different kernel than the one associated with the image.
+ "kind": "compute#instance", # Type of the resource.
+ "canIpForward": True or False, # Allows this instance to send packets with source IP addresses other than its own and receive packets with destination IP addresses other than its own. If this instance will be used as an IP gateway or it will be set as the next-hop in a Route resource, say true. If unsure, leave this set to false.
+ "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
+ "zone": "A String", # URL of the zone where the instance resides (output only).
+ "tags": { # A set of instance tags. # A list of tags to be applied to this instance. Used to identify valid sources or targets for network firewalls. Provided by the client on instance creation. The tags can be later modified by the setTags method. Each tag within the list must comply with RFC1035.
+ "items": [ # An array of tags. Each tag must be 1-63 characters long, and comply with RFC1035.
+ "A String",
+ ],
+ "fingerprint": "A String", # Fingerprint of this resource. A hash of the tags stored in this object. This field is used optimistic locking. An up-to-date tags fingerprint must be provided in order to modify tags.
+ },
+ "image": "A String", # An optional URL of the disk image resource to be installed on this instance; provided by the client when the instance is created. Alternatively to passing the image, the client may choose to boot from a persistent disk, by setting boot=true flag on one of the entries in disks[] collection.
+ "disks": [ # Array of disks associated with this instance. Persistent disks must be created before you can assign them.
+ { # An instance-attached disk resource.
+ "deviceName": "A String", # Persistent disk only; must be unique within the instance when specified. This represents a unique device name that is reflected into the /dev/ tree of a Linux operating system running within the instance. If not specified, a default will be chosen by the system.
+ "kind": "compute#attachedDisk", # Type of the resource.
+ "index": 42, # A zero-based index to assign to this disk, where 0 is reserved for the boot disk. If not specified, the server will choose an appropriate value (output only).
+ "boot": True or False, # Indicates that this is a boot disk. VM will use the first partition of the disk for its root filesystem.
+ "source": "A String", # Persistent disk only; the URL of the persistent disk resource.
+ "mode": "A String", # The mode in which to attach this disk, either "READ_WRITE" or "READ_ONLY".
+ "type": "A String", # Type of the disk, either "SCRATCH" or "PERSISTENT". Note that persistent disks must be created before you can specify them here.
+ },
+ ],
+ "name": "A String", # Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035.
+ "statusMessage": "A String", # An optional, human-readable explanation of the status (output only).
+ "machineType": "A String", # URL of the machine type resource describing which machine type to use to host the instance; provided by the client when the instance is created.
+ "serviceAccounts": [ # A list of service accounts each with specified scopes, for which access tokens are to be made available to the instance through metadata queries.
+ { # A service account.
+ "scopes": [ # The list of scopes to be made available for this service account.
+ "A String",
+ ],
+ "email": "A String", # Email address of the service account.
+ },
+ ],
+ "networkInterfaces": [ # Array of configurations for this interface. This specifies how this interface is configured to interact with other network services, such as connecting to the internet. Currently, ONE_TO_ONE_NAT is the only access config supported. If there are no accessConfigs specified, then this instance will have no external internet access.
+ { # A network interface resource attached to an instance.
+ "accessConfigs": [ # Array of configurations for this interface. This specifies how this interface is configured to interact with other network services, such as connecting to the internet. Currently, ONE_TO_ONE_NAT is the only access config supported. If there are no accessConfigs specified, then this instance will have no external internet access.
+ { # An access configuration attached to an instance's network interface.
+ "kind": "compute#accessConfig", # Type of the resource.
+ "type": "ONE_TO_ONE_NAT", # Type of configuration. Must be set to "ONE_TO_ONE_NAT". This configures port-for-port NAT to the internet.
+ "name": "A String", # Name of this access configuration.
+ "natIP": "A String", # An external IP address associated with this instance. Specify an unused static IP address available to the project. If not specified, the external IP will be drawn from a shared ephemeral pool.
+ },
+ ],
+ "networkIP": "A String", # An optional IPV4 internal network address assigned to the instance for this network interface (output only).
+ "name": "A String", # Name of the network interface, determined by the server; for network devices, these are e.g. eth0, eth1, etc. (output only).
+ "network": "A String", # URL of the network resource attached to this interface.
+ },
+ ],
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "selfLink": "A String", # Server defined URL for this resource (output only).
+ "metadata": { # A metadata key/value entry. # Metadata key/value pairs assigned to this instance. Consists of custom metadata or predefined keys; see Instance documentation for more information.
+ "items": [ # Array of key/value pairs. The total size of all keys and values must be less than 512 KB.
+ {
+ "value": "A String", # Value for the metadata entry. These are free-form strings, and only have meaning as interpreted by the image running in the instance. The only restriction placed on values is that their size must be less than or equal to 32768 bytes.
+ "key": "A String", # Key for the metadata entry. Keys must conform to the following regexp: [a-zA-Z0-9-_]+, and be less than 128 bytes in length. This is reflected as part of a URL in the metadata server. Additionally, to avoid ambiguity, keys must not conflict with any other metadata keys for the project.
+ },
+ ],
+ "kind": "compute#metadata", # Type of the resource.
+ "fingerprint": "A String", # Fingerprint of this resource. A hash of the metadata's contents. This field is used for optimistic locking. An up-to-date metadata fingerprint must be provided in order to modify metadata.
+ },
+ },
+ ],
+ "warning": { # Informational warning which replaces the list of instances when the list is empty.
+ "message": "A String", # Optional human-readable details for this warning.
+ "code": "A String", # The warning type identifier for this warning.
+ "data": [ # Metadata for this warning in 'key: value' format.
+ {
+ "value": "A String", # A warning data value corresponding to the key.
+ "key": "A String", # A key for the warning data.
+ },
+ ],
+ },
+ },
+ },
+ "kind": "compute#instanceAggregatedList", # Type of resource.
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "selfLink": "A String", # Server defined URL for this resource (output only).
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="aggregatedList_next">aggregatedList_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="attachDisk">attachDisk(project, zone, instance, body)</code>
+ <pre>Attaches a disk resource to an instance.
+
+Args:
+ project: string, Project name. (required)
+ zone: string, Name of the zone scoping this request. (required)
+ instance: string, Instance name. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # An instance-attached disk resource.
+ "deviceName": "A String", # Persistent disk only; must be unique within the instance when specified. This represents a unique device name that is reflected into the /dev/ tree of a Linux operating system running within the instance. If not specified, a default will be chosen by the system.
+ "kind": "compute#attachedDisk", # Type of the resource.
+ "index": 42, # A zero-based index to assign to this disk, where 0 is reserved for the boot disk. If not specified, the server will choose an appropriate value (output only).
+ "boot": True or False, # Indicates that this is a boot disk. VM will use the first partition of the disk for its root filesystem.
+ "source": "A String", # Persistent disk only; the URL of the persistent disk resource.
+ "mode": "A String", # The mode in which to attach this disk, either "READ_WRITE" or "READ_ONLY".
+ "type": "A String", # Type of the disk, either "SCRATCH" or "PERSISTENT". Note that persistent disks must be created before you can specify them here.
+ }
+
+
+Returns:
+ An object of the form:
+
+ { # An operation resource, used to manage asynchronous API requests.
+ "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+ "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "zone": "A String", # URL of the zone where the operation resides (output only).
+ "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+ "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+ "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+ "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+ "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+ "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+ "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+ "warnings": [ # If warning messages generated during processing of this operation, this field will be populated (output only).
+ {
+ "message": "A String", # Optional human-readable details for this warning.
+ "code": "A String", # The warning type identifier for this warning.
+ "data": [ # Metadata for this warning in 'key: value' format.
+ {
+ "value": "A String", # A warning data value corresponding to the key.
+ "key": "A String", # A key for the warning data.
+ },
+ ],
+ },
+ ],
+ "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+ "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+ "kind": "compute#operation", # Type of the resource.
+ "name": "A String", # Name of the resource (output only).
+ "region": "A String", # URL of the region where the operation resides (output only).
+ "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+ "errors": [ # The array of errors encountered while processing this operation.
+ {
+ "message": "A String", # An optional, human-readable error message.
+ "code": "A String", # The error type identifier for this error.
+ "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+ },
+ ],
+ },
+ "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="delete">delete(project, zone, instance)</code>
+ <pre>Deletes the specified instance resource.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ zone: string, Name of the zone scoping this request. (required)
+ instance: string, Name of the instance resource to delete. (required)
+
+Returns:
+ An object of the form:
+
+ { # An operation resource, used to manage asynchronous API requests.
+ "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+ "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "zone": "A String", # URL of the zone where the operation resides (output only).
+ "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+ "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+ "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+ "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+ "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+ "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+ "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+ "warnings": [ # If warning messages generated during processing of this operation, this field will be populated (output only).
+ {
+ "message": "A String", # Optional human-readable details for this warning.
+ "code": "A String", # The warning type identifier for this warning.
+ "data": [ # Metadata for this warning in 'key: value' format.
+ {
+ "value": "A String", # A warning data value corresponding to the key.
+ "key": "A String", # A key for the warning data.
+ },
+ ],
+ },
+ ],
+ "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+ "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+ "kind": "compute#operation", # Type of the resource.
+ "name": "A String", # Name of the resource (output only).
+ "region": "A String", # URL of the region where the operation resides (output only).
+ "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+ "errors": [ # The array of errors encountered while processing this operation.
+ {
+ "message": "A String", # An optional, human-readable error message.
+ "code": "A String", # The error type identifier for this error.
+ "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+ },
+ ],
+ },
+ "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="deleteAccessConfig">deleteAccessConfig(project, zone, instance, accessConfig, networkInterface)</code>
+ <pre>Deletes an access config from an instance's network interface.
+
+Args:
+ project: string, Project name. (required)
+ zone: string, Name of the zone scoping this request. (required)
+ instance: string, Instance name. (required)
+ accessConfig: string, Access config name. (required)
+ networkInterface: string, Network interface name. (required)
+
+Returns:
+ An object of the form:
+
+ { # An operation resource, used to manage asynchronous API requests.
+ "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+ "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "zone": "A String", # URL of the zone where the operation resides (output only).
+ "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+ "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+ "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+ "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+ "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+ "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+ "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+ "warnings": [ # If warning messages generated during processing of this operation, this field will be populated (output only).
+ {
+ "message": "A String", # Optional human-readable details for this warning.
+ "code": "A String", # The warning type identifier for this warning.
+ "data": [ # Metadata for this warning in 'key: value' format.
+ {
+ "value": "A String", # A warning data value corresponding to the key.
+ "key": "A String", # A key for the warning data.
+ },
+ ],
+ },
+ ],
+ "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+ "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+ "kind": "compute#operation", # Type of the resource.
+ "name": "A String", # Name of the resource (output only).
+ "region": "A String", # URL of the region where the operation resides (output only).
+ "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+ "errors": [ # The array of errors encountered while processing this operation.
+ {
+ "message": "A String", # An optional, human-readable error message.
+ "code": "A String", # The error type identifier for this error.
+ "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+ },
+ ],
+ },
+ "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="detachDisk">detachDisk(project, zone, instance, deviceName)</code>
+ <pre>Detaches a disk from an instance.
+
+Args:
+ project: string, Project name. (required)
+ zone: string, Name of the zone scoping this request. (required)
+ instance: string, Instance name. (required)
+ deviceName: string, Disk device name to detach. (required)
+
+Returns:
+ An object of the form:
+
+ { # An operation resource, used to manage asynchronous API requests.
+ "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+ "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "zone": "A String", # URL of the zone where the operation resides (output only).
+ "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+ "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+ "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+ "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+ "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+ "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+ "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+ "warnings": [ # If warning messages generated during processing of this operation, this field will be populated (output only).
+ {
+ "message": "A String", # Optional human-readable details for this warning.
+ "code": "A String", # The warning type identifier for this warning.
+ "data": [ # Metadata for this warning in 'key: value' format.
+ {
+ "value": "A String", # A warning data value corresponding to the key.
+ "key": "A String", # A key for the warning data.
+ },
+ ],
+ },
+ ],
+ "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+ "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+ "kind": "compute#operation", # Type of the resource.
+ "name": "A String", # Name of the resource (output only).
+ "region": "A String", # URL of the region where the operation resides (output only).
+ "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+ "errors": [ # The array of errors encountered while processing this operation.
+ {
+ "message": "A String", # An optional, human-readable error message.
+ "code": "A String", # The error type identifier for this error.
+ "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+ },
+ ],
+ },
+ "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="get">get(project, zone, instance)</code>
+ <pre>Returns the specified instance resource.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ zone: string, Name of the zone scoping this request. (required)
+ instance: string, Name of the instance resource to return. (required)
+
+Returns:
+ An object of the form:
+
+ { # An instance resource.
+ "status": "A String", # Instance status. One of the following values: "PROVISIONING", "STAGING", "RUNNING", "STOPPING", "STOPPED", "TERMINATED" (output only).
+ "kernel": "A String", # URL of the kernel resource to use when booting. In case of booting from persistent disk, this parameter is required. When booting from a disk image, it is optional, but may be provided to use a different kernel than the one associated with the image.
+ "kind": "compute#instance", # Type of the resource.
+ "canIpForward": True or False, # Allows this instance to send packets with source IP addresses other than its own and receive packets with destination IP addresses other than its own. If this instance will be used as an IP gateway or it will be set as the next-hop in a Route resource, say true. If unsure, leave this set to false.
+ "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
+ "zone": "A String", # URL of the zone where the instance resides (output only).
+ "tags": { # A set of instance tags. # A list of tags to be applied to this instance. Used to identify valid sources or targets for network firewalls. Provided by the client on instance creation. The tags can be later modified by the setTags method. Each tag within the list must comply with RFC1035.
+ "items": [ # An array of tags. Each tag must be 1-63 characters long, and comply with RFC1035.
+ "A String",
+ ],
+ "fingerprint": "A String", # Fingerprint of this resource. A hash of the tags stored in this object. This field is used optimistic locking. An up-to-date tags fingerprint must be provided in order to modify tags.
+ },
+ "image": "A String", # An optional URL of the disk image resource to be installed on this instance; provided by the client when the instance is created. Alternatively to passing the image, the client may choose to boot from a persistent disk, by setting boot=true flag on one of the entries in disks[] collection.
+ "disks": [ # Array of disks associated with this instance. Persistent disks must be created before you can assign them.
+ { # An instance-attached disk resource.
+ "deviceName": "A String", # Persistent disk only; must be unique within the instance when specified. This represents a unique device name that is reflected into the /dev/ tree of a Linux operating system running within the instance. If not specified, a default will be chosen by the system.
+ "kind": "compute#attachedDisk", # Type of the resource.
+ "index": 42, # A zero-based index to assign to this disk, where 0 is reserved for the boot disk. If not specified, the server will choose an appropriate value (output only).
+ "boot": True or False, # Indicates that this is a boot disk. VM will use the first partition of the disk for its root filesystem.
+ "source": "A String", # Persistent disk only; the URL of the persistent disk resource.
+ "mode": "A String", # The mode in which to attach this disk, either "READ_WRITE" or "READ_ONLY".
+ "type": "A String", # Type of the disk, either "SCRATCH" or "PERSISTENT". Note that persistent disks must be created before you can specify them here.
+ },
+ ],
+ "name": "A String", # Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035.
+ "statusMessage": "A String", # An optional, human-readable explanation of the status (output only).
+ "machineType": "A String", # URL of the machine type resource describing which machine type to use to host the instance; provided by the client when the instance is created.
+ "serviceAccounts": [ # A list of service accounts each with specified scopes, for which access tokens are to be made available to the instance through metadata queries.
+ { # A service account.
+ "scopes": [ # The list of scopes to be made available for this service account.
+ "A String",
+ ],
+ "email": "A String", # Email address of the service account.
+ },
+ ],
+ "networkInterfaces": [ # Array of configurations for this interface. This specifies how this interface is configured to interact with other network services, such as connecting to the internet. Currently, ONE_TO_ONE_NAT is the only access config supported. If there are no accessConfigs specified, then this instance will have no external internet access.
+ { # A network interface resource attached to an instance.
+ "accessConfigs": [ # Array of configurations for this interface. This specifies how this interface is configured to interact with other network services, such as connecting to the internet. Currently, ONE_TO_ONE_NAT is the only access config supported. If there are no accessConfigs specified, then this instance will have no external internet access.
+ { # An access configuration attached to an instance's network interface.
+ "kind": "compute#accessConfig", # Type of the resource.
+ "type": "ONE_TO_ONE_NAT", # Type of configuration. Must be set to "ONE_TO_ONE_NAT". This configures port-for-port NAT to the internet.
+ "name": "A String", # Name of this access configuration.
+ "natIP": "A String", # An external IP address associated with this instance. Specify an unused static IP address available to the project. If not specified, the external IP will be drawn from a shared ephemeral pool.
+ },
+ ],
+ "networkIP": "A String", # An optional IPV4 internal network address assigned to the instance for this network interface (output only).
+ "name": "A String", # Name of the network interface, determined by the server; for network devices, these are e.g. eth0, eth1, etc. (output only).
+ "network": "A String", # URL of the network resource attached to this interface.
+ },
+ ],
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "selfLink": "A String", # Server defined URL for this resource (output only).
+ "metadata": { # A metadata key/value entry. # Metadata key/value pairs assigned to this instance. Consists of custom metadata or predefined keys; see Instance documentation for more information.
+ "items": [ # Array of key/value pairs. The total size of all keys and values must be less than 512 KB.
+ {
+ "value": "A String", # Value for the metadata entry. These are free-form strings, and only have meaning as interpreted by the image running in the instance. The only restriction placed on values is that their size must be less than or equal to 32768 bytes.
+ "key": "A String", # Key for the metadata entry. Keys must conform to the following regexp: [a-zA-Z0-9-_]+, and be less than 128 bytes in length. This is reflected as part of a URL in the metadata server. Additionally, to avoid ambiguity, keys must not conflict with any other metadata keys for the project.
+ },
+ ],
+ "kind": "compute#metadata", # Type of the resource.
+ "fingerprint": "A String", # Fingerprint of this resource. A hash of the metadata's contents. This field is used for optimistic locking. An up-to-date metadata fingerprint must be provided in order to modify metadata.
+ },
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="getSerialPortOutput">getSerialPortOutput(project, zone, instance)</code>
+ <pre>Returns the specified instance's serial port output.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ zone: string, Name of the zone scoping this request. (required)
+ instance: string, Name of the instance scoping this request. (required)
+
+Returns:
+ An object of the form:
+
+ { # An instance serial console output.
+ "kind": "compute#serialPortOutput", # Type of the resource.
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "contents": "A String", # The contents of the console output.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="insert">insert(project, zone, body)</code>
+ <pre>Creates an instance resource in the specified project using the data included in the request.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ zone: string, Name of the zone scoping this request. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # An instance resource.
+ "status": "A String", # Instance status. One of the following values: "PROVISIONING", "STAGING", "RUNNING", "STOPPING", "STOPPED", "TERMINATED" (output only).
+ "kernel": "A String", # URL of the kernel resource to use when booting. In case of booting from persistent disk, this parameter is required. When booting from a disk image, it is optional, but may be provided to use a different kernel than the one associated with the image.
+ "kind": "compute#instance", # Type of the resource.
+ "canIpForward": True or False, # Allows this instance to send packets with source IP addresses other than its own and receive packets with destination IP addresses other than its own. If this instance will be used as an IP gateway or it will be set as the next-hop in a Route resource, say true. If unsure, leave this set to false.
+ "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
+ "zone": "A String", # URL of the zone where the instance resides (output only).
+ "tags": { # A set of instance tags. # A list of tags to be applied to this instance. Used to identify valid sources or targets for network firewalls. Provided by the client on instance creation. The tags can be later modified by the setTags method. Each tag within the list must comply with RFC1035.
+ "items": [ # An array of tags. Each tag must be 1-63 characters long, and comply with RFC1035.
+ "A String",
+ ],
+ "fingerprint": "A String", # Fingerprint of this resource. A hash of the tags stored in this object. This field is used optimistic locking. An up-to-date tags fingerprint must be provided in order to modify tags.
+ },
+ "image": "A String", # An optional URL of the disk image resource to be installed on this instance; provided by the client when the instance is created. Alternatively to passing the image, the client may choose to boot from a persistent disk, by setting boot=true flag on one of the entries in disks[] collection.
+ "disks": [ # Array of disks associated with this instance. Persistent disks must be created before you can assign them.
+ { # An instance-attached disk resource.
+ "deviceName": "A String", # Persistent disk only; must be unique within the instance when specified. This represents a unique device name that is reflected into the /dev/ tree of a Linux operating system running within the instance. If not specified, a default will be chosen by the system.
+ "kind": "compute#attachedDisk", # Type of the resource.
+ "index": 42, # A zero-based index to assign to this disk, where 0 is reserved for the boot disk. If not specified, the server will choose an appropriate value (output only).
+ "boot": True or False, # Indicates that this is a boot disk. VM will use the first partition of the disk for its root filesystem.
+ "source": "A String", # Persistent disk only; the URL of the persistent disk resource.
+ "mode": "A String", # The mode in which to attach this disk, either "READ_WRITE" or "READ_ONLY".
+ "type": "A String", # Type of the disk, either "SCRATCH" or "PERSISTENT". Note that persistent disks must be created before you can specify them here.
+ },
+ ],
+ "name": "A String", # Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035.
+ "statusMessage": "A String", # An optional, human-readable explanation of the status (output only).
+ "machineType": "A String", # URL of the machine type resource describing which machine type to use to host the instance; provided by the client when the instance is created.
+ "serviceAccounts": [ # A list of service accounts each with specified scopes, for which access tokens are to be made available to the instance through metadata queries.
+ { # A service account.
+ "scopes": [ # The list of scopes to be made available for this service account.
+ "A String",
+ ],
+ "email": "A String", # Email address of the service account.
+ },
+ ],
+ "networkInterfaces": [ # Array of configurations for this interface. This specifies how this interface is configured to interact with other network services, such as connecting to the internet. Currently, ONE_TO_ONE_NAT is the only access config supported. If there are no accessConfigs specified, then this instance will have no external internet access.
+ { # A network interface resource attached to an instance.
+ "accessConfigs": [ # Array of configurations for this interface. This specifies how this interface is configured to interact with other network services, such as connecting to the internet. Currently, ONE_TO_ONE_NAT is the only access config supported. If there are no accessConfigs specified, then this instance will have no external internet access.
+ { # An access configuration attached to an instance's network interface.
+ "kind": "compute#accessConfig", # Type of the resource.
+ "type": "ONE_TO_ONE_NAT", # Type of configuration. Must be set to "ONE_TO_ONE_NAT". This configures port-for-port NAT to the internet.
+ "name": "A String", # Name of this access configuration.
+ "natIP": "A String", # An external IP address associated with this instance. Specify an unused static IP address available to the project. If not specified, the external IP will be drawn from a shared ephemeral pool.
+ },
+ ],
+ "networkIP": "A String", # An optional IPV4 internal network address assigned to the instance for this network interface (output only).
+ "name": "A String", # Name of the network interface, determined by the server; for network devices, these are e.g. eth0, eth1, etc. (output only).
+ "network": "A String", # URL of the network resource attached to this interface.
+ },
+ ],
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "selfLink": "A String", # Server defined URL for this resource (output only).
+ "metadata": { # A metadata key/value entry. # Metadata key/value pairs assigned to this instance. Consists of custom metadata or predefined keys; see Instance documentation for more information.
+ "items": [ # Array of key/value pairs. The total size of all keys and values must be less than 512 KB.
+ {
+ "value": "A String", # Value for the metadata entry. These are free-form strings, and only have meaning as interpreted by the image running in the instance. The only restriction placed on values is that their size must be less than or equal to 32768 bytes.
+ "key": "A String", # Key for the metadata entry. Keys must conform to the following regexp: [a-zA-Z0-9-_]+, and be less than 128 bytes in length. This is reflected as part of a URL in the metadata server. Additionally, to avoid ambiguity, keys must not conflict with any other metadata keys for the project.
+ },
+ ],
+ "kind": "compute#metadata", # Type of the resource.
+ "fingerprint": "A String", # Fingerprint of this resource. A hash of the metadata's contents. This field is used for optimistic locking. An up-to-date metadata fingerprint must be provided in order to modify metadata.
+ },
+}
+
+
+Returns:
+ An object of the form:
+
+ { # An operation resource, used to manage asynchronous API requests.
+ "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+ "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "zone": "A String", # URL of the zone where the operation resides (output only).
+ "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+ "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+ "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+ "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+ "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+ "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+ "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+ "warnings": [ # If warning messages generated during processing of this operation, this field will be populated (output only).
+ {
+ "message": "A String", # Optional human-readable details for this warning.
+ "code": "A String", # The warning type identifier for this warning.
+ "data": [ # Metadata for this warning in 'key: value' format.
+ {
+ "value": "A String", # A warning data value corresponding to the key.
+ "key": "A String", # A key for the warning data.
+ },
+ ],
+ },
+ ],
+ "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+ "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+ "kind": "compute#operation", # Type of the resource.
+ "name": "A String", # Name of the resource (output only).
+ "region": "A String", # URL of the region where the operation resides (output only).
+ "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+ "errors": [ # The array of errors encountered while processing this operation.
+ {
+ "message": "A String", # An optional, human-readable error message.
+ "code": "A String", # The error type identifier for this error.
+ "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+ },
+ ],
+ },
+ "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="list">list(project, zone, maxResults=None, pageToken=None, filter=None)</code>
+ <pre>Retrieves the list of instance resources contained within the specified zone.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ zone: string, Name of the zone scoping this request. (required)
+ maxResults: integer, Optional. Maximum count of results to be returned. Maximum and default value is 100.
+ pageToken: string, Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a previous list request.
+ filter: string, Optional. Filter expression for filtering listed resources.
+
+Returns:
+ An object of the form:
+
+ { # Contains a list of instance resources.
+ "nextPageToken": "A String", # A token used to continue a truncated list request (output only).
+ "items": [ # A list of instance resources.
+ { # An instance resource.
+ "status": "A String", # Instance status. One of the following values: "PROVISIONING", "STAGING", "RUNNING", "STOPPING", "STOPPED", "TERMINATED" (output only).
+ "kernel": "A String", # URL of the kernel resource to use when booting. In case of booting from persistent disk, this parameter is required. When booting from a disk image, it is optional, but may be provided to use a different kernel than the one associated with the image.
+ "kind": "compute#instance", # Type of the resource.
+ "canIpForward": True or False, # Allows this instance to send packets with source IP addresses other than its own and receive packets with destination IP addresses other than its own. If this instance will be used as an IP gateway or it will be set as the next-hop in a Route resource, say true. If unsure, leave this set to false.
+ "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
+ "zone": "A String", # URL of the zone where the instance resides (output only).
+ "tags": { # A set of instance tags. # A list of tags to be applied to this instance. Used to identify valid sources or targets for network firewalls. Provided by the client on instance creation. The tags can be later modified by the setTags method. Each tag within the list must comply with RFC1035.
+ "items": [ # An array of tags. Each tag must be 1-63 characters long, and comply with RFC1035.
+ "A String",
+ ],
+ "fingerprint": "A String", # Fingerprint of this resource. A hash of the tags stored in this object. This field is used optimistic locking. An up-to-date tags fingerprint must be provided in order to modify tags.
+ },
+ "image": "A String", # An optional URL of the disk image resource to be installed on this instance; provided by the client when the instance is created. Alternatively to passing the image, the client may choose to boot from a persistent disk, by setting boot=true flag on one of the entries in disks[] collection.
+ "disks": [ # Array of disks associated with this instance. Persistent disks must be created before you can assign them.
+ { # An instance-attached disk resource.
+ "deviceName": "A String", # Persistent disk only; must be unique within the instance when specified. This represents a unique device name that is reflected into the /dev/ tree of a Linux operating system running within the instance. If not specified, a default will be chosen by the system.
+ "kind": "compute#attachedDisk", # Type of the resource.
+ "index": 42, # A zero-based index to assign to this disk, where 0 is reserved for the boot disk. If not specified, the server will choose an appropriate value (output only).
+ "boot": True or False, # Indicates that this is a boot disk. VM will use the first partition of the disk for its root filesystem.
+ "source": "A String", # Persistent disk only; the URL of the persistent disk resource.
+ "mode": "A String", # The mode in which to attach this disk, either "READ_WRITE" or "READ_ONLY".
+ "type": "A String", # Type of the disk, either "SCRATCH" or "PERSISTENT". Note that persistent disks must be created before you can specify them here.
+ },
+ ],
+ "name": "A String", # Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035.
+ "statusMessage": "A String", # An optional, human-readable explanation of the status (output only).
+ "machineType": "A String", # URL of the machine type resource describing which machine type to use to host the instance; provided by the client when the instance is created.
+ "serviceAccounts": [ # A list of service accounts each with specified scopes, for which access tokens are to be made available to the instance through metadata queries.
+ { # A service account.
+ "scopes": [ # The list of scopes to be made available for this service account.
+ "A String",
+ ],
+ "email": "A String", # Email address of the service account.
+ },
+ ],
+ "networkInterfaces": [ # Array of configurations for this interface. This specifies how this interface is configured to interact with other network services, such as connecting to the internet. Currently, ONE_TO_ONE_NAT is the only access config supported. If there are no accessConfigs specified, then this instance will have no external internet access.
+ { # A network interface resource attached to an instance.
+ "accessConfigs": [ # Array of configurations for this interface. This specifies how this interface is configured to interact with other network services, such as connecting to the internet. Currently, ONE_TO_ONE_NAT is the only access config supported. If there are no accessConfigs specified, then this instance will have no external internet access.
+ { # An access configuration attached to an instance's network interface.
+ "kind": "compute#accessConfig", # Type of the resource.
+ "type": "ONE_TO_ONE_NAT", # Type of configuration. Must be set to "ONE_TO_ONE_NAT". This configures port-for-port NAT to the internet.
+ "name": "A String", # Name of this access configuration.
+ "natIP": "A String", # An external IP address associated with this instance. Specify an unused static IP address available to the project. If not specified, the external IP will be drawn from a shared ephemeral pool.
+ },
+ ],
+ "networkIP": "A String", # An optional IPV4 internal network address assigned to the instance for this network interface (output only).
+ "name": "A String", # Name of the network interface, determined by the server; for network devices, these are e.g. eth0, eth1, etc. (output only).
+ "network": "A String", # URL of the network resource attached to this interface.
+ },
+ ],
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "selfLink": "A String", # Server defined URL for this resource (output only).
+ "metadata": { # A metadata key/value entry. # Metadata key/value pairs assigned to this instance. Consists of custom metadata or predefined keys; see Instance documentation for more information.
+ "items": [ # Array of key/value pairs. The total size of all keys and values must be less than 512 KB.
+ {
+ "value": "A String", # Value for the metadata entry. These are free-form strings, and only have meaning as interpreted by the image running in the instance. The only restriction placed on values is that their size must be less than or equal to 32768 bytes.
+ "key": "A String", # Key for the metadata entry. Keys must conform to the following regexp: [a-zA-Z0-9-_]+, and be less than 128 bytes in length. This is reflected as part of a URL in the metadata server. Additionally, to avoid ambiguity, keys must not conflict with any other metadata keys for the project.
+ },
+ ],
+ "kind": "compute#metadata", # Type of the resource.
+ "fingerprint": "A String", # Fingerprint of this resource. A hash of the metadata's contents. This field is used for optimistic locking. An up-to-date metadata fingerprint must be provided in order to modify metadata.
+ },
+ },
+ ],
+ "kind": "compute#instanceList", # Type of resource.
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "selfLink": "A String", # Server defined URL for this resource (output only).
+ }</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="reset">reset(project, zone, instance)</code>
+ <pre>Performs a hard reset on the instance.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ zone: string, Name of the zone scoping this request. (required)
+ instance: string, Name of the instance scoping this request. (required)
+
+Returns:
+ An object of the form:
+
+ { # An operation resource, used to manage asynchronous API requests.
+ "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+ "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "zone": "A String", # URL of the zone where the operation resides (output only).
+ "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+ "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+ "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+ "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+ "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+ "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+ "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+ "warnings": [ # If warning messages generated during processing of this operation, this field will be populated (output only).
+ {
+ "message": "A String", # Optional human-readable details for this warning.
+ "code": "A String", # The warning type identifier for this warning.
+ "data": [ # Metadata for this warning in 'key: value' format.
+ {
+ "value": "A String", # A warning data value corresponding to the key.
+ "key": "A String", # A key for the warning data.
+ },
+ ],
+ },
+ ],
+ "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+ "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+ "kind": "compute#operation", # Type of the resource.
+ "name": "A String", # Name of the resource (output only).
+ "region": "A String", # URL of the region where the operation resides (output only).
+ "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+ "errors": [ # The array of errors encountered while processing this operation.
+ {
+ "message": "A String", # An optional, human-readable error message.
+ "code": "A String", # The error type identifier for this error.
+ "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+ },
+ ],
+ },
+ "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="setMetadata">setMetadata(project, zone, instance, body)</code>
+ <pre>Sets metadata for the specified instance to the data included in the request.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ zone: string, Name of the zone scoping this request. (required)
+ instance: string, Name of the instance scoping this request. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # A metadata key/value entry.
+ "items": [ # Array of key/value pairs. The total size of all keys and values must be less than 512 KB.
+ {
+ "value": "A String", # Value for the metadata entry. These are free-form strings, and only have meaning as interpreted by the image running in the instance. The only restriction placed on values is that their size must be less than or equal to 32768 bytes.
+ "key": "A String", # Key for the metadata entry. Keys must conform to the following regexp: [a-zA-Z0-9-_]+, and be less than 128 bytes in length. This is reflected as part of a URL in the metadata server. Additionally, to avoid ambiguity, keys must not conflict with any other metadata keys for the project.
+ },
+ ],
+ "kind": "compute#metadata", # Type of the resource.
+ "fingerprint": "A String", # Fingerprint of this resource. A hash of the metadata's contents. This field is used for optimistic locking. An up-to-date metadata fingerprint must be provided in order to modify metadata.
+}
+
+
+Returns:
+ An object of the form:
+
+ { # An operation resource, used to manage asynchronous API requests.
+ "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+ "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "zone": "A String", # URL of the zone where the operation resides (output only).
+ "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+ "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+ "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+ "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+ "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+ "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+ "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+ "warnings": [ # If warning messages generated during processing of this operation, this field will be populated (output only).
+ {
+ "message": "A String", # Optional human-readable details for this warning.
+ "code": "A String", # The warning type identifier for this warning.
+ "data": [ # Metadata for this warning in 'key: value' format.
+ {
+ "value": "A String", # A warning data value corresponding to the key.
+ "key": "A String", # A key for the warning data.
+ },
+ ],
+ },
+ ],
+ "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+ "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+ "kind": "compute#operation", # Type of the resource.
+ "name": "A String", # Name of the resource (output only).
+ "region": "A String", # URL of the region where the operation resides (output only).
+ "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+ "errors": [ # The array of errors encountered while processing this operation.
+ {
+ "message": "A String", # An optional, human-readable error message.
+ "code": "A String", # The error type identifier for this error.
+ "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+ },
+ ],
+ },
+ "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="setTags">setTags(project, zone, instance, body)</code>
+ <pre>Sets tags for the specified instance to the data included in the request.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ zone: string, Name of the zone scoping this request. (required)
+ instance: string, Name of the instance scoping this request. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # A set of instance tags.
+ "items": [ # An array of tags. Each tag must be 1-63 characters long, and comply with RFC1035.
+ "A String",
+ ],
+ "fingerprint": "A String", # Fingerprint of this resource. A hash of the tags stored in this object. This field is used optimistic locking. An up-to-date tags fingerprint must be provided in order to modify tags.
+ }
+
+
+Returns:
+ An object of the form:
+
+ { # An operation resource, used to manage asynchronous API requests.
+ "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+ "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "zone": "A String", # URL of the zone where the operation resides (output only).
+ "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+ "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+ "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+ "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+ "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+ "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+ "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+ "warnings": [ # If warning messages generated during processing of this operation, this field will be populated (output only).
+ {
+ "message": "A String", # Optional human-readable details for this warning.
+ "code": "A String", # The warning type identifier for this warning.
+ "data": [ # Metadata for this warning in 'key: value' format.
+ {
+ "value": "A String", # A warning data value corresponding to the key.
+ "key": "A String", # A key for the warning data.
+ },
+ ],
+ },
+ ],
+ "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+ "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+ "kind": "compute#operation", # Type of the resource.
+ "name": "A String", # Name of the resource (output only).
+ "region": "A String", # URL of the region where the operation resides (output only).
+ "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+ "errors": [ # The array of errors encountered while processing this operation.
+ {
+ "message": "A String", # An optional, human-readable error message.
+ "code": "A String", # The error type identifier for this error.
+ "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+ },
+ ],
+ },
+ "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+ }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/compute_v1beta15.kernels.html b/docs/dyn/compute_v1beta15.kernels.html
new file mode 100644
index 0000000..561f447
--- /dev/null
+++ b/docs/dyn/compute_v1beta15.kernels.html
@@ -0,0 +1,167 @@
+<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="compute_v1beta15.html">Compute Engine API</a> . <a href="compute_v1beta15.kernels.html">kernels</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#get">get(project, kernel)</a></code></p>
+<p class="firstline">Returns the specified kernel resource.</p>
+<p class="toc_element">
+ <code><a href="#list">list(project, maxResults=None, pageToken=None, filter=None)</a></code></p>
+<p class="firstline">Retrieves the list of kernel resources available to the specified project.</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>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="get">get(project, kernel)</code>
+ <pre>Returns the specified kernel resource.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ kernel: string, Name of the kernel resource to return. (required)
+
+Returns:
+ An object of the form:
+
+ { # A kernel resource.
+ "kind": "compute#kernel", # Type of the resource.
+ "description": "A String", # An optional textual description of the resource.
+ "deprecated": { # Deprecation status for a public resource. # The deprecation status associated with this kernel.
+ "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
+ "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+ "state": "A String", # The deprecation state. Can be "DEPRECATED", "OBSOLETE", or "DELETED". Operations which create a new resource using a "DEPRECATED" resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. New uses of "OBSOLETE" or "DELETED" resources will result in an error.
+ "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+ "replacement": "A String", # A URL of the suggested replacement for the deprecated resource. The deprecated resource and its replacement must be resources of the same kind.
+ },
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "name": "A String", # Name of the resource.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="list">list(project, maxResults=None, pageToken=None, filter=None)</code>
+ <pre>Retrieves the list of kernel resources available to the specified project.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ maxResults: integer, Optional. Maximum count of results to be returned. Maximum and default value is 100.
+ pageToken: string, Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a previous list request.
+ filter: string, Optional. Filter expression for filtering listed resources.
+
+Returns:
+ An object of the form:
+
+ { # Contains a list of kernel resources.
+ "nextPageToken": "A String", # A token used to continue a truncated list request (output only).
+ "items": [ # The kernel resources.
+ { # A kernel resource.
+ "kind": "compute#kernel", # Type of the resource.
+ "description": "A String", # An optional textual description of the resource.
+ "deprecated": { # Deprecation status for a public resource. # The deprecation status associated with this kernel.
+ "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
+ "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+ "state": "A String", # The deprecation state. Can be "DEPRECATED", "OBSOLETE", or "DELETED". Operations which create a new resource using a "DEPRECATED" resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. New uses of "OBSOLETE" or "DELETED" resources will result in an error.
+ "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+ "replacement": "A String", # A URL of the suggested replacement for the deprecated resource. The deprecated resource and its replacement must be resources of the same kind.
+ },
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "name": "A String", # Name of the resource.
+ },
+ ],
+ "kind": "compute#kernelList", # Type of resource.
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "selfLink": "A String", # Server defined URL for this resource (output only).
+ }</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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/compute_v1beta15.machineTypes.html b/docs/dyn/compute_v1beta15.machineTypes.html
new file mode 100644
index 0000000..3e89462
--- /dev/null
+++ b/docs/dyn/compute_v1beta15.machineTypes.html
@@ -0,0 +1,274 @@
+<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="compute_v1beta15.html">Compute Engine API</a> . <a href="compute_v1beta15.machineTypes.html">machineTypes</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#aggregatedList">aggregatedList(project, maxResults=None, pageToken=None, filter=None)</a></code></p>
+<p class="firstline">Retrieves the list of machine type resources grouped by scope.</p>
+<p class="toc_element">
+ <code><a href="#aggregatedList_next">aggregatedList_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="#get">get(project, zone, machineType)</a></code></p>
+<p class="firstline">Returns the specified machine type resource.</p>
+<p class="toc_element">
+ <code><a href="#list">list(project, zone, maxResults=None, pageToken=None, filter=None)</a></code></p>
+<p class="firstline">Retrieves the list of machine type resources available to the specified project.</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>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="aggregatedList">aggregatedList(project, maxResults=None, pageToken=None, filter=None)</code>
+ <pre>Retrieves the list of machine type resources grouped by scope.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ maxResults: integer, Optional. Maximum count of results to be returned. Maximum and default value is 100.
+ pageToken: string, Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a previous list request.
+ filter: string, Optional. Filter expression for filtering listed resources.
+
+Returns:
+ An object of the form:
+
+ {
+ "nextPageToken": "A String", # A token used to continue a truncated list request (output only).
+ "items": { # A map of scoped machine type lists.
+ "a_key": { # Name of the scope containing this set of machine types.
+ "machineTypes": [ # List of machine types contained in this scope.
+ { # A machine type resource.
+ "guestCpus": 42, # Count of CPUs exposed to the instance.
+ "imageSpaceGb": 42, # Space allotted for the image, defined in GB.
+ "kind": "compute#machineType", # Type of the resource.
+ "maximumPersistentDisksSizeGb": "A String", # Maximum total persistent disks size (GB) allowed.
+ "description": "A String", # An optional textual description of the resource.
+ "zone": "A String", # Url of the zone where the machine type resides (output only).
+ "maximumPersistentDisks": 42, # Maximum persistent disks allowed.
+ "deprecated": { # Deprecation status for a public resource. # The deprecation status associated with this machine type.
+ "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
+ "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+ "state": "A String", # The deprecation state. Can be "DEPRECATED", "OBSOLETE", or "DELETED". Operations which create a new resource using a "DEPRECATED" resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. New uses of "OBSOLETE" or "DELETED" resources will result in an error.
+ "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+ "replacement": "A String", # A URL of the suggested replacement for the deprecated resource. The deprecated resource and its replacement must be resources of the same kind.
+ },
+ "memoryMb": 42, # Physical memory assigned to the instance, defined in MB.
+ "scratchDisks": [ # List of extended scratch disks assigned to the instance.
+ {
+ "diskGb": 42, # Size of the scratch disk, defined in GB.
+ },
+ ],
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "name": "A String", # Name of the resource.
+ },
+ ],
+ "warning": { # Informational warning which replaces the list of machine types when the list is empty.
+ "message": "A String", # Optional human-readable details for this warning.
+ "code": "A String", # The warning type identifier for this warning.
+ "data": [ # Metadata for this warning in 'key: value' format.
+ {
+ "value": "A String", # A warning data value corresponding to the key.
+ "key": "A String", # A key for the warning data.
+ },
+ ],
+ },
+ },
+ },
+ "kind": "compute#machineTypeAggregatedList", # Type of resource.
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "selfLink": "A String", # Server defined URL for this resource (output only).
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="aggregatedList_next">aggregatedList_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="get">get(project, zone, machineType)</code>
+ <pre>Returns the specified machine type resource.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ zone: string, Name of the zone scoping this request. (required)
+ machineType: string, Name of the machine type resource to return. (required)
+
+Returns:
+ An object of the form:
+
+ { # A machine type resource.
+ "guestCpus": 42, # Count of CPUs exposed to the instance.
+ "imageSpaceGb": 42, # Space allotted for the image, defined in GB.
+ "kind": "compute#machineType", # Type of the resource.
+ "maximumPersistentDisksSizeGb": "A String", # Maximum total persistent disks size (GB) allowed.
+ "description": "A String", # An optional textual description of the resource.
+ "zone": "A String", # Url of the zone where the machine type resides (output only).
+ "maximumPersistentDisks": 42, # Maximum persistent disks allowed.
+ "deprecated": { # Deprecation status for a public resource. # The deprecation status associated with this machine type.
+ "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
+ "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+ "state": "A String", # The deprecation state. Can be "DEPRECATED", "OBSOLETE", or "DELETED". Operations which create a new resource using a "DEPRECATED" resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. New uses of "OBSOLETE" or "DELETED" resources will result in an error.
+ "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+ "replacement": "A String", # A URL of the suggested replacement for the deprecated resource. The deprecated resource and its replacement must be resources of the same kind.
+ },
+ "memoryMb": 42, # Physical memory assigned to the instance, defined in MB.
+ "scratchDisks": [ # List of extended scratch disks assigned to the instance.
+ {
+ "diskGb": 42, # Size of the scratch disk, defined in GB.
+ },
+ ],
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "name": "A String", # Name of the resource.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="list">list(project, zone, maxResults=None, pageToken=None, filter=None)</code>
+ <pre>Retrieves the list of machine type resources available to the specified project.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ zone: string, Name of the zone scoping this request. (required)
+ maxResults: integer, Optional. Maximum count of results to be returned. Maximum and default value is 100.
+ pageToken: string, Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a previous list request.
+ filter: string, Optional. Filter expression for filtering listed resources.
+
+Returns:
+ An object of the form:
+
+ { # Contains a list of machine type resources.
+ "nextPageToken": "A String", # A token used to continue a truncated list request (output only).
+ "items": [ # The machine type resources.
+ { # A machine type resource.
+ "guestCpus": 42, # Count of CPUs exposed to the instance.
+ "imageSpaceGb": 42, # Space allotted for the image, defined in GB.
+ "kind": "compute#machineType", # Type of the resource.
+ "maximumPersistentDisksSizeGb": "A String", # Maximum total persistent disks size (GB) allowed.
+ "description": "A String", # An optional textual description of the resource.
+ "zone": "A String", # Url of the zone where the machine type resides (output only).
+ "maximumPersistentDisks": 42, # Maximum persistent disks allowed.
+ "deprecated": { # Deprecation status for a public resource. # The deprecation status associated with this machine type.
+ "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
+ "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+ "state": "A String", # The deprecation state. Can be "DEPRECATED", "OBSOLETE", or "DELETED". Operations which create a new resource using a "DEPRECATED" resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. New uses of "OBSOLETE" or "DELETED" resources will result in an error.
+ "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+ "replacement": "A String", # A URL of the suggested replacement for the deprecated resource. The deprecated resource and its replacement must be resources of the same kind.
+ },
+ "memoryMb": 42, # Physical memory assigned to the instance, defined in MB.
+ "scratchDisks": [ # List of extended scratch disks assigned to the instance.
+ {
+ "diskGb": 42, # Size of the scratch disk, defined in GB.
+ },
+ ],
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "name": "A String", # Name of the resource.
+ },
+ ],
+ "kind": "compute#machineTypeList", # Type of resource.
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "selfLink": "A String", # Server defined URL for this resource (output only).
+ }</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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/compute_v1beta15.networks.html b/docs/dyn/compute_v1beta15.networks.html
new file mode 100644
index 0000000..997837a
--- /dev/null
+++ b/docs/dyn/compute_v1beta15.networks.html
@@ -0,0 +1,288 @@
+<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="compute_v1beta15.html">Compute Engine API</a> . <a href="compute_v1beta15.networks.html">networks</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#delete">delete(project, network)</a></code></p>
+<p class="firstline">Deletes the specified network resource.</p>
+<p class="toc_element">
+ <code><a href="#get">get(project, network)</a></code></p>
+<p class="firstline">Returns the specified network resource.</p>
+<p class="toc_element">
+ <code><a href="#insert">insert(project, body)</a></code></p>
+<p class="firstline">Creates a network resource in the specified project using the data included in the request.</p>
+<p class="toc_element">
+ <code><a href="#list">list(project, maxResults=None, pageToken=None, filter=None)</a></code></p>
+<p class="firstline">Retrieves the list of network resources available to the specified project.</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>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="delete">delete(project, network)</code>
+ <pre>Deletes the specified network resource.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ network: string, Name of the network resource to delete. (required)
+
+Returns:
+ An object of the form:
+
+ { # An operation resource, used to manage asynchronous API requests.
+ "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+ "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "zone": "A String", # URL of the zone where the operation resides (output only).
+ "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+ "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+ "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+ "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+ "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+ "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+ "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+ "warnings": [ # If warning messages generated during processing of this operation, this field will be populated (output only).
+ {
+ "message": "A String", # Optional human-readable details for this warning.
+ "code": "A String", # The warning type identifier for this warning.
+ "data": [ # Metadata for this warning in 'key: value' format.
+ {
+ "value": "A String", # A warning data value corresponding to the key.
+ "key": "A String", # A key for the warning data.
+ },
+ ],
+ },
+ ],
+ "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+ "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+ "kind": "compute#operation", # Type of the resource.
+ "name": "A String", # Name of the resource (output only).
+ "region": "A String", # URL of the region where the operation resides (output only).
+ "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+ "errors": [ # The array of errors encountered while processing this operation.
+ {
+ "message": "A String", # An optional, human-readable error message.
+ "code": "A String", # The error type identifier for this error.
+ "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+ },
+ ],
+ },
+ "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="get">get(project, network)</code>
+ <pre>Returns the specified network resource.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ network: string, Name of the network resource to return. (required)
+
+Returns:
+ An object of the form:
+
+ { # A network resource.
+ "kind": "compute#network", # Type of the resource.
+ "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
+ "IPv4Range": "A String", # Required; The range of internal addresses that are legal on this network. This range is a CIDR specification, for example: 192.168.0.0/16. Provided by the client when the network is created.
+ "gatewayIPv4": "A String", # An optional address that is used for default routing to other networks. This must be within the range specified by IPv4Range, and is typically the first usable address in that range. If not specified, the default value is the first usable address in IPv4Range.
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "name": "A String", # Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="insert">insert(project, body)</code>
+ <pre>Creates a network resource in the specified project using the data included in the request.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # A network resource.
+ "kind": "compute#network", # Type of the resource.
+ "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
+ "IPv4Range": "A String", # Required; The range of internal addresses that are legal on this network. This range is a CIDR specification, for example: 192.168.0.0/16. Provided by the client when the network is created.
+ "gatewayIPv4": "A String", # An optional address that is used for default routing to other networks. This must be within the range specified by IPv4Range, and is typically the first usable address in that range. If not specified, the default value is the first usable address in IPv4Range.
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "name": "A String", # Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035.
+ }
+
+
+Returns:
+ An object of the form:
+
+ { # An operation resource, used to manage asynchronous API requests.
+ "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+ "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "zone": "A String", # URL of the zone where the operation resides (output only).
+ "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+ "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+ "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+ "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+ "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+ "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+ "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+ "warnings": [ # If warning messages generated during processing of this operation, this field will be populated (output only).
+ {
+ "message": "A String", # Optional human-readable details for this warning.
+ "code": "A String", # The warning type identifier for this warning.
+ "data": [ # Metadata for this warning in 'key: value' format.
+ {
+ "value": "A String", # A warning data value corresponding to the key.
+ "key": "A String", # A key for the warning data.
+ },
+ ],
+ },
+ ],
+ "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+ "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+ "kind": "compute#operation", # Type of the resource.
+ "name": "A String", # Name of the resource (output only).
+ "region": "A String", # URL of the region where the operation resides (output only).
+ "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+ "errors": [ # The array of errors encountered while processing this operation.
+ {
+ "message": "A String", # An optional, human-readable error message.
+ "code": "A String", # The error type identifier for this error.
+ "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+ },
+ ],
+ },
+ "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="list">list(project, maxResults=None, pageToken=None, filter=None)</code>
+ <pre>Retrieves the list of network resources available to the specified project.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ maxResults: integer, Optional. Maximum count of results to be returned. Maximum and default value is 100.
+ pageToken: string, Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a previous list request.
+ filter: string, Optional. Filter expression for filtering listed resources.
+
+Returns:
+ An object of the form:
+
+ { # Contains a list of network resources.
+ "nextPageToken": "A String", # A token used to continue a truncated list request (output only).
+ "items": [ # The network resources.
+ { # A network resource.
+ "kind": "compute#network", # Type of the resource.
+ "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
+ "IPv4Range": "A String", # Required; The range of internal addresses that are legal on this network. This range is a CIDR specification, for example: 192.168.0.0/16. Provided by the client when the network is created.
+ "gatewayIPv4": "A String", # An optional address that is used for default routing to other networks. This must be within the range specified by IPv4Range, and is typically the first usable address in that range. If not specified, the default value is the first usable address in IPv4Range.
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "name": "A String", # Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035.
+ },
+ ],
+ "kind": "compute#networkList", # Type of resource.
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "selfLink": "A String", # Server defined URL for this resource (output only).
+ }</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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/compute_v1beta15.projects.html b/docs/dyn/compute_v1beta15.projects.html
new file mode 100644
index 0000000..9881429
--- /dev/null
+++ b/docs/dyn/compute_v1beta15.projects.html
@@ -0,0 +1,190 @@
+<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="compute_v1beta15.html">Compute Engine API</a> . <a href="compute_v1beta15.projects.html">projects</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#get">get(project)</a></code></p>
+<p class="firstline">Returns the specified project resource.</p>
+<p class="toc_element">
+ <code><a href="#setCommonInstanceMetadata">setCommonInstanceMetadata(project, body)</a></code></p>
+<p class="firstline">Sets metadata common to all instances within the specified project using the data included in the request.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="get">get(project)</code>
+ <pre>Returns the specified project resource.
+
+Args:
+ project: string, Name of the project resource to retrieve. (required)
+
+Returns:
+ An object of the form:
+
+ { # A project resource. Projects can be created only in the APIs Console. Unless marked otherwise, values can only be modified in the console.
+ "kind": "compute#project", # Type of the resource.
+ "description": "A String", # An optional textual description of the resource.
+ "commonInstanceMetadata": { # A metadata key/value entry. # Metadata key/value pairs available to all instances contained in this project.
+ "items": [ # Array of key/value pairs. The total size of all keys and values must be less than 512 KB.
+ {
+ "value": "A String", # Value for the metadata entry. These are free-form strings, and only have meaning as interpreted by the image running in the instance. The only restriction placed on values is that their size must be less than or equal to 32768 bytes.
+ "key": "A String", # Key for the metadata entry. Keys must conform to the following regexp: [a-zA-Z0-9-_]+, and be less than 128 bytes in length. This is reflected as part of a URL in the metadata server. Additionally, to avoid ambiguity, keys must not conflict with any other metadata keys for the project.
+ },
+ ],
+ "kind": "compute#metadata", # Type of the resource.
+ "fingerprint": "A String", # Fingerprint of this resource. A hash of the metadata's contents. This field is used for optimistic locking. An up-to-date metadata fingerprint must be provided in order to modify metadata.
+ },
+ "quotas": [ # Quotas assigned to this project.
+ { # A quotas entry.
+ "usage": 3.14, # Current usage of this metric.
+ "metric": "A String", # Name of the quota metric.
+ "limit": 3.14, # Quota limit for this metric.
+ },
+ ],
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "name": "A String", # Name of the resource.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="setCommonInstanceMetadata">setCommonInstanceMetadata(project, body)</code>
+ <pre>Sets metadata common to all instances within the specified project using the data included in the request.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # A metadata key/value entry.
+ "items": [ # Array of key/value pairs. The total size of all keys and values must be less than 512 KB.
+ {
+ "value": "A String", # Value for the metadata entry. These are free-form strings, and only have meaning as interpreted by the image running in the instance. The only restriction placed on values is that their size must be less than or equal to 32768 bytes.
+ "key": "A String", # Key for the metadata entry. Keys must conform to the following regexp: [a-zA-Z0-9-_]+, and be less than 128 bytes in length. This is reflected as part of a URL in the metadata server. Additionally, to avoid ambiguity, keys must not conflict with any other metadata keys for the project.
+ },
+ ],
+ "kind": "compute#metadata", # Type of the resource.
+ "fingerprint": "A String", # Fingerprint of this resource. A hash of the metadata's contents. This field is used for optimistic locking. An up-to-date metadata fingerprint must be provided in order to modify metadata.
+}
+
+
+Returns:
+ An object of the form:
+
+ { # An operation resource, used to manage asynchronous API requests.
+ "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+ "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "zone": "A String", # URL of the zone where the operation resides (output only).
+ "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+ "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+ "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+ "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+ "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+ "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+ "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+ "warnings": [ # If warning messages generated during processing of this operation, this field will be populated (output only).
+ {
+ "message": "A String", # Optional human-readable details for this warning.
+ "code": "A String", # The warning type identifier for this warning.
+ "data": [ # Metadata for this warning in 'key: value' format.
+ {
+ "value": "A String", # A warning data value corresponding to the key.
+ "key": "A String", # A key for the warning data.
+ },
+ ],
+ },
+ ],
+ "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+ "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+ "kind": "compute#operation", # Type of the resource.
+ "name": "A String", # Name of the resource (output only).
+ "region": "A String", # URL of the region where the operation resides (output only).
+ "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+ "errors": [ # The array of errors encountered while processing this operation.
+ {
+ "message": "A String", # An optional, human-readable error message.
+ "code": "A String", # The error type identifier for this error.
+ "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+ },
+ ],
+ },
+ "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+ }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/compute_v1beta15.regionOperations.html b/docs/dyn/compute_v1beta15.regionOperations.html
new file mode 100644
index 0000000..5d637ff
--- /dev/null
+++ b/docs/dyn/compute_v1beta15.regionOperations.html
@@ -0,0 +1,239 @@
+<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="compute_v1beta15.html">Compute Engine API</a> . <a href="compute_v1beta15.regionOperations.html">regionOperations</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#delete">delete(project, region, operation)</a></code></p>
+<p class="firstline">Deletes the specified region-specific operation resource.</p>
+<p class="toc_element">
+ <code><a href="#get">get(project, region, operation)</a></code></p>
+<p class="firstline">Retrieves the specified region-specific operation resource.</p>
+<p class="toc_element">
+ <code><a href="#list">list(project, region, maxResults=None, pageToken=None, filter=None)</a></code></p>
+<p class="firstline">Retrieves the list of operation resources contained within the specified region.</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>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="delete">delete(project, region, operation)</code>
+ <pre>Deletes the specified region-specific operation resource.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ region: string, Name of the region scoping this request. (required)
+ operation: string, Name of the operation resource to delete. (required)
+</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="get">get(project, region, operation)</code>
+ <pre>Retrieves the specified region-specific operation resource.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ region: string, Name of the zone scoping this request. (required)
+ operation: string, Name of the operation resource to return. (required)
+
+Returns:
+ An object of the form:
+
+ { # An operation resource, used to manage asynchronous API requests.
+ "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+ "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "zone": "A String", # URL of the zone where the operation resides (output only).
+ "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+ "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+ "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+ "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+ "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+ "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+ "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+ "warnings": [ # If warning messages generated during processing of this operation, this field will be populated (output only).
+ {
+ "message": "A String", # Optional human-readable details for this warning.
+ "code": "A String", # The warning type identifier for this warning.
+ "data": [ # Metadata for this warning in 'key: value' format.
+ {
+ "value": "A String", # A warning data value corresponding to the key.
+ "key": "A String", # A key for the warning data.
+ },
+ ],
+ },
+ ],
+ "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+ "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+ "kind": "compute#operation", # Type of the resource.
+ "name": "A String", # Name of the resource (output only).
+ "region": "A String", # URL of the region where the operation resides (output only).
+ "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+ "errors": [ # The array of errors encountered while processing this operation.
+ {
+ "message": "A String", # An optional, human-readable error message.
+ "code": "A String", # The error type identifier for this error.
+ "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+ },
+ ],
+ },
+ "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="list">list(project, region, maxResults=None, pageToken=None, filter=None)</code>
+ <pre>Retrieves the list of operation resources contained within the specified region.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ region: string, Name of the region scoping this request. (required)
+ maxResults: integer, Optional. Maximum count of results to be returned. Maximum and default value is 100.
+ pageToken: string, Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a previous list request.
+ filter: string, Optional. Filter expression for filtering listed resources.
+
+Returns:
+ An object of the form:
+
+ { # Contains a list of operation resources.
+ "nextPageToken": "A String", # A token used to continue a truncated list request (output only).
+ "items": [ # The operation resources.
+ { # An operation resource, used to manage asynchronous API requests.
+ "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+ "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "zone": "A String", # URL of the zone where the operation resides (output only).
+ "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+ "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+ "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+ "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+ "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+ "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+ "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+ "warnings": [ # If warning messages generated during processing of this operation, this field will be populated (output only).
+ {
+ "message": "A String", # Optional human-readable details for this warning.
+ "code": "A String", # The warning type identifier for this warning.
+ "data": [ # Metadata for this warning in 'key: value' format.
+ {
+ "value": "A String", # A warning data value corresponding to the key.
+ "key": "A String", # A key for the warning data.
+ },
+ ],
+ },
+ ],
+ "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+ "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+ "kind": "compute#operation", # Type of the resource.
+ "name": "A String", # Name of the resource (output only).
+ "region": "A String", # URL of the region where the operation resides (output only).
+ "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+ "errors": [ # The array of errors encountered while processing this operation.
+ {
+ "message": "A String", # An optional, human-readable error message.
+ "code": "A String", # The error type identifier for this error.
+ "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+ },
+ ],
+ },
+ "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+ },
+ ],
+ "kind": "compute#operationList", # Type of resource.
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "selfLink": "A String", # Server defined URL for this resource (output only).
+ }</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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/compute_v1beta15.regions.html b/docs/dyn/compute_v1beta15.regions.html
new file mode 100644
index 0000000..ecf4adc
--- /dev/null
+++ b/docs/dyn/compute_v1beta15.regions.html
@@ -0,0 +1,189 @@
+<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="compute_v1beta15.html">Compute Engine API</a> . <a href="compute_v1beta15.regions.html">regions</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#get">get(project, region)</a></code></p>
+<p class="firstline">Returns the specified region resource.</p>
+<p class="toc_element">
+ <code><a href="#list">list(project, maxResults=None, pageToken=None, filter=None)</a></code></p>
+<p class="firstline">Retrieves the list of region resources available to the specified project.</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>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="get">get(project, region)</code>
+ <pre>Returns the specified region resource.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ region: string, Name of the region resource to return. (required)
+
+Returns:
+ An object of the form:
+
+ { # Region resource.
+ "status": "A String", # Status of the region, "UP" or "DOWN".
+ "kind": "compute#region", # Type of the resource.
+ "description": "A String", # Textual description of the resource.
+ "deprecated": { # Deprecation status for a public resource. # The deprecation status associated with this region.
+ "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
+ "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+ "state": "A String", # The deprecation state. Can be "DEPRECATED", "OBSOLETE", or "DELETED". Operations which create a new resource using a "DEPRECATED" resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. New uses of "OBSOLETE" or "DELETED" resources will result in an error.
+ "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+ "replacement": "A String", # A URL of the suggested replacement for the deprecated resource. The deprecated resource and its replacement must be resources of the same kind.
+ },
+ "quotas": [ # Quotas assigned to this region.
+ { # A quotas entry.
+ "usage": 3.14, # Current usage of this metric.
+ "metric": "A String", # Name of the quota metric.
+ "limit": 3.14, # Quota limit for this metric.
+ },
+ ],
+ "zones": [ # A list of zones homed in this region, in the form of resource URLs.
+ "A String",
+ ],
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "name": "A String", # Name of the resource.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="list">list(project, maxResults=None, pageToken=None, filter=None)</code>
+ <pre>Retrieves the list of region resources available to the specified project.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ maxResults: integer, Optional. Maximum count of results to be returned. Maximum and default value is 100.
+ pageToken: string, Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a previous list request.
+ filter: string, Optional. Filter expression for filtering listed resources.
+
+Returns:
+ An object of the form:
+
+ { # Contains a list of region resources.
+ "nextPageToken": "A String", # A token used to continue a truncated list request (output only).
+ "items": [ # The region resources.
+ { # Region resource.
+ "status": "A String", # Status of the region, "UP" or "DOWN".
+ "kind": "compute#region", # Type of the resource.
+ "description": "A String", # Textual description of the resource.
+ "deprecated": { # Deprecation status for a public resource. # The deprecation status associated with this region.
+ "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
+ "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+ "state": "A String", # The deprecation state. Can be "DEPRECATED", "OBSOLETE", or "DELETED". Operations which create a new resource using a "DEPRECATED" resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. New uses of "OBSOLETE" or "DELETED" resources will result in an error.
+ "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+ "replacement": "A String", # A URL of the suggested replacement for the deprecated resource. The deprecated resource and its replacement must be resources of the same kind.
+ },
+ "quotas": [ # Quotas assigned to this region.
+ { # A quotas entry.
+ "usage": 3.14, # Current usage of this metric.
+ "metric": "A String", # Name of the quota metric.
+ "limit": 3.14, # Quota limit for this metric.
+ },
+ ],
+ "zones": [ # A list of zones homed in this region, in the form of resource URLs.
+ "A String",
+ ],
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "name": "A String", # Name of the resource.
+ },
+ ],
+ "kind": "compute#regionList", # Type of resource.
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "selfLink": "A String", # Server defined URL for this resource (output only).
+ }</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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/compute_v1beta15.routes.html b/docs/dyn/compute_v1beta15.routes.html
new file mode 100644
index 0000000..298d541
--- /dev/null
+++ b/docs/dyn/compute_v1beta15.routes.html
@@ -0,0 +1,348 @@
+<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="compute_v1beta15.html">Compute Engine API</a> . <a href="compute_v1beta15.routes.html">routes</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#delete">delete(project, route)</a></code></p>
+<p class="firstline">Deletes the specified route resource.</p>
+<p class="toc_element">
+ <code><a href="#get">get(project, route)</a></code></p>
+<p class="firstline">Returns the specified route resource.</p>
+<p class="toc_element">
+ <code><a href="#insert">insert(project, body)</a></code></p>
+<p class="firstline">Creates a route resource in the specified project using the data included in the request.</p>
+<p class="toc_element">
+ <code><a href="#list">list(project, maxResults=None, pageToken=None, filter=None)</a></code></p>
+<p class="firstline">Retrieves the list of route resources available to the specified project.</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>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="delete">delete(project, route)</code>
+ <pre>Deletes the specified route resource.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ route: string, Name of the route resource to delete. (required)
+
+Returns:
+ An object of the form:
+
+ { # An operation resource, used to manage asynchronous API requests.
+ "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+ "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "zone": "A String", # URL of the zone where the operation resides (output only).
+ "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+ "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+ "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+ "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+ "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+ "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+ "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+ "warnings": [ # If warning messages generated during processing of this operation, this field will be populated (output only).
+ {
+ "message": "A String", # Optional human-readable details for this warning.
+ "code": "A String", # The warning type identifier for this warning.
+ "data": [ # Metadata for this warning in 'key: value' format.
+ {
+ "value": "A String", # A warning data value corresponding to the key.
+ "key": "A String", # A key for the warning data.
+ },
+ ],
+ },
+ ],
+ "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+ "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+ "kind": "compute#operation", # Type of the resource.
+ "name": "A String", # Name of the resource (output only).
+ "region": "A String", # URL of the region where the operation resides (output only).
+ "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+ "errors": [ # The array of errors encountered while processing this operation.
+ {
+ "message": "A String", # An optional, human-readable error message.
+ "code": "A String", # The error type identifier for this error.
+ "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+ },
+ ],
+ },
+ "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="get">get(project, route)</code>
+ <pre>Returns the specified route resource.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ route: string, Name of the route resource to return. (required)
+
+Returns:
+ An object of the form:
+
+ { # The route resource. A Route is a rule that specifies how certain packets should be handled by the virtual network. Routes are associated with VMs by tag and the set of Routes for a particular VM is called its routing table. For each packet leaving a VM, the system searches that VM's routing table for a single best matching Route. Routes match packets by destination IP address, preferring smaller or more specific ranges over larger ones. If there is a tie, the system selects the Route with the smallest priority value. If there is still a tie, it uses the layer three and four packet headers to select just one of the remaining matching Routes. The packet is then forwarded as specified by the next_hop field of the winning Route -- either to another VM destination, a VM gateway or a GCE operated gateway. Packets that do not match any Route in the sending VM's routing table will be dropped.
+ "nextHopGateway": "A String", # The URL to a gateway that should handle matching packets.
+ "priority": 42, # Breaks ties between Routes of equal specificity. Routes with smaller values win when tied with routes with larger values.
+ "kind": "compute#route", # Type of the resource.
+ "name": "A String", # Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035.
+ "tags": [ # A list of instance tags to which this route applies.
+ "A String",
+ ],
+ "nextHopInstance": "A String", # The URL to an instance that should handle matching packets.
+ "warnings": [ # If potential misconfigurations are detected for this route, this field will be populated with warning messages.
+ {
+ "message": "A String", # Optional human-readable details for this warning.
+ "code": "A String", # The warning type identifier for this warning.
+ "data": [ # Metadata for this warning in 'key: value' format.
+ {
+ "value": "A String", # A warning data value corresponding to the key.
+ "key": "A String", # A key for the warning data.
+ },
+ ],
+ },
+ ],
+ "nextHopNetwork": "A String", # The URL of the local network if it should handle matching packets.
+ "network": "A String", # URL of the network to which this route is applied; provided by the client when the route is created.
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "destRange": "A String", # Which packets does this route apply to?
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "nextHopIp": "A String", # The network IP address of an instance that should handle matching packets.
+ "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="insert">insert(project, body)</code>
+ <pre>Creates a route resource in the specified project using the data included in the request.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # The route resource. A Route is a rule that specifies how certain packets should be handled by the virtual network. Routes are associated with VMs by tag and the set of Routes for a particular VM is called its routing table. For each packet leaving a VM, the system searches that VM's routing table for a single best matching Route. Routes match packets by destination IP address, preferring smaller or more specific ranges over larger ones. If there is a tie, the system selects the Route with the smallest priority value. If there is still a tie, it uses the layer three and four packet headers to select just one of the remaining matching Routes. The packet is then forwarded as specified by the next_hop field of the winning Route -- either to another VM destination, a VM gateway or a GCE operated gateway. Packets that do not match any Route in the sending VM's routing table will be dropped.
+ "nextHopGateway": "A String", # The URL to a gateway that should handle matching packets.
+ "priority": 42, # Breaks ties between Routes of equal specificity. Routes with smaller values win when tied with routes with larger values.
+ "kind": "compute#route", # Type of the resource.
+ "name": "A String", # Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035.
+ "tags": [ # A list of instance tags to which this route applies.
+ "A String",
+ ],
+ "nextHopInstance": "A String", # The URL to an instance that should handle matching packets.
+ "warnings": [ # If potential misconfigurations are detected for this route, this field will be populated with warning messages.
+ {
+ "message": "A String", # Optional human-readable details for this warning.
+ "code": "A String", # The warning type identifier for this warning.
+ "data": [ # Metadata for this warning in 'key: value' format.
+ {
+ "value": "A String", # A warning data value corresponding to the key.
+ "key": "A String", # A key for the warning data.
+ },
+ ],
+ },
+ ],
+ "nextHopNetwork": "A String", # The URL of the local network if it should handle matching packets.
+ "network": "A String", # URL of the network to which this route is applied; provided by the client when the route is created.
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "destRange": "A String", # Which packets does this route apply to?
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "nextHopIp": "A String", # The network IP address of an instance that should handle matching packets.
+ "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
+ }
+
+
+Returns:
+ An object of the form:
+
+ { # An operation resource, used to manage asynchronous API requests.
+ "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+ "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "zone": "A String", # URL of the zone where the operation resides (output only).
+ "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+ "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+ "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+ "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+ "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+ "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+ "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+ "warnings": [ # If warning messages generated during processing of this operation, this field will be populated (output only).
+ {
+ "message": "A String", # Optional human-readable details for this warning.
+ "code": "A String", # The warning type identifier for this warning.
+ "data": [ # Metadata for this warning in 'key: value' format.
+ {
+ "value": "A String", # A warning data value corresponding to the key.
+ "key": "A String", # A key for the warning data.
+ },
+ ],
+ },
+ ],
+ "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+ "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+ "kind": "compute#operation", # Type of the resource.
+ "name": "A String", # Name of the resource (output only).
+ "region": "A String", # URL of the region where the operation resides (output only).
+ "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+ "errors": [ # The array of errors encountered while processing this operation.
+ {
+ "message": "A String", # An optional, human-readable error message.
+ "code": "A String", # The error type identifier for this error.
+ "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+ },
+ ],
+ },
+ "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="list">list(project, maxResults=None, pageToken=None, filter=None)</code>
+ <pre>Retrieves the list of route resources available to the specified project.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ maxResults: integer, Optional. Maximum count of results to be returned. Maximum and default value is 100.
+ pageToken: string, Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a previous list request.
+ filter: string, Optional. Filter expression for filtering listed resources.
+
+Returns:
+ An object of the form:
+
+ { # Contains a list of route resources.
+ "nextPageToken": "A String", # A token used to continue a truncated list request (output only).
+ "items": [ # The route resources.
+ { # The route resource. A Route is a rule that specifies how certain packets should be handled by the virtual network. Routes are associated with VMs by tag and the set of Routes for a particular VM is called its routing table. For each packet leaving a VM, the system searches that VM's routing table for a single best matching Route. Routes match packets by destination IP address, preferring smaller or more specific ranges over larger ones. If there is a tie, the system selects the Route with the smallest priority value. If there is still a tie, it uses the layer three and four packet headers to select just one of the remaining matching Routes. The packet is then forwarded as specified by the next_hop field of the winning Route -- either to another VM destination, a VM gateway or a GCE operated gateway. Packets that do not match any Route in the sending VM's routing table will be dropped.
+ "nextHopGateway": "A String", # The URL to a gateway that should handle matching packets.
+ "priority": 42, # Breaks ties between Routes of equal specificity. Routes with smaller values win when tied with routes with larger values.
+ "kind": "compute#route", # Type of the resource.
+ "name": "A String", # Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035.
+ "tags": [ # A list of instance tags to which this route applies.
+ "A String",
+ ],
+ "nextHopInstance": "A String", # The URL to an instance that should handle matching packets.
+ "warnings": [ # If potential misconfigurations are detected for this route, this field will be populated with warning messages.
+ {
+ "message": "A String", # Optional human-readable details for this warning.
+ "code": "A String", # The warning type identifier for this warning.
+ "data": [ # Metadata for this warning in 'key: value' format.
+ {
+ "value": "A String", # A warning data value corresponding to the key.
+ "key": "A String", # A key for the warning data.
+ },
+ ],
+ },
+ ],
+ "nextHopNetwork": "A String", # The URL of the local network if it should handle matching packets.
+ "network": "A String", # URL of the network to which this route is applied; provided by the client when the route is created.
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "destRange": "A String", # Which packets does this route apply to?
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "nextHopIp": "A String", # The network IP address of an instance that should handle matching packets.
+ "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
+ },
+ ],
+ "kind": "compute#routeList", # Type of resource.
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "selfLink": "A String", # Server defined URL for this resource (output only).
+ }</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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/compute_v1beta15.snapshots.html b/docs/dyn/compute_v1beta15.snapshots.html
new file mode 100644
index 0000000..54bfd27
--- /dev/null
+++ b/docs/dyn/compute_v1beta15.snapshots.html
@@ -0,0 +1,220 @@
+<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="compute_v1beta15.html">Compute Engine API</a> . <a href="compute_v1beta15.snapshots.html">snapshots</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#delete">delete(project, snapshot)</a></code></p>
+<p class="firstline">Deletes the specified persistent disk snapshot resource.</p>
+<p class="toc_element">
+ <code><a href="#get">get(project, snapshot)</a></code></p>
+<p class="firstline">Returns the specified persistent disk snapshot resource.</p>
+<p class="toc_element">
+ <code><a href="#list">list(project, maxResults=None, pageToken=None, filter=None)</a></code></p>
+<p class="firstline">Retrieves the list of persistent disk snapshot resources contained within the specified project.</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>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="delete">delete(project, snapshot)</code>
+ <pre>Deletes the specified persistent disk snapshot resource.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ snapshot: string, Name of the persistent disk snapshot resource to delete. (required)
+
+Returns:
+ An object of the form:
+
+ { # An operation resource, used to manage asynchronous API requests.
+ "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+ "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "zone": "A String", # URL of the zone where the operation resides (output only).
+ "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+ "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+ "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+ "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+ "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+ "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+ "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+ "warnings": [ # If warning messages generated during processing of this operation, this field will be populated (output only).
+ {
+ "message": "A String", # Optional human-readable details for this warning.
+ "code": "A String", # The warning type identifier for this warning.
+ "data": [ # Metadata for this warning in 'key: value' format.
+ {
+ "value": "A String", # A warning data value corresponding to the key.
+ "key": "A String", # A key for the warning data.
+ },
+ ],
+ },
+ ],
+ "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+ "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+ "kind": "compute#operation", # Type of the resource.
+ "name": "A String", # Name of the resource (output only).
+ "region": "A String", # URL of the region where the operation resides (output only).
+ "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+ "errors": [ # The array of errors encountered while processing this operation.
+ {
+ "message": "A String", # An optional, human-readable error message.
+ "code": "A String", # The error type identifier for this error.
+ "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+ },
+ ],
+ },
+ "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="get">get(project, snapshot)</code>
+ <pre>Returns the specified persistent disk snapshot resource.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ snapshot: string, Name of the persistent disk snapshot resource to return. (required)
+
+Returns:
+ An object of the form:
+
+ { # A persistent disk snapshot resource.
+ "status": "A String", # The status of the persistent disk snapshot (output only).
+ "kind": "compute#snapshot", # Type of the resource.
+ "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
+ "sourceDisk": "A String", # The source disk used to create this snapshot. Once the source disk has been deleted from the system, this field will be cleared, and will not be set even if a disk with the same name has been re-created (output only).
+ "sourceDiskId": "A String", # The 'id' value of the disk used to create this snapshot. This value may be used to determine whether the snapshot was taken from the current or a previous instance of a given disk name.
+ "diskSizeGb": "A String", # Size of the persistent disk snapshot, specified in GB (output only).
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "name": "A String", # Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="list">list(project, maxResults=None, pageToken=None, filter=None)</code>
+ <pre>Retrieves the list of persistent disk snapshot resources contained within the specified project.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ maxResults: integer, Optional. Maximum count of results to be returned. Maximum and default value is 100.
+ pageToken: string, Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a previous list request.
+ filter: string, Optional. Filter expression for filtering listed resources.
+
+Returns:
+ An object of the form:
+
+ { # Contains a list of persistent disk snapshot resources.
+ "nextPageToken": "A String", # A token used to continue a truncated list request (output only).
+ "items": [ # The persistent snapshot resources.
+ { # A persistent disk snapshot resource.
+ "status": "A String", # The status of the persistent disk snapshot (output only).
+ "kind": "compute#snapshot", # Type of the resource.
+ "description": "A String", # An optional textual description of the resource; provided by the client when the resource is created.
+ "sourceDisk": "A String", # The source disk used to create this snapshot. Once the source disk has been deleted from the system, this field will be cleared, and will not be set even if a disk with the same name has been re-created (output only).
+ "sourceDiskId": "A String", # The 'id' value of the disk used to create this snapshot. This value may be used to determine whether the snapshot was taken from the current or a previous instance of a given disk name.
+ "diskSizeGb": "A String", # Size of the persistent disk snapshot, specified in GB (output only).
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "name": "A String", # Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035.
+ },
+ ],
+ "kind": "compute#snapshotList", # Type of resource.
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "selfLink": "A String", # Server defined URL for this resource (output only).
+ }</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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/compute_v1beta15.zoneOperations.html b/docs/dyn/compute_v1beta15.zoneOperations.html
new file mode 100644
index 0000000..7eeed52
--- /dev/null
+++ b/docs/dyn/compute_v1beta15.zoneOperations.html
@@ -0,0 +1,239 @@
+<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="compute_v1beta15.html">Compute Engine API</a> . <a href="compute_v1beta15.zoneOperations.html">zoneOperations</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#delete">delete(project, zone, operation)</a></code></p>
+<p class="firstline">Deletes the specified zone-specific operation resource.</p>
+<p class="toc_element">
+ <code><a href="#get">get(project, zone, operation)</a></code></p>
+<p class="firstline">Retrieves the specified zone-specific operation resource.</p>
+<p class="toc_element">
+ <code><a href="#list">list(project, zone, maxResults=None, pageToken=None, filter=None)</a></code></p>
+<p class="firstline">Retrieves the list of operation resources contained within the specified zone.</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>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="delete">delete(project, zone, operation)</code>
+ <pre>Deletes the specified zone-specific operation resource.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ zone: string, Name of the zone scoping this request. (required)
+ operation: string, Name of the operation resource to delete. (required)
+</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="get">get(project, zone, operation)</code>
+ <pre>Retrieves the specified zone-specific operation resource.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ zone: string, Name of the zone scoping this request. (required)
+ operation: string, Name of the operation resource to return. (required)
+
+Returns:
+ An object of the form:
+
+ { # An operation resource, used to manage asynchronous API requests.
+ "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+ "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "zone": "A String", # URL of the zone where the operation resides (output only).
+ "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+ "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+ "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+ "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+ "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+ "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+ "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+ "warnings": [ # If warning messages generated during processing of this operation, this field will be populated (output only).
+ {
+ "message": "A String", # Optional human-readable details for this warning.
+ "code": "A String", # The warning type identifier for this warning.
+ "data": [ # Metadata for this warning in 'key: value' format.
+ {
+ "value": "A String", # A warning data value corresponding to the key.
+ "key": "A String", # A key for the warning data.
+ },
+ ],
+ },
+ ],
+ "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+ "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+ "kind": "compute#operation", # Type of the resource.
+ "name": "A String", # Name of the resource (output only).
+ "region": "A String", # URL of the region where the operation resides (output only).
+ "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+ "errors": [ # The array of errors encountered while processing this operation.
+ {
+ "message": "A String", # An optional, human-readable error message.
+ "code": "A String", # The error type identifier for this error.
+ "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+ },
+ ],
+ },
+ "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="list">list(project, zone, maxResults=None, pageToken=None, filter=None)</code>
+ <pre>Retrieves the list of operation resources contained within the specified zone.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ zone: string, Name of the zone scoping this request. (required)
+ maxResults: integer, Optional. Maximum count of results to be returned. Maximum and default value is 100.
+ pageToken: string, Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a previous list request.
+ filter: string, Optional. Filter expression for filtering listed resources.
+
+Returns:
+ An object of the form:
+
+ { # Contains a list of operation resources.
+ "nextPageToken": "A String", # A token used to continue a truncated list request (output only).
+ "items": [ # The operation resources.
+ { # An operation resource, used to manage asynchronous API requests.
+ "targetId": "A String", # Unique target id which identifies a particular incarnation of the target (output only).
+ "clientOperationId": "A String", # An optional identifier specified by the client when the mutation was initiated. Must be unique for all operation resources in the project (output only).
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "zone": "A String", # URL of the zone where the operation resides (output only).
+ "operationType": "A String", # Type of the operation. Examples include "insert", "update", and "delete" (output only).
+ "httpErrorMessage": "A String", # If operation fails, the HTTP error message returned, e.g. NOT FOUND. (output only).
+ "progress": 42, # An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess at when the operation will be complete. This number should be monotonically increasing as the operation progresses (output only).
+ "httpErrorStatusCode": 42, # If operation fails, the HTTP error status code returned, e.g. 404. (output only).
+ "statusMessage": "A String", # An optional textual description of the current status of the operation (output only).
+ "status": "A String", # Status of the operation. Can be one of the following: "PENDING", "RUNNING", or "DONE" (output only).
+ "insertTime": "A String", # The time that this operation was requested. This is in RFC 3339 format (output only).
+ "warnings": [ # If warning messages generated during processing of this operation, this field will be populated (output only).
+ {
+ "message": "A String", # Optional human-readable details for this warning.
+ "code": "A String", # The warning type identifier for this warning.
+ "data": [ # Metadata for this warning in 'key: value' format.
+ {
+ "value": "A String", # A warning data value corresponding to the key.
+ "key": "A String", # A key for the warning data.
+ },
+ ],
+ },
+ ],
+ "user": "A String", # User who requested the operation, for example "user@example.com" (output only).
+ "startTime": "A String", # The time that this operation was started by the server. This is in RFC 3339 format (output only).
+ "kind": "compute#operation", # Type of the resource.
+ "name": "A String", # Name of the resource (output only).
+ "region": "A String", # URL of the region where the operation resides (output only).
+ "error": { # If errors occurred during processing of this operation, this field will be populated (output only).
+ "errors": [ # The array of errors encountered while processing this operation.
+ {
+ "message": "A String", # An optional, human-readable error message.
+ "code": "A String", # The error type identifier for this error.
+ "location": "A String", # Indicates the field in the request which caused the error. This property is optional.
+ },
+ ],
+ },
+ "endTime": "A String", # The time that this operation was completed. This is in RFC 3339 format (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "targetLink": "A String", # URL of the resource the operation is mutating (output only).
+ },
+ ],
+ "kind": "compute#operationList", # Type of resource.
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "selfLink": "A String", # Server defined URL for this resource (output only).
+ }</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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/compute_v1beta15.zones.html b/docs/dyn/compute_v1beta15.zones.html
new file mode 100644
index 0000000..d94f06f
--- /dev/null
+++ b/docs/dyn/compute_v1beta15.zones.html
@@ -0,0 +1,201 @@
+<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="compute_v1beta15.html">Compute Engine API</a> . <a href="compute_v1beta15.zones.html">zones</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#get">get(project, zone)</a></code></p>
+<p class="firstline">Returns the specified zone resource.</p>
+<p class="toc_element">
+ <code><a href="#list">list(project, maxResults=None, pageToken=None, filter=None)</a></code></p>
+<p class="firstline">Retrieves the list of zone resources available to the specified project.</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>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="get">get(project, zone)</code>
+ <pre>Returns the specified zone resource.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ zone: string, Name of the zone resource to return. (required)
+
+Returns:
+ An object of the form:
+
+ { # A zone resource.
+ "status": "A String", # Status of the zone. "UP" or "DOWN".
+ "kind": "compute#zone", # Type of the resource.
+ "description": "A String", # Textual description of the resource.
+ "maintenanceWindows": [ # Scheduled maintenance windows for the zone. When the zone is in a maintenance window, all resources which reside in the zone will be unavailable.
+ {
+ "endTime": "A String", # End time of the maintenance window, in RFC 3339 format.
+ "beginTime": "A String", # Begin time of the maintenance window, in RFC 3339 format.
+ "name": "A String", # Name of the maintenance window.
+ "description": "A String", # Textual description of the maintenance window.
+ },
+ ],
+ "deprecated": { # Deprecation status for a public resource. # The deprecation status associated with this zone.
+ "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
+ "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+ "state": "A String", # The deprecation state. Can be "DEPRECATED", "OBSOLETE", or "DELETED". Operations which create a new resource using a "DEPRECATED" resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. New uses of "OBSOLETE" or "DELETED" resources will result in an error.
+ "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+ "replacement": "A String", # A URL of the suggested replacement for the deprecated resource. The deprecated resource and its replacement must be resources of the same kind.
+ },
+ "region": "A String", # Full URL reference to the region which hosts the zone (output only).
+ "quotas": [ # Quotas assigned to this zone.
+ { # A quotas entry.
+ "usage": 3.14, # Current usage of this metric.
+ "metric": "A String", # Name of the quota metric.
+ "limit": 3.14, # Quota limit for this metric.
+ },
+ ],
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "name": "A String", # Name of the resource.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="list">list(project, maxResults=None, pageToken=None, filter=None)</code>
+ <pre>Retrieves the list of zone resources available to the specified project.
+
+Args:
+ project: string, Name of the project scoping this request. (required)
+ maxResults: integer, Optional. Maximum count of results to be returned. Maximum and default value is 100.
+ pageToken: string, Optional. Tag returned by a previous list request truncated by maxResults. Used to continue a previous list request.
+ filter: string, Optional. Filter expression for filtering listed resources.
+
+Returns:
+ An object of the form:
+
+ { # Contains a list of zone resources.
+ "nextPageToken": "A String", # A token used to continue a truncated list request (output only).
+ "items": [ # The zone resources.
+ { # A zone resource.
+ "status": "A String", # Status of the zone. "UP" or "DOWN".
+ "kind": "compute#zone", # Type of the resource.
+ "description": "A String", # Textual description of the resource.
+ "maintenanceWindows": [ # Scheduled maintenance windows for the zone. When the zone is in a maintenance window, all resources which reside in the zone will be unavailable.
+ {
+ "endTime": "A String", # End time of the maintenance window, in RFC 3339 format.
+ "beginTime": "A String", # Begin time of the maintenance window, in RFC 3339 format.
+ "name": "A String", # Name of the maintenance window.
+ "description": "A String", # Textual description of the maintenance window.
+ },
+ ],
+ "deprecated": { # Deprecation status for a public resource. # The deprecation status associated with this zone.
+ "deleted": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DELETED.
+ "deprecated": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to DEPRECATED.
+ "state": "A String", # The deprecation state. Can be "DEPRECATED", "OBSOLETE", or "DELETED". Operations which create a new resource using a "DEPRECATED" resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. New uses of "OBSOLETE" or "DELETED" resources will result in an error.
+ "obsolete": "A String", # An optional RFC3339 timestamp on or after which the deprecation state of this resource will be changed to OBSOLETE.
+ "replacement": "A String", # A URL of the suggested replacement for the deprecated resource. The deprecated resource and its replacement must be resources of the same kind.
+ },
+ "region": "A String", # Full URL reference to the region which hosts the zone (output only).
+ "quotas": [ # Quotas assigned to this zone.
+ { # A quotas entry.
+ "usage": 3.14, # Current usage of this metric.
+ "metric": "A String", # Name of the quota metric.
+ "limit": 3.14, # Quota limit for this metric.
+ },
+ ],
+ "creationTimestamp": "A String", # Creation timestamp in RFC3339 text format (output only).
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "selfLink": "A String", # Server defined URL for the resource (output only).
+ "name": "A String", # Name of the resource.
+ },
+ ],
+ "kind": "compute#zoneList", # Type of resource.
+ "id": "A String", # Unique identifier for the resource; defined by the server (output only).
+ "selfLink": "A String", # Server defined URL for this resource (output only).
+ }</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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/coordinate_v1.location.html b/docs/dyn/coordinate_v1.location.html
index 97d000a..131ec9d 100644
--- a/docs/dyn/coordinate_v1.location.html
+++ b/docs/dyn/coordinate_v1.location.html
@@ -112,12 +112,6 @@
"previousPageToken": "A String", # A token to provide to get the previous page of results.
"kind": "coordinate#tokenPagination", # Identifies this object as pagination information.
},
- "pageInfo": { # Page information. # General pagination information.
- "totalResults": 42, # Number of results available.
- "kind": "coordinate#pageInfo", # Identifies this object as page information.
- "resultPerPage": 42, # Number of results per page.
- "startIndex": 42, # Page start index.
- },
}</pre>
</div>
diff --git a/docs/dyn/coordinate_v1.schedule.html b/docs/dyn/coordinate_v1.schedule.html
index c48a46a..7a68369 100644
--- a/docs/dyn/coordinate_v1.schedule.html
+++ b/docs/dyn/coordinate_v1.schedule.html
@@ -78,10 +78,10 @@
<code><a href="#get">get(teamId, jobId)</a></code></p>
<p class="firstline">Retrieves the schedule for a job.</p>
<p class="toc_element">
- <code><a href="#patch">patch(teamId, jobId, body, allDay=None, startTime=None, endTime=None)</a></code></p>
+ <code><a href="#patch">patch(teamId, jobId, body, allDay=None, startTime=None, duration=None, endTime=None)</a></code></p>
<p class="firstline">Replaces the schedule of a job with the provided schedule. This method supports patch semantics.</p>
<p class="toc_element">
- <code><a href="#update">update(teamId, jobId, body, allDay=None, startTime=None, endTime=None)</a></code></p>
+ <code><a href="#update">update(teamId, jobId, body, allDay=None, startTime=None, duration=None, endTime=None)</a></code></p>
<p class="firstline">Replaces the schedule of a job with the provided schedule.</p>
<h3>Method Details</h3>
<div class="method">
@@ -96,6 +96,7 @@
An object of the form:
{ # Job schedule.
+ "duration": "A String", # Job duration in milliseconds.
"kind": "coordinate#schedule", # Identifies this object as a job schedule.
"allDay": True or False, # Whether the job is scheduled for the whole day. Time of day in start/end times is ignored if this is true.
"startTime": "A String", # Scheduled start time in milliseconds since epoch.
@@ -104,7 +105,7 @@
</div>
<div class="method">
- <code class="details" id="patch">patch(teamId, jobId, body, allDay=None, startTime=None, endTime=None)</code>
+ <code class="details" id="patch">patch(teamId, jobId, body, allDay=None, startTime=None, duration=None, endTime=None)</code>
<pre>Replaces the schedule of a job with the provided schedule. This method supports patch semantics.
Args:
@@ -114,6 +115,7 @@
The object takes the form of:
{ # Job schedule.
+ "duration": "A String", # Job duration in milliseconds.
"kind": "coordinate#schedule", # Identifies this object as a job schedule.
"allDay": True or False, # Whether the job is scheduled for the whole day. Time of day in start/end times is ignored if this is true.
"startTime": "A String", # Scheduled start time in milliseconds since epoch.
@@ -122,12 +124,14 @@
allDay: boolean, Whether the job is scheduled for the whole day. Time of day in start/end times is ignored if this is true.
startTime: string, Scheduled start time in milliseconds since epoch.
+ duration: string, Job duration in milliseconds.
endTime: string, Scheduled end time in milliseconds since epoch.
Returns:
An object of the form:
{ # Job schedule.
+ "duration": "A String", # Job duration in milliseconds.
"kind": "coordinate#schedule", # Identifies this object as a job schedule.
"allDay": True or False, # Whether the job is scheduled for the whole day. Time of day in start/end times is ignored if this is true.
"startTime": "A String", # Scheduled start time in milliseconds since epoch.
@@ -136,7 +140,7 @@
</div>
<div class="method">
- <code class="details" id="update">update(teamId, jobId, body, allDay=None, startTime=None, endTime=None)</code>
+ <code class="details" id="update">update(teamId, jobId, body, allDay=None, startTime=None, duration=None, endTime=None)</code>
<pre>Replaces the schedule of a job with the provided schedule.
Args:
@@ -146,6 +150,7 @@
The object takes the form of:
{ # Job schedule.
+ "duration": "A String", # Job duration in milliseconds.
"kind": "coordinate#schedule", # Identifies this object as a job schedule.
"allDay": True or False, # Whether the job is scheduled for the whole day. Time of day in start/end times is ignored if this is true.
"startTime": "A String", # Scheduled start time in milliseconds since epoch.
@@ -154,12 +159,14 @@
allDay: boolean, Whether the job is scheduled for the whole day. Time of day in start/end times is ignored if this is true.
startTime: string, Scheduled start time in milliseconds since epoch.
+ duration: string, Job duration in milliseconds.
endTime: string, Scheduled end time in milliseconds since epoch.
Returns:
An object of the form:
{ # Job schedule.
+ "duration": "A String", # Job duration in milliseconds.
"kind": "coordinate#schedule", # Identifies this object as a job schedule.
"allDay": True or False, # Whether the job is scheduled for the whole day. Time of day in start/end times is ignored if this is true.
"startTime": "A String", # Scheduled start time in milliseconds since epoch.
diff --git a/docs/dyn/datastore_v1beta1.datasets.html b/docs/dyn/datastore_v1beta1.datasets.html
new file mode 100644
index 0000000..24e7972
--- /dev/null
+++ b/docs/dyn/datastore_v1beta1.datasets.html
@@ -0,0 +1,1212 @@
+<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="datastore_v1beta1.html">Google Cloud Datastore API</a> . <a href="datastore_v1beta1.datasets.html">datasets</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#allocateIds">allocateIds(datasetId, body)</a></code></p>
+<p class="firstline">Allocate IDs for incomplete keys (useful for referencing an entity before it is inserted).</p>
+<p class="toc_element">
+ <code><a href="#beginTransaction">beginTransaction(datasetId, body)</a></code></p>
+<p class="firstline">Begin a new transaction.</p>
+<p class="toc_element">
+ <code><a href="#blindWrite">blindWrite(datasetId, body)</a></code></p>
+<p class="firstline">Create, delete or modify some entities outside a transaction.</p>
+<p class="toc_element">
+ <code><a href="#commit">commit(datasetId, body)</a></code></p>
+<p class="firstline">Commit a transaction, optionally creating, deleting or modifying some entities.</p>
+<p class="toc_element">
+ <code><a href="#lookup">lookup(datasetId, body)</a></code></p>
+<p class="firstline">Look up some entities by key.</p>
+<p class="toc_element">
+ <code><a href="#rollback">rollback(datasetId, body)</a></code></p>
+<p class="firstline">Roll back a transaction.</p>
+<p class="toc_element">
+ <code><a href="#runQuery">runQuery(datasetId, body)</a></code></p>
+<p class="firstline">Query for entities.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="allocateIds">allocateIds(datasetId, body)</code>
+ <pre>Allocate IDs for incomplete keys (useful for referencing an entity before it is inserted).
+
+Args:
+ datasetId: string, Identifies the dataset. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{
+ "keys": [ # A list of keys with incomplete key paths to allocate IDs for. No key may be reserved/read-only.
+ {
+ "path": [ # The entity path. An entity path consists of one or more elements composed of a kind and a string or numerical identifier, which identify entities. The first element identifies a root entity, the second element identifies a child of the root entity, the third element a child of the second entity, and so forth. The entities identified by all prefixes of the path are called the element's ancestors. An entity path is always fully complete: ALL of the entity's ancestors are required to be in the path along with the entity identifier itself. The only exception is that in some documented cases, the identifier in the last path element (for the entity) itself may be omitted. A path can never be empty.
+ { # A (kind, ID/name) pair used to construct a key path.
+ #
+ # At most one of name or ID may be set. If either is set, the element is complete. If neither is set, the element is incomplete.
+ "kind": "A String", # The kind of the entity. Kinds matching regex "__.*__" are reserved/read-only. Cannot be "".
+ "id": "A String", # The ID of the entity. Always > 0.
+ "name": "A String", # The name of the entity. Names matching regex "__.*__" are reserved/read-only. Cannot be "".
+ },
+ ],
+ "partitionId": { # Entities are partitioned into subsets, currently identified by a dataset (usually implicitly specified by the project) and namespace ID. Queries are scoped to a single partition.
+ "namespace": "A String", # The namespace.
+ "datasetId": "A String", # The dataset ID.
+ },
+ },
+ ],
+ }
+
+
+Returns:
+ An object of the form:
+
+ {
+ "keys": [ # The keys specified in the request (in the same order), each with its key path completed with a newly allocated ID.
+ {
+ "path": [ # The entity path. An entity path consists of one or more elements composed of a kind and a string or numerical identifier, which identify entities. The first element identifies a root entity, the second element identifies a child of the root entity, the third element a child of the second entity, and so forth. The entities identified by all prefixes of the path are called the element's ancestors. An entity path is always fully complete: ALL of the entity's ancestors are required to be in the path along with the entity identifier itself. The only exception is that in some documented cases, the identifier in the last path element (for the entity) itself may be omitted. A path can never be empty.
+ { # A (kind, ID/name) pair used to construct a key path.
+ #
+ # At most one of name or ID may be set. If either is set, the element is complete. If neither is set, the element is incomplete.
+ "kind": "A String", # The kind of the entity. Kinds matching regex "__.*__" are reserved/read-only. Cannot be "".
+ "id": "A String", # The ID of the entity. Always > 0.
+ "name": "A String", # The name of the entity. Names matching regex "__.*__" are reserved/read-only. Cannot be "".
+ },
+ ],
+ "partitionId": { # Entities are partitioned into subsets, currently identified by a dataset (usually implicitly specified by the project) and namespace ID. Queries are scoped to a single partition.
+ "namespace": "A String", # The namespace.
+ "datasetId": "A String", # The dataset ID.
+ },
+ },
+ ],
+ "header": {
+ "kind": "datastore#responseHeader", # The kind, fixed to "datastore#responseHeader".
+ },
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="beginTransaction">beginTransaction(datasetId, body)</code>
+ <pre>Begin a new transaction.
+
+Args:
+ datasetId: string, Identifies the dataset. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{
+ "isolationLevel": "A String", # The transaction isolation level. Either snapshot or serializable. The default isolation level is snapshot isolation, which means that another transaction may not concurrently modify the data that is modified by this transaction. Optionally, a transaction can request to be made serializable which means that another transaction cannot concurrently modify the data that is read or modified by this transaction.
+ }
+
+
+Returns:
+ An object of the form:
+
+ {
+ "header": {
+ "kind": "datastore#responseHeader", # The kind, fixed to "datastore#responseHeader".
+ },
+ "transaction": "A String", # The transaction identifier (always present).
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="blindWrite">blindWrite(datasetId, body)</code>
+ <pre>Create, delete or modify some entities outside a transaction.
+
+Args:
+ datasetId: string, Identifies the dataset. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{
+ "mutation": { # The mutation to perform.
+ "insert": [ # Entities to insert. Each inserted entity's key must have a complete path and must not be reserved/read-only.
+ {
+ "properties": { # The entity's properties.
+ "a_key": { # The name of the property. Properties with names matching regex "__.*__" are reserved. A reserved property name is forbidden in certain documented contexts. The name cannot be "".
+ "multi": True or False, # If this property contains a list of values. Input values may explicitly set multi to false, but otherwise false is always represented by omitting multi.
+ "values": [ # The value(s) of the property. When multi is false there is always exactly one value. When multi is true there are always one or more values. Each value can have only one value property populated. For example, you cannot have a values list of { values: [ { integerValue: 22, stringValue: "a" } ] }, but you can have { multi: true, values: [ { integerValue: 22 }, { stringValue: "a" } ] }.
+ {
+ "entityValue": # Object with schema name: Entity # An entity value. May have no key. May have a key with an incomplete key path. May have a reserved/read-only key.
+ "doubleValue": 3.14, # A double value.
+ "integerValue": "A String", # An integer value.
+ "meaning": 42, # The meaning field is reserved and should not be used.
+ "dateTimeValue": "A String", # A timestamp value.
+ "keyValue": { # A key value.
+ "path": [ # The entity path. An entity path consists of one or more elements composed of a kind and a string or numerical identifier, which identify entities. The first element identifies a root entity, the second element identifies a child of the root entity, the third element a child of the second entity, and so forth. The entities identified by all prefixes of the path are called the element's ancestors. An entity path is always fully complete: ALL of the entity's ancestors are required to be in the path along with the entity identifier itself. The only exception is that in some documented cases, the identifier in the last path element (for the entity) itself may be omitted. A path can never be empty.
+ { # A (kind, ID/name) pair used to construct a key path.
+ #
+ # At most one of name or ID may be set. If either is set, the element is complete. If neither is set, the element is incomplete.
+ "kind": "A String", # The kind of the entity. Kinds matching regex "__.*__" are reserved/read-only. Cannot be "".
+ "id": "A String", # The ID of the entity. Always > 0.
+ "name": "A String", # The name of the entity. Names matching regex "__.*__" are reserved/read-only. Cannot be "".
+ },
+ ],
+ "partitionId": { # Entities are partitioned into subsets, currently identified by a dataset (usually implicitly specified by the project) and namespace ID. Queries are scoped to a single partition.
+ "namespace": "A String", # The namespace.
+ "datasetId": "A String", # The dataset ID.
+ },
+ },
+ "stringValue": "A String", # A UTF-8 encoded string value.
+ "indexed": True or False, # If the value should be indexed.
+ #
+ # The indexed property may be set for a null value. When indexed is true, stringValue is limited to 500 characters and the blob value is limited to 500 bytes. Input values by default have indexed set to true; however, you can explicitly set indexed to true if you want. (An output value never has indexed explicitly set to true.) If a value is itself an entity, it cannot have indexed set to true.
+ "blobValue": "A String", # A blob value.
+ "booleanValue": True or False, # A boolean value.
+ "blobKeyValue": "A String", # A blob key value.
+ },
+ ],
+ },
+ },
+ "key": { # The entity's key.
+ #
+ # An entity must have a key, unless otherwise documented (for example, an entity in Value.entityValue may have no key). An entity's kind is its key's path's last element's kind, or null if it has no key.
+ "path": [ # The entity path. An entity path consists of one or more elements composed of a kind and a string or numerical identifier, which identify entities. The first element identifies a root entity, the second element identifies a child of the root entity, the third element a child of the second entity, and so forth. The entities identified by all prefixes of the path are called the element's ancestors. An entity path is always fully complete: ALL of the entity's ancestors are required to be in the path along with the entity identifier itself. The only exception is that in some documented cases, the identifier in the last path element (for the entity) itself may be omitted. A path can never be empty.
+ { # A (kind, ID/name) pair used to construct a key path.
+ #
+ # At most one of name or ID may be set. If either is set, the element is complete. If neither is set, the element is incomplete.
+ "kind": "A String", # The kind of the entity. Kinds matching regex "__.*__" are reserved/read-only. Cannot be "".
+ "id": "A String", # The ID of the entity. Always > 0.
+ "name": "A String", # The name of the entity. Names matching regex "__.*__" are reserved/read-only. Cannot be "".
+ },
+ ],
+ "partitionId": { # Entities are partitioned into subsets, currently identified by a dataset (usually implicitly specified by the project) and namespace ID. Queries are scoped to a single partition.
+ "namespace": "A String", # The namespace.
+ "datasetId": "A String", # The dataset ID.
+ },
+ },
+ },
+ ],
+ "force": True or False, # Ignore a user specified read-only period. Optional.
+ "insertAutoId": [ # Insert entities with a newly allocated ID. Each inserted entity's key must omit the final identifier in its path and must not be reserved/read-only.
+ {
+ "properties": { # The entity's properties.
+ "a_key": { # The name of the property. Properties with names matching regex "__.*__" are reserved. A reserved property name is forbidden in certain documented contexts. The name cannot be "".
+ "multi": True or False, # If this property contains a list of values. Input values may explicitly set multi to false, but otherwise false is always represented by omitting multi.
+ "values": [ # The value(s) of the property. When multi is false there is always exactly one value. When multi is true there are always one or more values. Each value can have only one value property populated. For example, you cannot have a values list of { values: [ { integerValue: 22, stringValue: "a" } ] }, but you can have { multi: true, values: [ { integerValue: 22 }, { stringValue: "a" } ] }.
+ {
+ "entityValue": # Object with schema name: Entity # An entity value. May have no key. May have a key with an incomplete key path. May have a reserved/read-only key.
+ "doubleValue": 3.14, # A double value.
+ "integerValue": "A String", # An integer value.
+ "meaning": 42, # The meaning field is reserved and should not be used.
+ "dateTimeValue": "A String", # A timestamp value.
+ "keyValue": { # A key value.
+ "path": [ # The entity path. An entity path consists of one or more elements composed of a kind and a string or numerical identifier, which identify entities. The first element identifies a root entity, the second element identifies a child of the root entity, the third element a child of the second entity, and so forth. The entities identified by all prefixes of the path are called the element's ancestors. An entity path is always fully complete: ALL of the entity's ancestors are required to be in the path along with the entity identifier itself. The only exception is that in some documented cases, the identifier in the last path element (for the entity) itself may be omitted. A path can never be empty.
+ { # A (kind, ID/name) pair used to construct a key path.
+ #
+ # At most one of name or ID may be set. If either is set, the element is complete. If neither is set, the element is incomplete.
+ "kind": "A String", # The kind of the entity. Kinds matching regex "__.*__" are reserved/read-only. Cannot be "".
+ "id": "A String", # The ID of the entity. Always > 0.
+ "name": "A String", # The name of the entity. Names matching regex "__.*__" are reserved/read-only. Cannot be "".
+ },
+ ],
+ "partitionId": { # Entities are partitioned into subsets, currently identified by a dataset (usually implicitly specified by the project) and namespace ID. Queries are scoped to a single partition.
+ "namespace": "A String", # The namespace.
+ "datasetId": "A String", # The dataset ID.
+ },
+ },
+ "stringValue": "A String", # A UTF-8 encoded string value.
+ "indexed": True or False, # If the value should be indexed.
+ #
+ # The indexed property may be set for a null value. When indexed is true, stringValue is limited to 500 characters and the blob value is limited to 500 bytes. Input values by default have indexed set to true; however, you can explicitly set indexed to true if you want. (An output value never has indexed explicitly set to true.) If a value is itself an entity, it cannot have indexed set to true.
+ "blobValue": "A String", # A blob value.
+ "booleanValue": True or False, # A boolean value.
+ "blobKeyValue": "A String", # A blob key value.
+ },
+ ],
+ },
+ },
+ "key": { # The entity's key.
+ #
+ # An entity must have a key, unless otherwise documented (for example, an entity in Value.entityValue may have no key). An entity's kind is its key's path's last element's kind, or null if it has no key.
+ "path": [ # The entity path. An entity path consists of one or more elements composed of a kind and a string or numerical identifier, which identify entities. The first element identifies a root entity, the second element identifies a child of the root entity, the third element a child of the second entity, and so forth. The entities identified by all prefixes of the path are called the element's ancestors. An entity path is always fully complete: ALL of the entity's ancestors are required to be in the path along with the entity identifier itself. The only exception is that in some documented cases, the identifier in the last path element (for the entity) itself may be omitted. A path can never be empty.
+ { # A (kind, ID/name) pair used to construct a key path.
+ #
+ # At most one of name or ID may be set. If either is set, the element is complete. If neither is set, the element is incomplete.
+ "kind": "A String", # The kind of the entity. Kinds matching regex "__.*__" are reserved/read-only. Cannot be "".
+ "id": "A String", # The ID of the entity. Always > 0.
+ "name": "A String", # The name of the entity. Names matching regex "__.*__" are reserved/read-only. Cannot be "".
+ },
+ ],
+ "partitionId": { # Entities are partitioned into subsets, currently identified by a dataset (usually implicitly specified by the project) and namespace ID. Queries are scoped to a single partition.
+ "namespace": "A String", # The namespace.
+ "datasetId": "A String", # The dataset ID.
+ },
+ },
+ },
+ ],
+ "update": [ # Entities to update. Each updated entity's key must have a complete path and must not be reserved/read-only.
+ {
+ "properties": { # The entity's properties.
+ "a_key": { # The name of the property. Properties with names matching regex "__.*__" are reserved. A reserved property name is forbidden in certain documented contexts. The name cannot be "".
+ "multi": True or False, # If this property contains a list of values. Input values may explicitly set multi to false, but otherwise false is always represented by omitting multi.
+ "values": [ # The value(s) of the property. When multi is false there is always exactly one value. When multi is true there are always one or more values. Each value can have only one value property populated. For example, you cannot have a values list of { values: [ { integerValue: 22, stringValue: "a" } ] }, but you can have { multi: true, values: [ { integerValue: 22 }, { stringValue: "a" } ] }.
+ {
+ "entityValue": # Object with schema name: Entity # An entity value. May have no key. May have a key with an incomplete key path. May have a reserved/read-only key.
+ "doubleValue": 3.14, # A double value.
+ "integerValue": "A String", # An integer value.
+ "meaning": 42, # The meaning field is reserved and should not be used.
+ "dateTimeValue": "A String", # A timestamp value.
+ "keyValue": { # A key value.
+ "path": [ # The entity path. An entity path consists of one or more elements composed of a kind and a string or numerical identifier, which identify entities. The first element identifies a root entity, the second element identifies a child of the root entity, the third element a child of the second entity, and so forth. The entities identified by all prefixes of the path are called the element's ancestors. An entity path is always fully complete: ALL of the entity's ancestors are required to be in the path along with the entity identifier itself. The only exception is that in some documented cases, the identifier in the last path element (for the entity) itself may be omitted. A path can never be empty.
+ { # A (kind, ID/name) pair used to construct a key path.
+ #
+ # At most one of name or ID may be set. If either is set, the element is complete. If neither is set, the element is incomplete.
+ "kind": "A String", # The kind of the entity. Kinds matching regex "__.*__" are reserved/read-only. Cannot be "".
+ "id": "A String", # The ID of the entity. Always > 0.
+ "name": "A String", # The name of the entity. Names matching regex "__.*__" are reserved/read-only. Cannot be "".
+ },
+ ],
+ "partitionId": { # Entities are partitioned into subsets, currently identified by a dataset (usually implicitly specified by the project) and namespace ID. Queries are scoped to a single partition.
+ "namespace": "A String", # The namespace.
+ "datasetId": "A String", # The dataset ID.
+ },
+ },
+ "stringValue": "A String", # A UTF-8 encoded string value.
+ "indexed": True or False, # If the value should be indexed.
+ #
+ # The indexed property may be set for a null value. When indexed is true, stringValue is limited to 500 characters and the blob value is limited to 500 bytes. Input values by default have indexed set to true; however, you can explicitly set indexed to true if you want. (An output value never has indexed explicitly set to true.) If a value is itself an entity, it cannot have indexed set to true.
+ "blobValue": "A String", # A blob value.
+ "booleanValue": True or False, # A boolean value.
+ "blobKeyValue": "A String", # A blob key value.
+ },
+ ],
+ },
+ },
+ "key": { # The entity's key.
+ #
+ # An entity must have a key, unless otherwise documented (for example, an entity in Value.entityValue may have no key). An entity's kind is its key's path's last element's kind, or null if it has no key.
+ "path": [ # The entity path. An entity path consists of one or more elements composed of a kind and a string or numerical identifier, which identify entities. The first element identifies a root entity, the second element identifies a child of the root entity, the third element a child of the second entity, and so forth. The entities identified by all prefixes of the path are called the element's ancestors. An entity path is always fully complete: ALL of the entity's ancestors are required to be in the path along with the entity identifier itself. The only exception is that in some documented cases, the identifier in the last path element (for the entity) itself may be omitted. A path can never be empty.
+ { # A (kind, ID/name) pair used to construct a key path.
+ #
+ # At most one of name or ID may be set. If either is set, the element is complete. If neither is set, the element is incomplete.
+ "kind": "A String", # The kind of the entity. Kinds matching regex "__.*__" are reserved/read-only. Cannot be "".
+ "id": "A String", # The ID of the entity. Always > 0.
+ "name": "A String", # The name of the entity. Names matching regex "__.*__" are reserved/read-only. Cannot be "".
+ },
+ ],
+ "partitionId": { # Entities are partitioned into subsets, currently identified by a dataset (usually implicitly specified by the project) and namespace ID. Queries are scoped to a single partition.
+ "namespace": "A String", # The namespace.
+ "datasetId": "A String", # The dataset ID.
+ },
+ },
+ },
+ ],
+ "delete": [ # Keys of entities to delete. Each key must have a complete key path and must not be reserved/read-only.
+ {
+ "path": [ # The entity path. An entity path consists of one or more elements composed of a kind and a string or numerical identifier, which identify entities. The first element identifies a root entity, the second element identifies a child of the root entity, the third element a child of the second entity, and so forth. The entities identified by all prefixes of the path are called the element's ancestors. An entity path is always fully complete: ALL of the entity's ancestors are required to be in the path along with the entity identifier itself. The only exception is that in some documented cases, the identifier in the last path element (for the entity) itself may be omitted. A path can never be empty.
+ { # A (kind, ID/name) pair used to construct a key path.
+ #
+ # At most one of name or ID may be set. If either is set, the element is complete. If neither is set, the element is incomplete.
+ "kind": "A String", # The kind of the entity. Kinds matching regex "__.*__" are reserved/read-only. Cannot be "".
+ "id": "A String", # The ID of the entity. Always > 0.
+ "name": "A String", # The name of the entity. Names matching regex "__.*__" are reserved/read-only. Cannot be "".
+ },
+ ],
+ "partitionId": { # Entities are partitioned into subsets, currently identified by a dataset (usually implicitly specified by the project) and namespace ID. Queries are scoped to a single partition.
+ "namespace": "A String", # The namespace.
+ "datasetId": "A String", # The dataset ID.
+ },
+ },
+ ],
+ "upsert": [ # Entities to upsert. Each upserted entity's key must have a complete path and must not be reserved/read-only.
+ {
+ "properties": { # The entity's properties.
+ "a_key": { # The name of the property. Properties with names matching regex "__.*__" are reserved. A reserved property name is forbidden in certain documented contexts. The name cannot be "".
+ "multi": True or False, # If this property contains a list of values. Input values may explicitly set multi to false, but otherwise false is always represented by omitting multi.
+ "values": [ # The value(s) of the property. When multi is false there is always exactly one value. When multi is true there are always one or more values. Each value can have only one value property populated. For example, you cannot have a values list of { values: [ { integerValue: 22, stringValue: "a" } ] }, but you can have { multi: true, values: [ { integerValue: 22 }, { stringValue: "a" } ] }.
+ {
+ "entityValue": # Object with schema name: Entity # An entity value. May have no key. May have a key with an incomplete key path. May have a reserved/read-only key.
+ "doubleValue": 3.14, # A double value.
+ "integerValue": "A String", # An integer value.
+ "meaning": 42, # The meaning field is reserved and should not be used.
+ "dateTimeValue": "A String", # A timestamp value.
+ "keyValue": { # A key value.
+ "path": [ # The entity path. An entity path consists of one or more elements composed of a kind and a string or numerical identifier, which identify entities. The first element identifies a root entity, the second element identifies a child of the root entity, the third element a child of the second entity, and so forth. The entities identified by all prefixes of the path are called the element's ancestors. An entity path is always fully complete: ALL of the entity's ancestors are required to be in the path along with the entity identifier itself. The only exception is that in some documented cases, the identifier in the last path element (for the entity) itself may be omitted. A path can never be empty.
+ { # A (kind, ID/name) pair used to construct a key path.
+ #
+ # At most one of name or ID may be set. If either is set, the element is complete. If neither is set, the element is incomplete.
+ "kind": "A String", # The kind of the entity. Kinds matching regex "__.*__" are reserved/read-only. Cannot be "".
+ "id": "A String", # The ID of the entity. Always > 0.
+ "name": "A String", # The name of the entity. Names matching regex "__.*__" are reserved/read-only. Cannot be "".
+ },
+ ],
+ "partitionId": { # Entities are partitioned into subsets, currently identified by a dataset (usually implicitly specified by the project) and namespace ID. Queries are scoped to a single partition.
+ "namespace": "A String", # The namespace.
+ "datasetId": "A String", # The dataset ID.
+ },
+ },
+ "stringValue": "A String", # A UTF-8 encoded string value.
+ "indexed": True or False, # If the value should be indexed.
+ #
+ # The indexed property may be set for a null value. When indexed is true, stringValue is limited to 500 characters and the blob value is limited to 500 bytes. Input values by default have indexed set to true; however, you can explicitly set indexed to true if you want. (An output value never has indexed explicitly set to true.) If a value is itself an entity, it cannot have indexed set to true.
+ "blobValue": "A String", # A blob value.
+ "booleanValue": True or False, # A boolean value.
+ "blobKeyValue": "A String", # A blob key value.
+ },
+ ],
+ },
+ },
+ "key": { # The entity's key.
+ #
+ # An entity must have a key, unless otherwise documented (for example, an entity in Value.entityValue may have no key). An entity's kind is its key's path's last element's kind, or null if it has no key.
+ "path": [ # The entity path. An entity path consists of one or more elements composed of a kind and a string or numerical identifier, which identify entities. The first element identifies a root entity, the second element identifies a child of the root entity, the third element a child of the second entity, and so forth. The entities identified by all prefixes of the path are called the element's ancestors. An entity path is always fully complete: ALL of the entity's ancestors are required to be in the path along with the entity identifier itself. The only exception is that in some documented cases, the identifier in the last path element (for the entity) itself may be omitted. A path can never be empty.
+ { # A (kind, ID/name) pair used to construct a key path.
+ #
+ # At most one of name or ID may be set. If either is set, the element is complete. If neither is set, the element is incomplete.
+ "kind": "A String", # The kind of the entity. Kinds matching regex "__.*__" are reserved/read-only. Cannot be "".
+ "id": "A String", # The ID of the entity. Always > 0.
+ "name": "A String", # The name of the entity. Names matching regex "__.*__" are reserved/read-only. Cannot be "".
+ },
+ ],
+ "partitionId": { # Entities are partitioned into subsets, currently identified by a dataset (usually implicitly specified by the project) and namespace ID. Queries are scoped to a single partition.
+ "namespace": "A String", # The namespace.
+ "datasetId": "A String", # The dataset ID.
+ },
+ },
+ },
+ ],
+ },
+ }
+
+
+Returns:
+ An object of the form:
+
+ {
+ "header": {
+ "kind": "datastore#responseHeader", # The kind, fixed to "datastore#responseHeader".
+ },
+ "mutationResult": { # The result of performing the mutation (always present).
+ "insertAutoIdKeys": [ # Keys for insertAutoId entities. One per entity from the request, in the same order.
+ {
+ "path": [ # The entity path. An entity path consists of one or more elements composed of a kind and a string or numerical identifier, which identify entities. The first element identifies a root entity, the second element identifies a child of the root entity, the third element a child of the second entity, and so forth. The entities identified by all prefixes of the path are called the element's ancestors. An entity path is always fully complete: ALL of the entity's ancestors are required to be in the path along with the entity identifier itself. The only exception is that in some documented cases, the identifier in the last path element (for the entity) itself may be omitted. A path can never be empty.
+ { # A (kind, ID/name) pair used to construct a key path.
+ #
+ # At most one of name or ID may be set. If either is set, the element is complete. If neither is set, the element is incomplete.
+ "kind": "A String", # The kind of the entity. Kinds matching regex "__.*__" are reserved/read-only. Cannot be "".
+ "id": "A String", # The ID of the entity. Always > 0.
+ "name": "A String", # The name of the entity. Names matching regex "__.*__" are reserved/read-only. Cannot be "".
+ },
+ ],
+ "partitionId": { # Entities are partitioned into subsets, currently identified by a dataset (usually implicitly specified by the project) and namespace ID. Queries are scoped to a single partition.
+ "namespace": "A String", # The namespace.
+ "datasetId": "A String", # The dataset ID.
+ },
+ },
+ ],
+ "indexUpdates": 42, # Number of index writes.
+ },
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="commit">commit(datasetId, body)</code>
+ <pre>Commit a transaction, optionally creating, deleting or modifying some entities.
+
+Args:
+ datasetId: string, Identifies the dataset. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{
+ "transaction": "A String", # The transaction identifier, returned by a call to beginTransaction.
+ "mutation": { # The mutation to perform as part of this transaction. Optional.
+ "insert": [ # Entities to insert. Each inserted entity's key must have a complete path and must not be reserved/read-only.
+ {
+ "properties": { # The entity's properties.
+ "a_key": { # The name of the property. Properties with names matching regex "__.*__" are reserved. A reserved property name is forbidden in certain documented contexts. The name cannot be "".
+ "multi": True or False, # If this property contains a list of values. Input values may explicitly set multi to false, but otherwise false is always represented by omitting multi.
+ "values": [ # The value(s) of the property. When multi is false there is always exactly one value. When multi is true there are always one or more values. Each value can have only one value property populated. For example, you cannot have a values list of { values: [ { integerValue: 22, stringValue: "a" } ] }, but you can have { multi: true, values: [ { integerValue: 22 }, { stringValue: "a" } ] }.
+ {
+ "entityValue": # Object with schema name: Entity # An entity value. May have no key. May have a key with an incomplete key path. May have a reserved/read-only key.
+ "doubleValue": 3.14, # A double value.
+ "integerValue": "A String", # An integer value.
+ "meaning": 42, # The meaning field is reserved and should not be used.
+ "dateTimeValue": "A String", # A timestamp value.
+ "keyValue": { # A key value.
+ "path": [ # The entity path. An entity path consists of one or more elements composed of a kind and a string or numerical identifier, which identify entities. The first element identifies a root entity, the second element identifies a child of the root entity, the third element a child of the second entity, and so forth. The entities identified by all prefixes of the path are called the element's ancestors. An entity path is always fully complete: ALL of the entity's ancestors are required to be in the path along with the entity identifier itself. The only exception is that in some documented cases, the identifier in the last path element (for the entity) itself may be omitted. A path can never be empty.
+ { # A (kind, ID/name) pair used to construct a key path.
+ #
+ # At most one of name or ID may be set. If either is set, the element is complete. If neither is set, the element is incomplete.
+ "kind": "A String", # The kind of the entity. Kinds matching regex "__.*__" are reserved/read-only. Cannot be "".
+ "id": "A String", # The ID of the entity. Always > 0.
+ "name": "A String", # The name of the entity. Names matching regex "__.*__" are reserved/read-only. Cannot be "".
+ },
+ ],
+ "partitionId": { # Entities are partitioned into subsets, currently identified by a dataset (usually implicitly specified by the project) and namespace ID. Queries are scoped to a single partition.
+ "namespace": "A String", # The namespace.
+ "datasetId": "A String", # The dataset ID.
+ },
+ },
+ "stringValue": "A String", # A UTF-8 encoded string value.
+ "indexed": True or False, # If the value should be indexed.
+ #
+ # The indexed property may be set for a null value. When indexed is true, stringValue is limited to 500 characters and the blob value is limited to 500 bytes. Input values by default have indexed set to true; however, you can explicitly set indexed to true if you want. (An output value never has indexed explicitly set to true.) If a value is itself an entity, it cannot have indexed set to true.
+ "blobValue": "A String", # A blob value.
+ "booleanValue": True or False, # A boolean value.
+ "blobKeyValue": "A String", # A blob key value.
+ },
+ ],
+ },
+ },
+ "key": { # The entity's key.
+ #
+ # An entity must have a key, unless otherwise documented (for example, an entity in Value.entityValue may have no key). An entity's kind is its key's path's last element's kind, or null if it has no key.
+ "path": [ # The entity path. An entity path consists of one or more elements composed of a kind and a string or numerical identifier, which identify entities. The first element identifies a root entity, the second element identifies a child of the root entity, the third element a child of the second entity, and so forth. The entities identified by all prefixes of the path are called the element's ancestors. An entity path is always fully complete: ALL of the entity's ancestors are required to be in the path along with the entity identifier itself. The only exception is that in some documented cases, the identifier in the last path element (for the entity) itself may be omitted. A path can never be empty.
+ { # A (kind, ID/name) pair used to construct a key path.
+ #
+ # At most one of name or ID may be set. If either is set, the element is complete. If neither is set, the element is incomplete.
+ "kind": "A String", # The kind of the entity. Kinds matching regex "__.*__" are reserved/read-only. Cannot be "".
+ "id": "A String", # The ID of the entity. Always > 0.
+ "name": "A String", # The name of the entity. Names matching regex "__.*__" are reserved/read-only. Cannot be "".
+ },
+ ],
+ "partitionId": { # Entities are partitioned into subsets, currently identified by a dataset (usually implicitly specified by the project) and namespace ID. Queries are scoped to a single partition.
+ "namespace": "A String", # The namespace.
+ "datasetId": "A String", # The dataset ID.
+ },
+ },
+ },
+ ],
+ "force": True or False, # Ignore a user specified read-only period. Optional.
+ "insertAutoId": [ # Insert entities with a newly allocated ID. Each inserted entity's key must omit the final identifier in its path and must not be reserved/read-only.
+ {
+ "properties": { # The entity's properties.
+ "a_key": { # The name of the property. Properties with names matching regex "__.*__" are reserved. A reserved property name is forbidden in certain documented contexts. The name cannot be "".
+ "multi": True or False, # If this property contains a list of values. Input values may explicitly set multi to false, but otherwise false is always represented by omitting multi.
+ "values": [ # The value(s) of the property. When multi is false there is always exactly one value. When multi is true there are always one or more values. Each value can have only one value property populated. For example, you cannot have a values list of { values: [ { integerValue: 22, stringValue: "a" } ] }, but you can have { multi: true, values: [ { integerValue: 22 }, { stringValue: "a" } ] }.
+ {
+ "entityValue": # Object with schema name: Entity # An entity value. May have no key. May have a key with an incomplete key path. May have a reserved/read-only key.
+ "doubleValue": 3.14, # A double value.
+ "integerValue": "A String", # An integer value.
+ "meaning": 42, # The meaning field is reserved and should not be used.
+ "dateTimeValue": "A String", # A timestamp value.
+ "keyValue": { # A key value.
+ "path": [ # The entity path. An entity path consists of one or more elements composed of a kind and a string or numerical identifier, which identify entities. The first element identifies a root entity, the second element identifies a child of the root entity, the third element a child of the second entity, and so forth. The entities identified by all prefixes of the path are called the element's ancestors. An entity path is always fully complete: ALL of the entity's ancestors are required to be in the path along with the entity identifier itself. The only exception is that in some documented cases, the identifier in the last path element (for the entity) itself may be omitted. A path can never be empty.
+ { # A (kind, ID/name) pair used to construct a key path.
+ #
+ # At most one of name or ID may be set. If either is set, the element is complete. If neither is set, the element is incomplete.
+ "kind": "A String", # The kind of the entity. Kinds matching regex "__.*__" are reserved/read-only. Cannot be "".
+ "id": "A String", # The ID of the entity. Always > 0.
+ "name": "A String", # The name of the entity. Names matching regex "__.*__" are reserved/read-only. Cannot be "".
+ },
+ ],
+ "partitionId": { # Entities are partitioned into subsets, currently identified by a dataset (usually implicitly specified by the project) and namespace ID. Queries are scoped to a single partition.
+ "namespace": "A String", # The namespace.
+ "datasetId": "A String", # The dataset ID.
+ },
+ },
+ "stringValue": "A String", # A UTF-8 encoded string value.
+ "indexed": True or False, # If the value should be indexed.
+ #
+ # The indexed property may be set for a null value. When indexed is true, stringValue is limited to 500 characters and the blob value is limited to 500 bytes. Input values by default have indexed set to true; however, you can explicitly set indexed to true if you want. (An output value never has indexed explicitly set to true.) If a value is itself an entity, it cannot have indexed set to true.
+ "blobValue": "A String", # A blob value.
+ "booleanValue": True or False, # A boolean value.
+ "blobKeyValue": "A String", # A blob key value.
+ },
+ ],
+ },
+ },
+ "key": { # The entity's key.
+ #
+ # An entity must have a key, unless otherwise documented (for example, an entity in Value.entityValue may have no key). An entity's kind is its key's path's last element's kind, or null if it has no key.
+ "path": [ # The entity path. An entity path consists of one or more elements composed of a kind and a string or numerical identifier, which identify entities. The first element identifies a root entity, the second element identifies a child of the root entity, the third element a child of the second entity, and so forth. The entities identified by all prefixes of the path are called the element's ancestors. An entity path is always fully complete: ALL of the entity's ancestors are required to be in the path along with the entity identifier itself. The only exception is that in some documented cases, the identifier in the last path element (for the entity) itself may be omitted. A path can never be empty.
+ { # A (kind, ID/name) pair used to construct a key path.
+ #
+ # At most one of name or ID may be set. If either is set, the element is complete. If neither is set, the element is incomplete.
+ "kind": "A String", # The kind of the entity. Kinds matching regex "__.*__" are reserved/read-only. Cannot be "".
+ "id": "A String", # The ID of the entity. Always > 0.
+ "name": "A String", # The name of the entity. Names matching regex "__.*__" are reserved/read-only. Cannot be "".
+ },
+ ],
+ "partitionId": { # Entities are partitioned into subsets, currently identified by a dataset (usually implicitly specified by the project) and namespace ID. Queries are scoped to a single partition.
+ "namespace": "A String", # The namespace.
+ "datasetId": "A String", # The dataset ID.
+ },
+ },
+ },
+ ],
+ "update": [ # Entities to update. Each updated entity's key must have a complete path and must not be reserved/read-only.
+ {
+ "properties": { # The entity's properties.
+ "a_key": { # The name of the property. Properties with names matching regex "__.*__" are reserved. A reserved property name is forbidden in certain documented contexts. The name cannot be "".
+ "multi": True or False, # If this property contains a list of values. Input values may explicitly set multi to false, but otherwise false is always represented by omitting multi.
+ "values": [ # The value(s) of the property. When multi is false there is always exactly one value. When multi is true there are always one or more values. Each value can have only one value property populated. For example, you cannot have a values list of { values: [ { integerValue: 22, stringValue: "a" } ] }, but you can have { multi: true, values: [ { integerValue: 22 }, { stringValue: "a" } ] }.
+ {
+ "entityValue": # Object with schema name: Entity # An entity value. May have no key. May have a key with an incomplete key path. May have a reserved/read-only key.
+ "doubleValue": 3.14, # A double value.
+ "integerValue": "A String", # An integer value.
+ "meaning": 42, # The meaning field is reserved and should not be used.
+ "dateTimeValue": "A String", # A timestamp value.
+ "keyValue": { # A key value.
+ "path": [ # The entity path. An entity path consists of one or more elements composed of a kind and a string or numerical identifier, which identify entities. The first element identifies a root entity, the second element identifies a child of the root entity, the third element a child of the second entity, and so forth. The entities identified by all prefixes of the path are called the element's ancestors. An entity path is always fully complete: ALL of the entity's ancestors are required to be in the path along with the entity identifier itself. The only exception is that in some documented cases, the identifier in the last path element (for the entity) itself may be omitted. A path can never be empty.
+ { # A (kind, ID/name) pair used to construct a key path.
+ #
+ # At most one of name or ID may be set. If either is set, the element is complete. If neither is set, the element is incomplete.
+ "kind": "A String", # The kind of the entity. Kinds matching regex "__.*__" are reserved/read-only. Cannot be "".
+ "id": "A String", # The ID of the entity. Always > 0.
+ "name": "A String", # The name of the entity. Names matching regex "__.*__" are reserved/read-only. Cannot be "".
+ },
+ ],
+ "partitionId": { # Entities are partitioned into subsets, currently identified by a dataset (usually implicitly specified by the project) and namespace ID. Queries are scoped to a single partition.
+ "namespace": "A String", # The namespace.
+ "datasetId": "A String", # The dataset ID.
+ },
+ },
+ "stringValue": "A String", # A UTF-8 encoded string value.
+ "indexed": True or False, # If the value should be indexed.
+ #
+ # The indexed property may be set for a null value. When indexed is true, stringValue is limited to 500 characters and the blob value is limited to 500 bytes. Input values by default have indexed set to true; however, you can explicitly set indexed to true if you want. (An output value never has indexed explicitly set to true.) If a value is itself an entity, it cannot have indexed set to true.
+ "blobValue": "A String", # A blob value.
+ "booleanValue": True or False, # A boolean value.
+ "blobKeyValue": "A String", # A blob key value.
+ },
+ ],
+ },
+ },
+ "key": { # The entity's key.
+ #
+ # An entity must have a key, unless otherwise documented (for example, an entity in Value.entityValue may have no key). An entity's kind is its key's path's last element's kind, or null if it has no key.
+ "path": [ # The entity path. An entity path consists of one or more elements composed of a kind and a string or numerical identifier, which identify entities. The first element identifies a root entity, the second element identifies a child of the root entity, the third element a child of the second entity, and so forth. The entities identified by all prefixes of the path are called the element's ancestors. An entity path is always fully complete: ALL of the entity's ancestors are required to be in the path along with the entity identifier itself. The only exception is that in some documented cases, the identifier in the last path element (for the entity) itself may be omitted. A path can never be empty.
+ { # A (kind, ID/name) pair used to construct a key path.
+ #
+ # At most one of name or ID may be set. If either is set, the element is complete. If neither is set, the element is incomplete.
+ "kind": "A String", # The kind of the entity. Kinds matching regex "__.*__" are reserved/read-only. Cannot be "".
+ "id": "A String", # The ID of the entity. Always > 0.
+ "name": "A String", # The name of the entity. Names matching regex "__.*__" are reserved/read-only. Cannot be "".
+ },
+ ],
+ "partitionId": { # Entities are partitioned into subsets, currently identified by a dataset (usually implicitly specified by the project) and namespace ID. Queries are scoped to a single partition.
+ "namespace": "A String", # The namespace.
+ "datasetId": "A String", # The dataset ID.
+ },
+ },
+ },
+ ],
+ "delete": [ # Keys of entities to delete. Each key must have a complete key path and must not be reserved/read-only.
+ {
+ "path": [ # The entity path. An entity path consists of one or more elements composed of a kind and a string or numerical identifier, which identify entities. The first element identifies a root entity, the second element identifies a child of the root entity, the third element a child of the second entity, and so forth. The entities identified by all prefixes of the path are called the element's ancestors. An entity path is always fully complete: ALL of the entity's ancestors are required to be in the path along with the entity identifier itself. The only exception is that in some documented cases, the identifier in the last path element (for the entity) itself may be omitted. A path can never be empty.
+ { # A (kind, ID/name) pair used to construct a key path.
+ #
+ # At most one of name or ID may be set. If either is set, the element is complete. If neither is set, the element is incomplete.
+ "kind": "A String", # The kind of the entity. Kinds matching regex "__.*__" are reserved/read-only. Cannot be "".
+ "id": "A String", # The ID of the entity. Always > 0.
+ "name": "A String", # The name of the entity. Names matching regex "__.*__" are reserved/read-only. Cannot be "".
+ },
+ ],
+ "partitionId": { # Entities are partitioned into subsets, currently identified by a dataset (usually implicitly specified by the project) and namespace ID. Queries are scoped to a single partition.
+ "namespace": "A String", # The namespace.
+ "datasetId": "A String", # The dataset ID.
+ },
+ },
+ ],
+ "upsert": [ # Entities to upsert. Each upserted entity's key must have a complete path and must not be reserved/read-only.
+ {
+ "properties": { # The entity's properties.
+ "a_key": { # The name of the property. Properties with names matching regex "__.*__" are reserved. A reserved property name is forbidden in certain documented contexts. The name cannot be "".
+ "multi": True or False, # If this property contains a list of values. Input values may explicitly set multi to false, but otherwise false is always represented by omitting multi.
+ "values": [ # The value(s) of the property. When multi is false there is always exactly one value. When multi is true there are always one or more values. Each value can have only one value property populated. For example, you cannot have a values list of { values: [ { integerValue: 22, stringValue: "a" } ] }, but you can have { multi: true, values: [ { integerValue: 22 }, { stringValue: "a" } ] }.
+ {
+ "entityValue": # Object with schema name: Entity # An entity value. May have no key. May have a key with an incomplete key path. May have a reserved/read-only key.
+ "doubleValue": 3.14, # A double value.
+ "integerValue": "A String", # An integer value.
+ "meaning": 42, # The meaning field is reserved and should not be used.
+ "dateTimeValue": "A String", # A timestamp value.
+ "keyValue": { # A key value.
+ "path": [ # The entity path. An entity path consists of one or more elements composed of a kind and a string or numerical identifier, which identify entities. The first element identifies a root entity, the second element identifies a child of the root entity, the third element a child of the second entity, and so forth. The entities identified by all prefixes of the path are called the element's ancestors. An entity path is always fully complete: ALL of the entity's ancestors are required to be in the path along with the entity identifier itself. The only exception is that in some documented cases, the identifier in the last path element (for the entity) itself may be omitted. A path can never be empty.
+ { # A (kind, ID/name) pair used to construct a key path.
+ #
+ # At most one of name or ID may be set. If either is set, the element is complete. If neither is set, the element is incomplete.
+ "kind": "A String", # The kind of the entity. Kinds matching regex "__.*__" are reserved/read-only. Cannot be "".
+ "id": "A String", # The ID of the entity. Always > 0.
+ "name": "A String", # The name of the entity. Names matching regex "__.*__" are reserved/read-only. Cannot be "".
+ },
+ ],
+ "partitionId": { # Entities are partitioned into subsets, currently identified by a dataset (usually implicitly specified by the project) and namespace ID. Queries are scoped to a single partition.
+ "namespace": "A String", # The namespace.
+ "datasetId": "A String", # The dataset ID.
+ },
+ },
+ "stringValue": "A String", # A UTF-8 encoded string value.
+ "indexed": True or False, # If the value should be indexed.
+ #
+ # The indexed property may be set for a null value. When indexed is true, stringValue is limited to 500 characters and the blob value is limited to 500 bytes. Input values by default have indexed set to true; however, you can explicitly set indexed to true if you want. (An output value never has indexed explicitly set to true.) If a value is itself an entity, it cannot have indexed set to true.
+ "blobValue": "A String", # A blob value.
+ "booleanValue": True or False, # A boolean value.
+ "blobKeyValue": "A String", # A blob key value.
+ },
+ ],
+ },
+ },
+ "key": { # The entity's key.
+ #
+ # An entity must have a key, unless otherwise documented (for example, an entity in Value.entityValue may have no key). An entity's kind is its key's path's last element's kind, or null if it has no key.
+ "path": [ # The entity path. An entity path consists of one or more elements composed of a kind and a string or numerical identifier, which identify entities. The first element identifies a root entity, the second element identifies a child of the root entity, the third element a child of the second entity, and so forth. The entities identified by all prefixes of the path are called the element's ancestors. An entity path is always fully complete: ALL of the entity's ancestors are required to be in the path along with the entity identifier itself. The only exception is that in some documented cases, the identifier in the last path element (for the entity) itself may be omitted. A path can never be empty.
+ { # A (kind, ID/name) pair used to construct a key path.
+ #
+ # At most one of name or ID may be set. If either is set, the element is complete. If neither is set, the element is incomplete.
+ "kind": "A String", # The kind of the entity. Kinds matching regex "__.*__" are reserved/read-only. Cannot be "".
+ "id": "A String", # The ID of the entity. Always > 0.
+ "name": "A String", # The name of the entity. Names matching regex "__.*__" are reserved/read-only. Cannot be "".
+ },
+ ],
+ "partitionId": { # Entities are partitioned into subsets, currently identified by a dataset (usually implicitly specified by the project) and namespace ID. Queries are scoped to a single partition.
+ "namespace": "A String", # The namespace.
+ "datasetId": "A String", # The dataset ID.
+ },
+ },
+ },
+ ],
+ },
+ }
+
+
+Returns:
+ An object of the form:
+
+ {
+ "header": {
+ "kind": "datastore#responseHeader", # The kind, fixed to "datastore#responseHeader".
+ },
+ "mutationResult": { # The result of performing the mutation (if any).
+ "insertAutoIdKeys": [ # Keys for insertAutoId entities. One per entity from the request, in the same order.
+ {
+ "path": [ # The entity path. An entity path consists of one or more elements composed of a kind and a string or numerical identifier, which identify entities. The first element identifies a root entity, the second element identifies a child of the root entity, the third element a child of the second entity, and so forth. The entities identified by all prefixes of the path are called the element's ancestors. An entity path is always fully complete: ALL of the entity's ancestors are required to be in the path along with the entity identifier itself. The only exception is that in some documented cases, the identifier in the last path element (for the entity) itself may be omitted. A path can never be empty.
+ { # A (kind, ID/name) pair used to construct a key path.
+ #
+ # At most one of name or ID may be set. If either is set, the element is complete. If neither is set, the element is incomplete.
+ "kind": "A String", # The kind of the entity. Kinds matching regex "__.*__" are reserved/read-only. Cannot be "".
+ "id": "A String", # The ID of the entity. Always > 0.
+ "name": "A String", # The name of the entity. Names matching regex "__.*__" are reserved/read-only. Cannot be "".
+ },
+ ],
+ "partitionId": { # Entities are partitioned into subsets, currently identified by a dataset (usually implicitly specified by the project) and namespace ID. Queries are scoped to a single partition.
+ "namespace": "A String", # The namespace.
+ "datasetId": "A String", # The dataset ID.
+ },
+ },
+ ],
+ "indexUpdates": 42, # Number of index writes.
+ },
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="lookup">lookup(datasetId, body)</code>
+ <pre>Look up some entities by key.
+
+Args:
+ datasetId: string, Identifies the dataset. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{
+ "keys": [ # Keys of entities to look up from the datastore.
+ {
+ "path": [ # The entity path. An entity path consists of one or more elements composed of a kind and a string or numerical identifier, which identify entities. The first element identifies a root entity, the second element identifies a child of the root entity, the third element a child of the second entity, and so forth. The entities identified by all prefixes of the path are called the element's ancestors. An entity path is always fully complete: ALL of the entity's ancestors are required to be in the path along with the entity identifier itself. The only exception is that in some documented cases, the identifier in the last path element (for the entity) itself may be omitted. A path can never be empty.
+ { # A (kind, ID/name) pair used to construct a key path.
+ #
+ # At most one of name or ID may be set. If either is set, the element is complete. If neither is set, the element is incomplete.
+ "kind": "A String", # The kind of the entity. Kinds matching regex "__.*__" are reserved/read-only. Cannot be "".
+ "id": "A String", # The ID of the entity. Always > 0.
+ "name": "A String", # The name of the entity. Names matching regex "__.*__" are reserved/read-only. Cannot be "".
+ },
+ ],
+ "partitionId": { # Entities are partitioned into subsets, currently identified by a dataset (usually implicitly specified by the project) and namespace ID. Queries are scoped to a single partition.
+ "namespace": "A String", # The namespace.
+ "datasetId": "A String", # The dataset ID.
+ },
+ },
+ ],
+ "readOptions": { # Options for this lookup request. Optional.
+ "transaction": "A String", # The transaction to use. Optional.
+ "readConsistency": "A String", # The read consistency to use. One of default, strong, or eventual. Cannot be set when transaction is set. Lookup and ancestor queries default to strong, global queries default to eventual and cannot be set to strong. Optional. Default is default.
+ },
+ }
+
+
+Returns:
+ An object of the form:
+
+ {
+ "deferred": [ # A list of keys that were not looked up due to resource constraints.
+ {
+ "path": [ # The entity path. An entity path consists of one or more elements composed of a kind and a string or numerical identifier, which identify entities. The first element identifies a root entity, the second element identifies a child of the root entity, the third element a child of the second entity, and so forth. The entities identified by all prefixes of the path are called the element's ancestors. An entity path is always fully complete: ALL of the entity's ancestors are required to be in the path along with the entity identifier itself. The only exception is that in some documented cases, the identifier in the last path element (for the entity) itself may be omitted. A path can never be empty.
+ { # A (kind, ID/name) pair used to construct a key path.
+ #
+ # At most one of name or ID may be set. If either is set, the element is complete. If neither is set, the element is incomplete.
+ "kind": "A String", # The kind of the entity. Kinds matching regex "__.*__" are reserved/read-only. Cannot be "".
+ "id": "A String", # The ID of the entity. Always > 0.
+ "name": "A String", # The name of the entity. Names matching regex "__.*__" are reserved/read-only. Cannot be "".
+ },
+ ],
+ "partitionId": { # Entities are partitioned into subsets, currently identified by a dataset (usually implicitly specified by the project) and namespace ID. Queries are scoped to a single partition.
+ "namespace": "A String", # The namespace.
+ "datasetId": "A String", # The dataset ID.
+ },
+ },
+ ],
+ "missing": [ # Entities not found, with only the key populated.
+ {
+ "entity": { # The resulting entity.
+ "properties": { # The entity's properties.
+ "a_key": { # The name of the property. Properties with names matching regex "__.*__" are reserved. A reserved property name is forbidden in certain documented contexts. The name cannot be "".
+ "multi": True or False, # If this property contains a list of values. Input values may explicitly set multi to false, but otherwise false is always represented by omitting multi.
+ "values": [ # The value(s) of the property. When multi is false there is always exactly one value. When multi is true there are always one or more values. Each value can have only one value property populated. For example, you cannot have a values list of { values: [ { integerValue: 22, stringValue: "a" } ] }, but you can have { multi: true, values: [ { integerValue: 22 }, { stringValue: "a" } ] }.
+ {
+ "entityValue": # Object with schema name: Entity # An entity value. May have no key. May have a key with an incomplete key path. May have a reserved/read-only key.
+ "doubleValue": 3.14, # A double value.
+ "integerValue": "A String", # An integer value.
+ "meaning": 42, # The meaning field is reserved and should not be used.
+ "dateTimeValue": "A String", # A timestamp value.
+ "keyValue": { # A key value.
+ "path": [ # The entity path. An entity path consists of one or more elements composed of a kind and a string or numerical identifier, which identify entities. The first element identifies a root entity, the second element identifies a child of the root entity, the third element a child of the second entity, and so forth. The entities identified by all prefixes of the path are called the element's ancestors. An entity path is always fully complete: ALL of the entity's ancestors are required to be in the path along with the entity identifier itself. The only exception is that in some documented cases, the identifier in the last path element (for the entity) itself may be omitted. A path can never be empty.
+ { # A (kind, ID/name) pair used to construct a key path.
+ #
+ # At most one of name or ID may be set. If either is set, the element is complete. If neither is set, the element is incomplete.
+ "kind": "A String", # The kind of the entity. Kinds matching regex "__.*__" are reserved/read-only. Cannot be "".
+ "id": "A String", # The ID of the entity. Always > 0.
+ "name": "A String", # The name of the entity. Names matching regex "__.*__" are reserved/read-only. Cannot be "".
+ },
+ ],
+ "partitionId": { # Entities are partitioned into subsets, currently identified by a dataset (usually implicitly specified by the project) and namespace ID. Queries are scoped to a single partition.
+ "namespace": "A String", # The namespace.
+ "datasetId": "A String", # The dataset ID.
+ },
+ },
+ "stringValue": "A String", # A UTF-8 encoded string value.
+ "indexed": True or False, # If the value should be indexed.
+ #
+ # The indexed property may be set for a null value. When indexed is true, stringValue is limited to 500 characters and the blob value is limited to 500 bytes. Input values by default have indexed set to true; however, you can explicitly set indexed to true if you want. (An output value never has indexed explicitly set to true.) If a value is itself an entity, it cannot have indexed set to true.
+ "blobValue": "A String", # A blob value.
+ "booleanValue": True or False, # A boolean value.
+ "blobKeyValue": "A String", # A blob key value.
+ },
+ ],
+ },
+ },
+ "key": { # The entity's key.
+ #
+ # An entity must have a key, unless otherwise documented (for example, an entity in Value.entityValue may have no key). An entity's kind is its key's path's last element's kind, or null if it has no key.
+ "path": [ # The entity path. An entity path consists of one or more elements composed of a kind and a string or numerical identifier, which identify entities. The first element identifies a root entity, the second element identifies a child of the root entity, the third element a child of the second entity, and so forth. The entities identified by all prefixes of the path are called the element's ancestors. An entity path is always fully complete: ALL of the entity's ancestors are required to be in the path along with the entity identifier itself. The only exception is that in some documented cases, the identifier in the last path element (for the entity) itself may be omitted. A path can never be empty.
+ { # A (kind, ID/name) pair used to construct a key path.
+ #
+ # At most one of name or ID may be set. If either is set, the element is complete. If neither is set, the element is incomplete.
+ "kind": "A String", # The kind of the entity. Kinds matching regex "__.*__" are reserved/read-only. Cannot be "".
+ "id": "A String", # The ID of the entity. Always > 0.
+ "name": "A String", # The name of the entity. Names matching regex "__.*__" are reserved/read-only. Cannot be "".
+ },
+ ],
+ "partitionId": { # Entities are partitioned into subsets, currently identified by a dataset (usually implicitly specified by the project) and namespace ID. Queries are scoped to a single partition.
+ "namespace": "A String", # The namespace.
+ "datasetId": "A String", # The dataset ID.
+ },
+ },
+ },
+ },
+ ],
+ "header": {
+ "kind": "datastore#responseHeader", # The kind, fixed to "datastore#responseHeader".
+ },
+ "found": [ # Entities found.
+ {
+ "entity": { # The resulting entity.
+ "properties": { # The entity's properties.
+ "a_key": { # The name of the property. Properties with names matching regex "__.*__" are reserved. A reserved property name is forbidden in certain documented contexts. The name cannot be "".
+ "multi": True or False, # If this property contains a list of values. Input values may explicitly set multi to false, but otherwise false is always represented by omitting multi.
+ "values": [ # The value(s) of the property. When multi is false there is always exactly one value. When multi is true there are always one or more values. Each value can have only one value property populated. For example, you cannot have a values list of { values: [ { integerValue: 22, stringValue: "a" } ] }, but you can have { multi: true, values: [ { integerValue: 22 }, { stringValue: "a" } ] }.
+ {
+ "entityValue": # Object with schema name: Entity # An entity value. May have no key. May have a key with an incomplete key path. May have a reserved/read-only key.
+ "doubleValue": 3.14, # A double value.
+ "integerValue": "A String", # An integer value.
+ "meaning": 42, # The meaning field is reserved and should not be used.
+ "dateTimeValue": "A String", # A timestamp value.
+ "keyValue": { # A key value.
+ "path": [ # The entity path. An entity path consists of one or more elements composed of a kind and a string or numerical identifier, which identify entities. The first element identifies a root entity, the second element identifies a child of the root entity, the third element a child of the second entity, and so forth. The entities identified by all prefixes of the path are called the element's ancestors. An entity path is always fully complete: ALL of the entity's ancestors are required to be in the path along with the entity identifier itself. The only exception is that in some documented cases, the identifier in the last path element (for the entity) itself may be omitted. A path can never be empty.
+ { # A (kind, ID/name) pair used to construct a key path.
+ #
+ # At most one of name or ID may be set. If either is set, the element is complete. If neither is set, the element is incomplete.
+ "kind": "A String", # The kind of the entity. Kinds matching regex "__.*__" are reserved/read-only. Cannot be "".
+ "id": "A String", # The ID of the entity. Always > 0.
+ "name": "A String", # The name of the entity. Names matching regex "__.*__" are reserved/read-only. Cannot be "".
+ },
+ ],
+ "partitionId": { # Entities are partitioned into subsets, currently identified by a dataset (usually implicitly specified by the project) and namespace ID. Queries are scoped to a single partition.
+ "namespace": "A String", # The namespace.
+ "datasetId": "A String", # The dataset ID.
+ },
+ },
+ "stringValue": "A String", # A UTF-8 encoded string value.
+ "indexed": True or False, # If the value should be indexed.
+ #
+ # The indexed property may be set for a null value. When indexed is true, stringValue is limited to 500 characters and the blob value is limited to 500 bytes. Input values by default have indexed set to true; however, you can explicitly set indexed to true if you want. (An output value never has indexed explicitly set to true.) If a value is itself an entity, it cannot have indexed set to true.
+ "blobValue": "A String", # A blob value.
+ "booleanValue": True or False, # A boolean value.
+ "blobKeyValue": "A String", # A blob key value.
+ },
+ ],
+ },
+ },
+ "key": { # The entity's key.
+ #
+ # An entity must have a key, unless otherwise documented (for example, an entity in Value.entityValue may have no key). An entity's kind is its key's path's last element's kind, or null if it has no key.
+ "path": [ # The entity path. An entity path consists of one or more elements composed of a kind and a string or numerical identifier, which identify entities. The first element identifies a root entity, the second element identifies a child of the root entity, the third element a child of the second entity, and so forth. The entities identified by all prefixes of the path are called the element's ancestors. An entity path is always fully complete: ALL of the entity's ancestors are required to be in the path along with the entity identifier itself. The only exception is that in some documented cases, the identifier in the last path element (for the entity) itself may be omitted. A path can never be empty.
+ { # A (kind, ID/name) pair used to construct a key path.
+ #
+ # At most one of name or ID may be set. If either is set, the element is complete. If neither is set, the element is incomplete.
+ "kind": "A String", # The kind of the entity. Kinds matching regex "__.*__" are reserved/read-only. Cannot be "".
+ "id": "A String", # The ID of the entity. Always > 0.
+ "name": "A String", # The name of the entity. Names matching regex "__.*__" are reserved/read-only. Cannot be "".
+ },
+ ],
+ "partitionId": { # Entities are partitioned into subsets, currently identified by a dataset (usually implicitly specified by the project) and namespace ID. Queries are scoped to a single partition.
+ "namespace": "A String", # The namespace.
+ "datasetId": "A String", # The dataset ID.
+ },
+ },
+ },
+ },
+ ],
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="rollback">rollback(datasetId, body)</code>
+ <pre>Roll back a transaction.
+
+Args:
+ datasetId: string, Identifies the dataset. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{
+ "transaction": "A String", # The transaction identifier, returned by a call to beginTransaction.
+ }
+
+
+Returns:
+ An object of the form:
+
+ {
+ "header": {
+ "kind": "datastore#responseHeader", # The kind, fixed to "datastore#responseHeader".
+ },
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="runQuery">runQuery(datasetId, body)</code>
+ <pre>Query for entities.
+
+Args:
+ datasetId: string, Identifies the dataset. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{
+ "query": { # The query to run. Either this field or field gql_query must be set, but not both.
+ "startCursor": "A String", # A starting point for the query results. Optional. Query cursors are returned in query result batches.
+ "kinds": [ # The kinds to query (if empty, returns entities from all kinds).
+ {
+ "name": "A String", # The name of the kind.
+ },
+ ],
+ "projection": [ # The projection to return. If not set the entire entity is returned.
+ {
+ "aggregationFunction": "A String", # The aggregation function to apply to the property. Optional. Can only be used when grouping by at least one property. Must then be set on all properties in the projection that are not being grouped by. Aggregation functions: first selects the first result as determined by the query's order.
+ "property": { # The property to project.
+ "name": "A String", # The name of the property.
+ },
+ },
+ ],
+ "order": [ # The order to apply to the query results (if empty, order is unspecified).
+ {
+ "direction": "A String", # The direction to order by. One of ascending or descending. Optional, defaults to ascending.
+ "property": { # The property to order by.
+ "name": "A String", # The name of the property.
+ },
+ },
+ ],
+ "filter": { # The filter to apply (optional).
+ "compositeFilter": { # A composite filter.
+ "operator": "A String", # The operator for combining multiple filters. Only "and" is currently supported.
+ "filters": [ # The list of filters to combine. Must contain at least one filter.
+ # Object with schema name: Filter
+ ],
+ },
+ "propertyFilter": { # A filter on a property.
+ "operator": "A String", # The operator to filter by. One of lessThan, lessThanOrEqual, greaterThan, greaterThanOrEqual, equal, or hasAncestor.
+ "property": { # The property to filter by.
+ "name": "A String", # The name of the property.
+ },
+ "value": { # The value to compare the property to.
+ "entityValue": # Object with schema name: Entity # An entity value. May have no key. May have a key with an incomplete key path. May have a reserved/read-only key.
+ "doubleValue": 3.14, # A double value.
+ "integerValue": "A String", # An integer value.
+ "meaning": 42, # The meaning field is reserved and should not be used.
+ "dateTimeValue": "A String", # A timestamp value.
+ "keyValue": { # A key value.
+ "path": [ # The entity path. An entity path consists of one or more elements composed of a kind and a string or numerical identifier, which identify entities. The first element identifies a root entity, the second element identifies a child of the root entity, the third element a child of the second entity, and so forth. The entities identified by all prefixes of the path are called the element's ancestors. An entity path is always fully complete: ALL of the entity's ancestors are required to be in the path along with the entity identifier itself. The only exception is that in some documented cases, the identifier in the last path element (for the entity) itself may be omitted. A path can never be empty.
+ { # A (kind, ID/name) pair used to construct a key path.
+ #
+ # At most one of name or ID may be set. If either is set, the element is complete. If neither is set, the element is incomplete.
+ "kind": "A String", # The kind of the entity. Kinds matching regex "__.*__" are reserved/read-only. Cannot be "".
+ "id": "A String", # The ID of the entity. Always > 0.
+ "name": "A String", # The name of the entity. Names matching regex "__.*__" are reserved/read-only. Cannot be "".
+ },
+ ],
+ "partitionId": { # Entities are partitioned into subsets, currently identified by a dataset (usually implicitly specified by the project) and namespace ID. Queries are scoped to a single partition.
+ "namespace": "A String", # The namespace.
+ "datasetId": "A String", # The dataset ID.
+ },
+ },
+ "stringValue": "A String", # A UTF-8 encoded string value.
+ "indexed": True or False, # If the value should be indexed.
+ #
+ # The indexed property may be set for a null value. When indexed is true, stringValue is limited to 500 characters and the blob value is limited to 500 bytes. Input values by default have indexed set to true; however, you can explicitly set indexed to true if you want. (An output value never has indexed explicitly set to true.) If a value is itself an entity, it cannot have indexed set to true.
+ "blobValue": "A String", # A blob value.
+ "booleanValue": True or False, # A boolean value.
+ "blobKeyValue": "A String", # A blob key value.
+ },
+ },
+ },
+ "limit": 42, # The maximum number of results to return. Applies after all other constraints. Optional.
+ "offset": 42, # The number of results to skip. Applies before limit, but after all other constraints (optional, defaults to 0).
+ "endCursor": "A String", # An ending point for the query results. Optional. Query cursors are returned in query result batches.
+ "groupBy": [ # The properties to group by (if empty, no grouping is applied to the result set).
+ {
+ "name": "A String", # The name of the property.
+ },
+ ],
+ },
+ "partitionId": { # Entities are partitioned into subsets, identified by a dataset (usually implicitly specified by the project) and namespace ID. Queries are scoped to a single partition.
+ "namespace": "A String", # The namespace.
+ "datasetId": "A String", # The dataset ID.
+ },
+ "gqlQuery": { # The GQL query to run. Either this field or field query must be set, but not both.
+ "queryString": "A String",
+ "nameArgs": [ # A named argument must set field GqlQueryArg.name. No two named arguments may have the same name. For each non-reserved named binding site in the query string, there must be a named argument with that name, but not necessarily the inverse.
+ {
+ "cursor": "A String",
+ "name": "A String", # Must match regex "[A-Za-z_$][A-Za-z_$0-9]*". Must not match regex "__.*__". Must not be "".
+ "value": {
+ "entityValue": # Object with schema name: Entity # An entity value. May have no key. May have a key with an incomplete key path. May have a reserved/read-only key.
+ "doubleValue": 3.14, # A double value.
+ "integerValue": "A String", # An integer value.
+ "meaning": 42, # The meaning field is reserved and should not be used.
+ "dateTimeValue": "A String", # A timestamp value.
+ "keyValue": { # A key value.
+ "path": [ # The entity path. An entity path consists of one or more elements composed of a kind and a string or numerical identifier, which identify entities. The first element identifies a root entity, the second element identifies a child of the root entity, the third element a child of the second entity, and so forth. The entities identified by all prefixes of the path are called the element's ancestors. An entity path is always fully complete: ALL of the entity's ancestors are required to be in the path along with the entity identifier itself. The only exception is that in some documented cases, the identifier in the last path element (for the entity) itself may be omitted. A path can never be empty.
+ { # A (kind, ID/name) pair used to construct a key path.
+ #
+ # At most one of name or ID may be set. If either is set, the element is complete. If neither is set, the element is incomplete.
+ "kind": "A String", # The kind of the entity. Kinds matching regex "__.*__" are reserved/read-only. Cannot be "".
+ "id": "A String", # The ID of the entity. Always > 0.
+ "name": "A String", # The name of the entity. Names matching regex "__.*__" are reserved/read-only. Cannot be "".
+ },
+ ],
+ "partitionId": { # Entities are partitioned into subsets, currently identified by a dataset (usually implicitly specified by the project) and namespace ID. Queries are scoped to a single partition.
+ "namespace": "A String", # The namespace.
+ "datasetId": "A String", # The dataset ID.
+ },
+ },
+ "stringValue": "A String", # A UTF-8 encoded string value.
+ "indexed": True or False, # If the value should be indexed.
+ #
+ # The indexed property may be set for a null value. When indexed is true, stringValue is limited to 500 characters and the blob value is limited to 500 bytes. Input values by default have indexed set to true; however, you can explicitly set indexed to true if you want. (An output value never has indexed explicitly set to true.) If a value is itself an entity, it cannot have indexed set to true.
+ "blobValue": "A String", # A blob value.
+ "booleanValue": True or False, # A boolean value.
+ "blobKeyValue": "A String", # A blob key value.
+ },
+ },
+ ],
+ "allowLiteral": True or False, # When false, the query string must not contain a literal.
+ "numberArgs": [ # Numbered binding site @1 references the first numbered argument, effectively using 1-based indexing, rather than the usual 0. A numbered argument must NOT set field GqlQueryArg.name. For each binding site numbered i in query_string, there must be an ith numbered argument. The inverse must also be true.
+ {
+ "cursor": "A String",
+ "name": "A String", # Must match regex "[A-Za-z_$][A-Za-z_$0-9]*". Must not match regex "__.*__". Must not be "".
+ "value": {
+ "entityValue": # Object with schema name: Entity # An entity value. May have no key. May have a key with an incomplete key path. May have a reserved/read-only key.
+ "doubleValue": 3.14, # A double value.
+ "integerValue": "A String", # An integer value.
+ "meaning": 42, # The meaning field is reserved and should not be used.
+ "dateTimeValue": "A String", # A timestamp value.
+ "keyValue": { # A key value.
+ "path": [ # The entity path. An entity path consists of one or more elements composed of a kind and a string or numerical identifier, which identify entities. The first element identifies a root entity, the second element identifies a child of the root entity, the third element a child of the second entity, and so forth. The entities identified by all prefixes of the path are called the element's ancestors. An entity path is always fully complete: ALL of the entity's ancestors are required to be in the path along with the entity identifier itself. The only exception is that in some documented cases, the identifier in the last path element (for the entity) itself may be omitted. A path can never be empty.
+ { # A (kind, ID/name) pair used to construct a key path.
+ #
+ # At most one of name or ID may be set. If either is set, the element is complete. If neither is set, the element is incomplete.
+ "kind": "A String", # The kind of the entity. Kinds matching regex "__.*__" are reserved/read-only. Cannot be "".
+ "id": "A String", # The ID of the entity. Always > 0.
+ "name": "A String", # The name of the entity. Names matching regex "__.*__" are reserved/read-only. Cannot be "".
+ },
+ ],
+ "partitionId": { # Entities are partitioned into subsets, currently identified by a dataset (usually implicitly specified by the project) and namespace ID. Queries are scoped to a single partition.
+ "namespace": "A String", # The namespace.
+ "datasetId": "A String", # The dataset ID.
+ },
+ },
+ "stringValue": "A String", # A UTF-8 encoded string value.
+ "indexed": True or False, # If the value should be indexed.
+ #
+ # The indexed property may be set for a null value. When indexed is true, stringValue is limited to 500 characters and the blob value is limited to 500 bytes. Input values by default have indexed set to true; however, you can explicitly set indexed to true if you want. (An output value never has indexed explicitly set to true.) If a value is itself an entity, it cannot have indexed set to true.
+ "blobValue": "A String", # A blob value.
+ "booleanValue": True or False, # A boolean value.
+ "blobKeyValue": "A String", # A blob key value.
+ },
+ },
+ ],
+ },
+ "readOptions": { # The options for this query.
+ "transaction": "A String", # The transaction to use. Optional.
+ "readConsistency": "A String", # The read consistency to use. One of default, strong, or eventual. Cannot be set when transaction is set. Lookup and ancestor queries default to strong, global queries default to eventual and cannot be set to strong. Optional. Default is default.
+ },
+ }
+
+
+Returns:
+ An object of the form:
+
+ {
+ "header": {
+ "kind": "datastore#responseHeader", # The kind, fixed to "datastore#responseHeader".
+ },
+ "batch": { # A batch of query results (always present).
+ "moreResults": "A String", # The state of the query after the current batch. One of notFinished, moreResultsAfterLimit, noMoreResults.
+ "entityResults": [ # The results for this batch.
+ {
+ "entity": { # The resulting entity.
+ "properties": { # The entity's properties.
+ "a_key": { # The name of the property. Properties with names matching regex "__.*__" are reserved. A reserved property name is forbidden in certain documented contexts. The name cannot be "".
+ "multi": True or False, # If this property contains a list of values. Input values may explicitly set multi to false, but otherwise false is always represented by omitting multi.
+ "values": [ # The value(s) of the property. When multi is false there is always exactly one value. When multi is true there are always one or more values. Each value can have only one value property populated. For example, you cannot have a values list of { values: [ { integerValue: 22, stringValue: "a" } ] }, but you can have { multi: true, values: [ { integerValue: 22 }, { stringValue: "a" } ] }.
+ {
+ "entityValue": # Object with schema name: Entity # An entity value. May have no key. May have a key with an incomplete key path. May have a reserved/read-only key.
+ "doubleValue": 3.14, # A double value.
+ "integerValue": "A String", # An integer value.
+ "meaning": 42, # The meaning field is reserved and should not be used.
+ "dateTimeValue": "A String", # A timestamp value.
+ "keyValue": { # A key value.
+ "path": [ # The entity path. An entity path consists of one or more elements composed of a kind and a string or numerical identifier, which identify entities. The first element identifies a root entity, the second element identifies a child of the root entity, the third element a child of the second entity, and so forth. The entities identified by all prefixes of the path are called the element's ancestors. An entity path is always fully complete: ALL of the entity's ancestors are required to be in the path along with the entity identifier itself. The only exception is that in some documented cases, the identifier in the last path element (for the entity) itself may be omitted. A path can never be empty.
+ { # A (kind, ID/name) pair used to construct a key path.
+ #
+ # At most one of name or ID may be set. If either is set, the element is complete. If neither is set, the element is incomplete.
+ "kind": "A String", # The kind of the entity. Kinds matching regex "__.*__" are reserved/read-only. Cannot be "".
+ "id": "A String", # The ID of the entity. Always > 0.
+ "name": "A String", # The name of the entity. Names matching regex "__.*__" are reserved/read-only. Cannot be "".
+ },
+ ],
+ "partitionId": { # Entities are partitioned into subsets, currently identified by a dataset (usually implicitly specified by the project) and namespace ID. Queries are scoped to a single partition.
+ "namespace": "A String", # The namespace.
+ "datasetId": "A String", # The dataset ID.
+ },
+ },
+ "stringValue": "A String", # A UTF-8 encoded string value.
+ "indexed": True or False, # If the value should be indexed.
+ #
+ # The indexed property may be set for a null value. When indexed is true, stringValue is limited to 500 characters and the blob value is limited to 500 bytes. Input values by default have indexed set to true; however, you can explicitly set indexed to true if you want. (An output value never has indexed explicitly set to true.) If a value is itself an entity, it cannot have indexed set to true.
+ "blobValue": "A String", # A blob value.
+ "booleanValue": True or False, # A boolean value.
+ "blobKeyValue": "A String", # A blob key value.
+ },
+ ],
+ },
+ },
+ "key": { # The entity's key.
+ #
+ # An entity must have a key, unless otherwise documented (for example, an entity in Value.entityValue may have no key). An entity's kind is its key's path's last element's kind, or null if it has no key.
+ "path": [ # The entity path. An entity path consists of one or more elements composed of a kind and a string or numerical identifier, which identify entities. The first element identifies a root entity, the second element identifies a child of the root entity, the third element a child of the second entity, and so forth. The entities identified by all prefixes of the path are called the element's ancestors. An entity path is always fully complete: ALL of the entity's ancestors are required to be in the path along with the entity identifier itself. The only exception is that in some documented cases, the identifier in the last path element (for the entity) itself may be omitted. A path can never be empty.
+ { # A (kind, ID/name) pair used to construct a key path.
+ #
+ # At most one of name or ID may be set. If either is set, the element is complete. If neither is set, the element is incomplete.
+ "kind": "A String", # The kind of the entity. Kinds matching regex "__.*__" are reserved/read-only. Cannot be "".
+ "id": "A String", # The ID of the entity. Always > 0.
+ "name": "A String", # The name of the entity. Names matching regex "__.*__" are reserved/read-only. Cannot be "".
+ },
+ ],
+ "partitionId": { # Entities are partitioned into subsets, currently identified by a dataset (usually implicitly specified by the project) and namespace ID. Queries are scoped to a single partition.
+ "namespace": "A String", # The namespace.
+ "datasetId": "A String", # The dataset ID.
+ },
+ },
+ },
+ },
+ ],
+ "skippedResults": 42, # The number of results skipped because of Query.offset.
+ "endCursor": "A String", # A cursor that points to the position after the last result in the batch. May be absent.
+ "entityResultType": "A String", # The result type for every entity in entityResults. full for full entities, projection for entities with only projected properties, keyOnly for entities with only a key.
+ },
+ }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/datastore_v1beta1.html b/docs/dyn/datastore_v1beta1.html
new file mode 100644
index 0000000..8156786
--- /dev/null
+++ b/docs/dyn/datastore_v1beta1.html
@@ -0,0 +1,82 @@
+<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="datastore_v1beta1.html">Google Cloud Datastore API</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="datastore_v1beta1.datasets.html">datasets()</a></code>
+</p>
+<p class="firstline">Returns the datasets Resource.</p>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v1_3.dimensionValues.html b/docs/dyn/dfareporting_v1_3.dimensionValues.html
new file mode 100644
index 0000000..f9ed90f
--- /dev/null
+++ b/docs/dyn/dfareporting_v1_3.dimensionValues.html
@@ -0,0 +1,148 @@
+<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="dfareporting_v1_3.html">DFA Reporting API</a> . <a href="dfareporting_v1_3.dimensionValues.html">dimensionValues</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#query">query(profileId, body, pageToken=None, maxResults=None)</a></code></p>
+<p class="firstline">Retrieves list of report dimension values for a list of filters.</p>
+<p class="toc_element">
+ <code><a href="#query_next">query_next(previous_request, previous_response)</a></code></p>
+<p class="firstline">Retrieves the next page of results.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="query">query(profileId, body, pageToken=None, maxResults=None)</code>
+ <pre>Retrieves list of report dimension values for a list of filters.
+
+Args:
+ profileId: string, The DFA user profile ID. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # Represents a DimensionValuesRequest.
+ "dimensionName": "A String", # The name of the dimension for which values should be requested.
+ "startDate": "A String", # The start date of the date range for which to retrieve dimension values. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dimensionValueRequest", # The kind of request this is, in this case dfareporting#dimensionValueRequest.
+ "endDate": "A String", # The end date of the date range for which to retrieve dimension values. A string of the format: "yyyy-MM-dd".
+ "filters": [ # The list of filters by which to filter values. The filters are ANDed.
+ { # Represents a dimension filter.
+ "dimensionName": "A String", # The name of the dimension to filter.
+ "kind": "dfareporting#dimensionFilter", # The kind of resource this is, in this case dfareporting#dimensionFilter.
+ "value": "A String", # The value of the dimension to filter.
+ },
+ ],
+ }
+
+ pageToken: string, The value of the nextToken from the previous result page.
+ maxResults: integer, Maximum number of results to return.
+
+Returns:
+ An object of the form:
+
+ { # Represents the list of DimensionValue resources.
+ "nextPageToken": "A String", # Continuation token used to page through dimension values. To retrieve the next page of results, set the next request's "pageToken" to the value of this field. The page token is only valid for a limited amount of time and should not be persisted.
+ "items": [ # The dimension values returned in this response.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "kind": "dfareporting#dimensionValueList", # The kind of list this is, in this case dfareporting#dimensionValueList.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="query_next">query_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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v1_3.files.html b/docs/dyn/dfareporting_v1_3.files.html
new file mode 100644
index 0000000..2b67078
--- /dev/null
+++ b/docs/dyn/dfareporting_v1_3.files.html
@@ -0,0 +1,243 @@
+<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="dfareporting_v1_3.html">DFA Reporting API</a> . <a href="dfareporting_v1_3.files.html">files</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#get">get(reportId, fileId)</a></code></p>
+<p class="firstline">Retrieves a report file by its report ID and file ID.</p>
+<p class="toc_element">
+ <code><a href="#get_media">get_media(reportId, fileId)</a></code></p>
+<p class="firstline">Retrieves a report file by its report ID and file ID.</p>
+<p class="toc_element">
+ <code><a href="#list">list(profileId, pageToken=None, maxResults=None, sortOrder=None, sortField=None, scope=None)</a></code></p>
+<p class="firstline">Lists files for a user profile.</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>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="get">get(reportId, fileId)</code>
+ <pre>Retrieves a report file by its report ID and file ID.
+
+Args:
+ reportId: string, The ID of the report. (required)
+ fileId: string, The ID of the report file. (required)
+
+Returns:
+ An object of the form:
+
+ { # Represents a File resource. A File contains the meta-data for a report run. It shows the status of the run and holds the urls to the generated report data if the run is finished and the status is "REPORT_AVAILABLE".
+ "status": "A String", # The status of the report file, one of:
+ # - "PROCESSING"
+ # - "REPORT_AVAILABLE"
+ # - "FAILED"
+ # - "CANCELLED"
+ "kind": "dfareporting#file", # The kind of resource this is, in this case dfareporting#file.
+ "format": "A String", # The output format of the report. Only available once the file is available.
+ "dateRange": { # Represents a date range. # The date range for which the file has report data. The date range will always be the absolute date range for which the report is run.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "fileName": "A String", # The file name of the file.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "reportId": "A String", # The ID of the report this file was generated from.
+ "urls": { # The urls where the completed report file can be downloaded.
+ "browserUrl": "A String", # The url for downloading the report data through a browser.
+ "apiUrl": "A String", # The url for downloading the report data through the API.
+ },
+ "lastModifiedTime": "A String", # The timestamp in milliseconds since epoch when this file was last modified.
+ "id": "A String", # The unique ID of this report file.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="get_media">get_media(reportId, fileId)</code>
+ <pre>Retrieves a report file by its report ID and file ID.
+
+Args:
+ reportId: string, The ID of the report. (required)
+ fileId: string, The ID of the report file. (required)
+
+Returns:
+ The media object as a string.
+
+ </pre>
+</div>
+
+<div class="method">
+ <code class="details" id="list">list(profileId, pageToken=None, maxResults=None, sortOrder=None, sortField=None, scope=None)</code>
+ <pre>Lists files for a user profile.
+
+Args:
+ profileId: string, The DFA profile ID. (required)
+ pageToken: string, The value of the nextToken from the previous result page.
+ maxResults: integer, Maximum number of results to return.
+ sortOrder: string, Order of sorted results, default is 'DESCENDING'.
+ Allowed values
+ ASCENDING - Ascending order.
+ DESCENDING - Descending order.
+ sortField: string, The field by which to sort the list.
+ Allowed values
+ ID - Sort by file ID.
+ LAST_MODIFIED_TIME - Sort by 'lastmodifiedAt' field.
+ scope: string, The scope that defines which results are returned, default is 'MINE'.
+ Allowed values
+ ALL - All files in account.
+ MINE - My files.
+ SHARED_WITH_ME - Files shared with me.
+
+Returns:
+ An object of the form:
+
+ { # Represents the list of File resources.
+ "nextPageToken": "A String", # Continuation token used to page through files. To retrieve the next page of results, set the next request's "pageToken" to the value of this field. The page token is only valid for a limited amount of time and should not be persisted.
+ "items": [ # The files returned in this response.
+ { # Represents a File resource. A File contains the meta-data for a report run. It shows the status of the run and holds the urls to the generated report data if the run is finished and the status is "REPORT_AVAILABLE".
+ "status": "A String", # The status of the report file, one of:
+ # - "PROCESSING"
+ # - "REPORT_AVAILABLE"
+ # - "FAILED"
+ # - "CANCELLED"
+ "kind": "dfareporting#file", # The kind of resource this is, in this case dfareporting#file.
+ "format": "A String", # The output format of the report. Only available once the file is available.
+ "dateRange": { # Represents a date range. # The date range for which the file has report data. The date range will always be the absolute date range for which the report is run.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "fileName": "A String", # The file name of the file.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "reportId": "A String", # The ID of the report this file was generated from.
+ "urls": { # The urls where the completed report file can be downloaded.
+ "browserUrl": "A String", # The url for downloading the report data through a browser.
+ "apiUrl": "A String", # The url for downloading the report data through the API.
+ },
+ "lastModifiedTime": "A String", # The timestamp in milliseconds since epoch when this file was last modified.
+ "id": "A String", # The unique ID of this report file.
+ },
+ ],
+ "kind": "dfareporting#fileList", # The kind of list this is, in this case dfareporting#fileList.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ }</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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v1_3.html b/docs/dyn/dfareporting_v1_3.html
new file mode 100644
index 0000000..1787adb
--- /dev/null
+++ b/docs/dyn/dfareporting_v1_3.html
@@ -0,0 +1,97 @@
+<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="dfareporting_v1_3.html">DFA Reporting API</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="dfareporting_v1_3.dimensionValues.html">dimensionValues()</a></code>
+</p>
+<p class="firstline">Returns the dimensionValues Resource.</p>
+
+<p class="toc_element">
+ <code><a href="dfareporting_v1_3.files.html">files()</a></code>
+</p>
+<p class="firstline">Returns the files Resource.</p>
+
+<p class="toc_element">
+ <code><a href="dfareporting_v1_3.reports.html">reports()</a></code>
+</p>
+<p class="firstline">Returns the reports Resource.</p>
+
+<p class="toc_element">
+ <code><a href="dfareporting_v1_3.userProfiles.html">userProfiles()</a></code>
+</p>
+<p class="firstline">Returns the userProfiles Resource.</p>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v1_3.reports.compatibleFields.html b/docs/dyn/dfareporting_v1_3.reports.compatibleFields.html
new file mode 100644
index 0000000..3ceb69c
--- /dev/null
+++ b/docs/dyn/dfareporting_v1_3.reports.compatibleFields.html
@@ -0,0 +1,763 @@
+<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="dfareporting_v1_3.html">DFA Reporting API</a> . <a href="dfareporting_v1_3.reports.html">reports</a> . <a href="dfareporting_v1_3.reports.compatibleFields.html">compatibleFields</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#query">query(profileId, body)</a></code></p>
+<p class="firstline">Returns the fields that are compatible to be selected in the respective sections of a report criteria, given the fields already selected in the input report and user permissions.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="query">query(profileId, body)</code>
+ <pre>Returns the fields that are compatible to be selected in the respective sections of a report criteria, given the fields already selected in the input report and user permissions.
+
+Args:
+ profileId: string, The DFA user profile ID. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # Represents a Report resource.
+ "pathToConversionCriteria": { # The report criteria for a report of type "PATH_TO_CONVERSION".
+ "conversionDimensions": [ # The list of conversion dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dateRange": { # Represents a date range. # The date range this report should be run for.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "reportProperties": { # The properties of the report.
+ "clicksLookbackWindow": 42, # DFA checks to see if a click interaction occurred within the specified period of time before a conversion. By default the value is pulled from Floodlight or you can manually enter a custom value. Valid values: 1-90.
+ "pivotOnInteractionPath": True or False, # Enable pivoting on interaction path.
+ "impressionsLookbackWindow": 42, # DFA checks to see if an impression interaction occurred within the specified period of time before a conversion. By default the value is pulled from Floodlight or you can manually enter a custom value. Valid values: 1-90.
+ "includeUnattributedIPConversions": True or False, # Include conversions that have no associated cookies and no exposures. It’s therefore impossible to know how the user was exposed to your ads during the lookback window prior to a conversion.
+ "includeUnattributedCookieConversions": True or False, # Include conversions of users with a DoubleClick cookie but without an exposure. That means the user did not click or see an ad from the advertiser within the Floodlight group, or that the interaction happened outside the lookback window.
+ "maximumInteractionGap": 42, # The maximum amount of time that can take place between interactions (clicks or impressions) by the same user. Valid values: 1-90.
+ "includeAttributedIPConversions": True or False, # Deprecated: has no effect.
+ "maximumClickInteractions": 42, # The maximum number of click interactions to include in the report. Advertisers currently paying for E2C reports get up to 200 (100 clicks, 100 impressions). If another advertiser in your network is paying for E2C, you can have up to 5 total exposures per report.
+ "maximumImpressionInteractions": 42, # The maximum number of click interactions to include in the report. Advertisers currently paying for E2C reports get up to 200 (100 clicks, 100 impressions). If another advertiser in your network is paying for E2C, you can have up to 5 total exposures per report.
+ },
+ "perInteractionDimensions": [ # The list of per interaction dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "activityFilters": [ # The list of 'dfa:activity' values to filter on.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "customRichMediaEvents": [ # The list of custom rich media events to include.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "floodlightConfigId": { # Represents a DimensionValue resource. # The floodlight ID for which to show data in this report. All advertisers associated with that ID will automatically be added. The dimension of the value needs to be 'dfa:floodlightConfigId'.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ "customFloodlightVariables": [ # The list of custom floodlight variables the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ },
+ "kind": "dfareporting#report", # The kind of resource this is, in this case dfareporting#report.
+ "subAccountId": "A String", # The subbaccount ID to which this report belongs if applicable.
+ "name": "A String", # The name of the report.
+ "schedule": { # The report's schedule. Can only be set if the report's 'dateRange' is a relative date range and the relative date range is not "TODAY".
+ "startDate": "A String", # Start date of date range for which scheduled reports should be run.
+ "runsOnDayOfMonth": "A String", # Enum to define for "MONTHLY" scheduled reports whether reports should be repeated on the same day of the month as "startDate" or the same day of the week of the month. Possible values are:
+ # - DAY_OF_MONTH
+ # - WEEK_OF_MONTH
+ # Example: If 'startDate' is Monday, April 2nd 2012 (2012-04-02), "DAY_OF_MONTH" would run subsequent reports on the 2nd of every Month, and "WEEK_OF_MONTH" would run subsequent reports on the first Monday of the month.
+ "every": 42, # Defines every how many days, weeks or months the report should be run. Needs to be set when "repeats" is either "DAILY", "WEEKLY" or "MONTHLY".
+ "expirationDate": "A String", # The expiration date when the scheduled report stops running.
+ "active": True or False, # Whether the schedule is active or not. Must be set to either true or false.
+ "repeats": "A String", # The interval for which the report is repeated, one of:
+ # - "DAILY", also requires field "every" to be set.
+ # - "WEEKLY", also requires fields "every" and "repeatsOnWeekDays" to be set.
+ # - "TWICE_A_MONTH"
+ # - "MONTHLY", also requires fields "every" and "runsOnDayOfMonth" to be set.
+ # - "QUARTERLY"
+ # - "YEARLY"
+ "repeatsOnWeekDays": [ # List of week days "WEEKLY" on which scheduled reports should run.
+ "A String",
+ ],
+ },
+ "format": "A String", # The output format of the report, one of:
+ # - "CSV"
+ # - "EXCEL" If not specified, default format is "CSV". Note that the actual format in the completed report file might differ if for instance the report's size exceeds the format's capabilities. "CSV" will then be the fallback format.
+ "ownerProfileId": "A String", # The user profile id of the owner of this report.
+ "reachCriteria": { # The report criteria for a report of type "REACH".
+ "activities": { # Represents an activity group. # Activity group.
+ "kind": "dfareporting#activities", # The kind of resource this is, in this case dfareporting#activities.
+ "filters": [ # List of activity filters. The dimension values need to be all either of type "dfa:activity" or "dfa:activityGroup".
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "metricNames": [ # List of names of floodlight activity metrics.
+ "A String",
+ ],
+ },
+ "dimensions": [ # The list of dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dateRange": { # Represents a date range. # The date range this report should be run for.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+ # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "reachByFrequencyMetricNames": [ # The list of names of Reach By Frequency metrics the report should include.
+ "A String",
+ ],
+ "customRichMediaEvents": { # Represents a Custom Rich Media Events group. # Custom Rich Media Events group.
+ "kind": "dfareporting#customRichMediaEvents", # The kind of resource this is, in this case dfareporting#customRichMediaEvents.
+ "filteredEventIds": [ # List of custom rich media event IDs. Dimension values must be all of type dfa:richMediaEventTypeIdAndName.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ },
+ },
+ "floodlightCriteria": { # The report criteria for a report of type "FLOODLIGHT".
+ "dimensions": [ # The list of dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dateRange": { # Represents a date range. # The date range this report should be run for.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+ # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "floodlightConfigId": { # Represents a DimensionValue resource. # The floodlight ID for which to show data in this report. All advertisers associated with that ID will automatically be added. The dimension of the value needs to be 'dfa:floodlightConfigId'.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ "customRichMediaEvents": [ # The list of custom rich media events to include.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "reportProperties": { # The properties of the report.
+ "includeUnattributedIPConversions": True or False, # Include conversions that have no associated cookies and no exposures. It’s therefore impossible to know how the user was exposed to your ads during the lookback window prior to a conversion.
+ "includeUnattributedCookieConversions": True or False, # Include conversions of users with a DoubleClick cookie but without an exposure. That means the user did not click or see an ad from the advertiser within the Floodlight group, or that the interaction happened outside the lookback window.
+ "includeAttributedIPConversions": True or False, # Include conversions that have no cookie, but do have an exposure path.
+ },
+ },
+ "activeGrpCriteria": { # The report criteria for a report of type "ACTIVE_GRP".
+ "dateRange": { # Represents a date range. # The date range this report should be run for.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+ # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+ # A valid active GRP report needs to have exactly one DimensionValue for the United States in addition to any advertiser or campaign dimension values.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "dimensions": [ # The list of dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ },
+ "delivery": { # The report's email delivery settings.
+ "message": "A String", # The message to be sent with each email.
+ "emailOwnerDeliveryType": "A String", # The type of delivery for the owner to receive, if enabled. One of:
+ # - "ATTACHMENT"
+ # - "LINK"
+ "recipients": [ # The list of recipients to which to email the report.
+ { # Represents a recipient.
+ "kind": "dfareporting#recipient", # The kind of resource this is, in this case dfareporting#recipient.
+ "deliveryType": "A String", # The delivery type for the recipient, one of:
+ # - "ATTACHMENT"
+ # - "LINK"
+ "email": "A String", # The email address of the recipient.
+ },
+ ],
+ "emailOwner": True or False, # Whether the report should be emailed to the report owner.
+ },
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "criteria": { # The report criteria for a report of type "STANDARD".
+ "activities": { # Represents an activity group. # Activity group.
+ "kind": "dfareporting#activities", # The kind of resource this is, in this case dfareporting#activities.
+ "filters": [ # List of activity filters. The dimension values need to be all either of type "dfa:activity" or "dfa:activityGroup".
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "metricNames": [ # List of names of floodlight activity metrics.
+ "A String",
+ ],
+ },
+ "dimensions": [ # The list of standard dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dateRange": { # Represents a date range. # The date range for which this report should be run.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+ # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "customRichMediaEvents": { # Represents a Custom Rich Media Events group. # Custom Rich Media Events group.
+ "kind": "dfareporting#customRichMediaEvents", # The kind of resource this is, in this case dfareporting#customRichMediaEvents.
+ "filteredEventIds": [ # List of custom rich media event IDs. Dimension values must be all of type dfa:richMediaEventTypeIdAndName.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ },
+ },
+ "id": "A String", # The unique ID identifying this report resource.
+ "lastModifiedTime": "A String", # The timestamp (in milliseconds since epoch) of when this report was last modified.
+ "fileName": "A String", # The file name used when generating report files for this report.
+ "type": "A String", # The type of the report, one of:
+ # - STANDARD
+ # - REACH
+ # - ACTIVE_GRP
+ # - PATH_TO_CONVERSION
+ # - FLOODLIGHT
+ # - CROSS_DIMENSION_REACH
+ "crossDimensionReachCriteria": { # The report criteria for a report of type "CROSS_DIMENSION_REACH".
+ "breakdown": [ # The list of dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "overlapMetricNames": [ # The list of names of overlap metrics the report should include.
+ "A String",
+ ],
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dateRange": { # Represents a date range. # The date range this report should be run for.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "pivoted": True or False, # Whether the report is pivoted or not. Defaults to true.
+ "dimension": "A String", # The dimension option, one of:
+ # - "ADVERTISER"
+ # - "CAMPAIGN"
+ # - "SITE_BY_ADVERTISER"
+ # - "SITE_BY_CAMPAIGN"
+ },
+ "accountId": "A String", # The account ID to which this report belongs.
+ }
+
+
+Returns:
+ An object of the form:
+
+ { # Represents a response to the queryCompatibleFields method.
+ "kind": "dfareporting#compatibleFields", # The kind of resource this is, in this case dfareporting#compatibleFields.
+ "reachReportCompatibleFields": { # Represents fields that are compatible to be selected for a report of type "REACH". # Contains items that are compatible to be selected for a report of type "REACH".
+ "kind": "dfareporting#reachReportCompatibleFields", # The kind of resource this is, in this case dfareporting#reachReportCompatibleFields.
+ "dimensions": [ # Dimensions which are compatible to be selected in the "dimensions" section of the report.
+ { # Represents a dimension.
+ "kind": "dfareporting#dimension", # The kind of resource this is, in this case dfareporting#dimension.
+ "name": "A String", # The dimension name, e.g. dfa:advertiser
+ },
+ ],
+ "reachByFrequencyMetrics": [ # Metrics which are compatible to be selected in the "reachByFrequencyMetricNames" section of the report.
+ { # Represents a metric.
+ "kind": "dfareporting#metric", # The kind of resource this is, in this case dfareporting#metric.
+ "name": "A String", # The metric name, e.g. dfa:impressions
+ },
+ ],
+ "pivotedActivityMetrics": [ # Metrics which are compatible to be selected as activity metrics to pivot on in the "activities" section of the report.
+ { # Represents a metric.
+ "kind": "dfareporting#metric", # The kind of resource this is, in this case dfareporting#metric.
+ "name": "A String", # The metric name, e.g. dfa:impressions
+ },
+ ],
+ "dimensionFilters": [ # Dimensions which are compatible to be selected in the "dimensionFilters" section of the report.
+ { # Represents a dimension.
+ "kind": "dfareporting#dimension", # The kind of resource this is, in this case dfareporting#dimension.
+ "name": "A String", # The dimension name, e.g. dfa:advertiser
+ },
+ ],
+ "metrics": [ # Metrics which are compatible to be selected in the "metricNames" section of the report.
+ { # Represents a metric.
+ "kind": "dfareporting#metric", # The kind of resource this is, in this case dfareporting#metric.
+ "name": "A String", # The metric name, e.g. dfa:impressions
+ },
+ ],
+ },
+ "pathToConversionReportCompatibleFields": { # Represents fields that are compatible to be selected for a report of type "PATH_TO_CONVERSION". # Contains items that are compatible to be selected for a report of type "PATH_TO_CONVERSION".
+ "metrics": [ # Metrics which are compatible to be selected in the "metricNames" section of the report.
+ { # Represents a metric.
+ "kind": "dfareporting#metric", # The kind of resource this is, in this case dfareporting#metric.
+ "name": "A String", # The metric name, e.g. dfa:impressions
+ },
+ ],
+ "perInteractionDimensions": [ # Per-interaction dimensions which are compatible to be selected in the "perInteractionDimensions" section of the report.
+ { # Represents a dimension.
+ "kind": "dfareporting#dimension", # The kind of resource this is, in this case dfareporting#dimension.
+ "name": "A String", # The dimension name, e.g. dfa:advertiser
+ },
+ ],
+ "kind": "dfareporting#pathToConversionReportCompatibleFields", # The kind of resource this is, in this case dfareporting#pathToConversionReportCompatibleFields.
+ "conversionDimensions": [ # Conversion dimensions which are compatible to be selected in the "conversionDimensions" section of the report.
+ { # Represents a dimension.
+ "kind": "dfareporting#dimension", # The kind of resource this is, in this case dfareporting#dimension.
+ "name": "A String", # The dimension name, e.g. dfa:advertiser
+ },
+ ],
+ "customFloodlightVariables": [ # Custom floodlight variables which are compatible to be selected in the "customFloodlightVariables" section of the report.
+ { # Represents a dimension.
+ "kind": "dfareporting#dimension", # The kind of resource this is, in this case dfareporting#dimension.
+ "name": "A String", # The dimension name, e.g. dfa:advertiser
+ },
+ ],
+ },
+ "crossDimensionReachReportCompatibleFields": { # Represents fields that are compatible to be selected for a report of type "CROSS_DIMENSION_REACH". # Contains items that are compatible to be selected for a report of type "CROSS_DIMENSION_REACH".
+ "breakdown": [ # Dimensions which are compatible to be selected in the "breakdown" section of the report.
+ { # Represents a dimension.
+ "kind": "dfareporting#dimension", # The kind of resource this is, in this case dfareporting#dimension.
+ "name": "A String", # The dimension name, e.g. dfa:advertiser
+ },
+ ],
+ "metrics": [ # Metrics which are compatible to be selected in the "metricNames" section of the report.
+ { # Represents a metric.
+ "kind": "dfareporting#metric", # The kind of resource this is, in this case dfareporting#metric.
+ "name": "A String", # The metric name, e.g. dfa:impressions
+ },
+ ],
+ "kind": "dfareporting#crossDimensionReachReportCompatibleFields", # The kind of resource this is, in this case dfareporting#crossDimensionReachReportCompatibleFields.
+ "overlapMetrics": [ # Metrics which are compatible to be selected in the "overlapMetricNames" section of the report.
+ { # Represents a metric.
+ "kind": "dfareporting#metric", # The kind of resource this is, in this case dfareporting#metric.
+ "name": "A String", # The metric name, e.g. dfa:impressions
+ },
+ ],
+ "dimensionFilters": [ # Dimensions which are compatible to be selected in the "dimensionFilters" section of the report.
+ { # Represents a dimension.
+ "kind": "dfareporting#dimension", # The kind of resource this is, in this case dfareporting#dimension.
+ "name": "A String", # The dimension name, e.g. dfa:advertiser
+ },
+ ],
+ },
+ "floodlightReportCompatibleFields": { # Represents fields that are compatible to be selected for a report of type "FlOODLIGHT". # Contains items that are compatible to be selected for a report of type "FLOODLIGHT".
+ "metrics": [ # Metrics which are compatible to be selected in the "metricNames" section of the report.
+ { # Represents a metric.
+ "kind": "dfareporting#metric", # The kind of resource this is, in this case dfareporting#metric.
+ "name": "A String", # The metric name, e.g. dfa:impressions
+ },
+ ],
+ "kind": "dfareporting#floodlightReportCompatibleFields", # The kind of resource this is, in this case dfareporting#floodlightReportCompatibleFields.
+ "dimensionFilters": [ # Dimensions which are compatible to be selected in the "dimensionFilters" section of the report.
+ { # Represents a dimension.
+ "kind": "dfareporting#dimension", # The kind of resource this is, in this case dfareporting#dimension.
+ "name": "A String", # The dimension name, e.g. dfa:advertiser
+ },
+ ],
+ "dimensions": [ # Dimensions which are compatible to be selected in the "dimensions" section of the report.
+ { # Represents a dimension.
+ "kind": "dfareporting#dimension", # The kind of resource this is, in this case dfareporting#dimension.
+ "name": "A String", # The dimension name, e.g. dfa:advertiser
+ },
+ ],
+ },
+ "reportCompatibleFields": { # Represents fields that are compatible to be selected for a report of type "STANDARD". # Contains items that are compatible to be selected for a report of type "STANDARD".
+ "metrics": [ # Metrics which are compatible to be selected in the "metricNames" section of the report.
+ { # Represents a metric.
+ "kind": "dfareporting#metric", # The kind of resource this is, in this case dfareporting#metric.
+ "name": "A String", # The metric name, e.g. dfa:impressions
+ },
+ ],
+ "kind": "dfareporting#reportCompatibleFields", # The kind of resource this is, in this case dfareporting#reportCompatibleFields.
+ "pivotedActivityMetrics": [ # Metrics which are compatible to be selected as activity metrics to pivot on in the "activities" section of the report.
+ { # Represents a metric.
+ "kind": "dfareporting#metric", # The kind of resource this is, in this case dfareporting#metric.
+ "name": "A String", # The metric name, e.g. dfa:impressions
+ },
+ ],
+ "dimensionFilters": [ # Dimensions which are compatible to be selected in the "dimensionFilters" section of the report.
+ { # Represents a dimension.
+ "kind": "dfareporting#dimension", # The kind of resource this is, in this case dfareporting#dimension.
+ "name": "A String", # The dimension name, e.g. dfa:advertiser
+ },
+ ],
+ "dimensions": [ # Dimensions which are compatible to be selected in the "dimensions" section of the report.
+ { # Represents a dimension.
+ "kind": "dfareporting#dimension", # The kind of resource this is, in this case dfareporting#dimension.
+ "name": "A String", # The dimension name, e.g. dfa:advertiser
+ },
+ ],
+ },
+ }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v1_3.reports.files.html b/docs/dyn/dfareporting_v1_3.reports.files.html
new file mode 100644
index 0000000..60ba96a
--- /dev/null
+++ b/docs/dyn/dfareporting_v1_3.reports.files.html
@@ -0,0 +1,241 @@
+<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="dfareporting_v1_3.html">DFA Reporting API</a> . <a href="dfareporting_v1_3.reports.html">reports</a> . <a href="dfareporting_v1_3.reports.files.html">files</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#get">get(profileId, reportId, fileId)</a></code></p>
+<p class="firstline">Retrieves a report file.</p>
+<p class="toc_element">
+ <code><a href="#get_media">get_media(profileId, reportId, fileId)</a></code></p>
+<p class="firstline">Retrieves a report file.</p>
+<p class="toc_element">
+ <code><a href="#list">list(profileId, reportId, pageToken=None, sortField=None, maxResults=None, sortOrder=None)</a></code></p>
+<p class="firstline">Lists files for a report.</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>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="get">get(profileId, reportId, fileId)</code>
+ <pre>Retrieves a report file.
+
+Args:
+ profileId: string, The DFA profile ID. (required)
+ reportId: string, The ID of the report. (required)
+ fileId: string, The ID of the report file. (required)
+
+Returns:
+ An object of the form:
+
+ { # Represents a File resource. A File contains the meta-data for a report run. It shows the status of the run and holds the urls to the generated report data if the run is finished and the status is "REPORT_AVAILABLE".
+ "status": "A String", # The status of the report file, one of:
+ # - "PROCESSING"
+ # - "REPORT_AVAILABLE"
+ # - "FAILED"
+ # - "CANCELLED"
+ "kind": "dfareporting#file", # The kind of resource this is, in this case dfareporting#file.
+ "format": "A String", # The output format of the report. Only available once the file is available.
+ "dateRange": { # Represents a date range. # The date range for which the file has report data. The date range will always be the absolute date range for which the report is run.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "fileName": "A String", # The file name of the file.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "reportId": "A String", # The ID of the report this file was generated from.
+ "urls": { # The urls where the completed report file can be downloaded.
+ "browserUrl": "A String", # The url for downloading the report data through a browser.
+ "apiUrl": "A String", # The url for downloading the report data through the API.
+ },
+ "lastModifiedTime": "A String", # The timestamp in milliseconds since epoch when this file was last modified.
+ "id": "A String", # The unique ID of this report file.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="get_media">get_media(profileId, reportId, fileId)</code>
+ <pre>Retrieves a report file.
+
+Args:
+ profileId: string, The DFA profile ID. (required)
+ reportId: string, The ID of the report. (required)
+ fileId: string, The ID of the report file. (required)
+
+Returns:
+ The media object as a string.
+
+ </pre>
+</div>
+
+<div class="method">
+ <code class="details" id="list">list(profileId, reportId, pageToken=None, sortField=None, maxResults=None, sortOrder=None)</code>
+ <pre>Lists files for a report.
+
+Args:
+ profileId: string, The DFA profile ID. (required)
+ reportId: string, The ID of the parent report. (required)
+ pageToken: string, The value of the nextToken from the previous result page.
+ sortField: string, The field by which to sort the list.
+ Allowed values
+ ID - Sort by file ID.
+ LAST_MODIFIED_TIME - Sort by 'lastmodifiedAt' field.
+ maxResults: integer, Maximum number of results to return.
+ sortOrder: string, Order of sorted results, default is 'DESCENDING'.
+ Allowed values
+ ASCENDING - Ascending order.
+ DESCENDING - Descending order.
+
+Returns:
+ An object of the form:
+
+ { # Represents the list of File resources.
+ "nextPageToken": "A String", # Continuation token used to page through files. To retrieve the next page of results, set the next request's "pageToken" to the value of this field. The page token is only valid for a limited amount of time and should not be persisted.
+ "items": [ # The files returned in this response.
+ { # Represents a File resource. A File contains the meta-data for a report run. It shows the status of the run and holds the urls to the generated report data if the run is finished and the status is "REPORT_AVAILABLE".
+ "status": "A String", # The status of the report file, one of:
+ # - "PROCESSING"
+ # - "REPORT_AVAILABLE"
+ # - "FAILED"
+ # - "CANCELLED"
+ "kind": "dfareporting#file", # The kind of resource this is, in this case dfareporting#file.
+ "format": "A String", # The output format of the report. Only available once the file is available.
+ "dateRange": { # Represents a date range. # The date range for which the file has report data. The date range will always be the absolute date range for which the report is run.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "fileName": "A String", # The file name of the file.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "reportId": "A String", # The ID of the report this file was generated from.
+ "urls": { # The urls where the completed report file can be downloaded.
+ "browserUrl": "A String", # The url for downloading the report data through a browser.
+ "apiUrl": "A String", # The url for downloading the report data through the API.
+ },
+ "lastModifiedTime": "A String", # The timestamp in milliseconds since epoch when this file was last modified.
+ "id": "A String", # The unique ID of this report file.
+ },
+ ],
+ "kind": "dfareporting#fileList", # The kind of list this is, in this case dfareporting#fileList.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ }</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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v1_3.reports.html b/docs/dyn/dfareporting_v1_3.reports.html
new file mode 100644
index 0000000..deb2bfa
--- /dev/null
+++ b/docs/dyn/dfareporting_v1_3.reports.html
@@ -0,0 +1,4510 @@
+<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="dfareporting_v1_3.html">DFA Reporting API</a> . <a href="dfareporting_v1_3.reports.html">reports</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="dfareporting_v1_3.reports.compatibleFields.html">compatibleFields()</a></code>
+</p>
+<p class="firstline">Returns the compatibleFields Resource.</p>
+
+<p class="toc_element">
+ <code><a href="dfareporting_v1_3.reports.files.html">files()</a></code>
+</p>
+<p class="firstline">Returns the files Resource.</p>
+
+<p class="toc_element">
+ <code><a href="#delete">delete(profileId, reportId)</a></code></p>
+<p class="firstline">Deletes a report by its ID.</p>
+<p class="toc_element">
+ <code><a href="#get">get(profileId, reportId)</a></code></p>
+<p class="firstline">Retrieves a report by its ID.</p>
+<p class="toc_element">
+ <code><a href="#insert">insert(profileId, body)</a></code></p>
+<p class="firstline">Creates a report.</p>
+<p class="toc_element">
+ <code><a href="#list">list(profileId, pageToken=None, maxResults=None, sortOrder=None, sortField=None, scope=None)</a></code></p>
+<p class="firstline">Retrieves list of reports.</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(profileId, reportId, body)</a></code></p>
+<p class="firstline">Updates a report. This method supports patch semantics.</p>
+<p class="toc_element">
+ <code><a href="#run">run(profileId, reportId, synchronous=None)</a></code></p>
+<p class="firstline">Runs a report.</p>
+<p class="toc_element">
+ <code><a href="#update">update(profileId, reportId, body)</a></code></p>
+<p class="firstline">Updates a report.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="delete">delete(profileId, reportId)</code>
+ <pre>Deletes a report by its ID.
+
+Args:
+ profileId: string, The DFA user profile ID. (required)
+ reportId: string, The ID of the report. (required)
+</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="get">get(profileId, reportId)</code>
+ <pre>Retrieves a report by its ID.
+
+Args:
+ profileId: string, The DFA user profile ID. (required)
+ reportId: string, The ID of the report. (required)
+
+Returns:
+ An object of the form:
+
+ { # Represents a Report resource.
+ "pathToConversionCriteria": { # The report criteria for a report of type "PATH_TO_CONVERSION".
+ "conversionDimensions": [ # The list of conversion dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dateRange": { # Represents a date range. # The date range this report should be run for.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "reportProperties": { # The properties of the report.
+ "clicksLookbackWindow": 42, # DFA checks to see if a click interaction occurred within the specified period of time before a conversion. By default the value is pulled from Floodlight or you can manually enter a custom value. Valid values: 1-90.
+ "pivotOnInteractionPath": True or False, # Enable pivoting on interaction path.
+ "impressionsLookbackWindow": 42, # DFA checks to see if an impression interaction occurred within the specified period of time before a conversion. By default the value is pulled from Floodlight or you can manually enter a custom value. Valid values: 1-90.
+ "includeUnattributedIPConversions": True or False, # Include conversions that have no associated cookies and no exposures. It’s therefore impossible to know how the user was exposed to your ads during the lookback window prior to a conversion.
+ "includeUnattributedCookieConversions": True or False, # Include conversions of users with a DoubleClick cookie but without an exposure. That means the user did not click or see an ad from the advertiser within the Floodlight group, or that the interaction happened outside the lookback window.
+ "maximumInteractionGap": 42, # The maximum amount of time that can take place between interactions (clicks or impressions) by the same user. Valid values: 1-90.
+ "includeAttributedIPConversions": True or False, # Deprecated: has no effect.
+ "maximumClickInteractions": 42, # The maximum number of click interactions to include in the report. Advertisers currently paying for E2C reports get up to 200 (100 clicks, 100 impressions). If another advertiser in your network is paying for E2C, you can have up to 5 total exposures per report.
+ "maximumImpressionInteractions": 42, # The maximum number of click interactions to include in the report. Advertisers currently paying for E2C reports get up to 200 (100 clicks, 100 impressions). If another advertiser in your network is paying for E2C, you can have up to 5 total exposures per report.
+ },
+ "perInteractionDimensions": [ # The list of per interaction dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "activityFilters": [ # The list of 'dfa:activity' values to filter on.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "customRichMediaEvents": [ # The list of custom rich media events to include.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "floodlightConfigId": { # Represents a DimensionValue resource. # The floodlight ID for which to show data in this report. All advertisers associated with that ID will automatically be added. The dimension of the value needs to be 'dfa:floodlightConfigId'.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ "customFloodlightVariables": [ # The list of custom floodlight variables the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ },
+ "kind": "dfareporting#report", # The kind of resource this is, in this case dfareporting#report.
+ "subAccountId": "A String", # The subbaccount ID to which this report belongs if applicable.
+ "name": "A String", # The name of the report.
+ "schedule": { # The report's schedule. Can only be set if the report's 'dateRange' is a relative date range and the relative date range is not "TODAY".
+ "startDate": "A String", # Start date of date range for which scheduled reports should be run.
+ "runsOnDayOfMonth": "A String", # Enum to define for "MONTHLY" scheduled reports whether reports should be repeated on the same day of the month as "startDate" or the same day of the week of the month. Possible values are:
+ # - DAY_OF_MONTH
+ # - WEEK_OF_MONTH
+ # Example: If 'startDate' is Monday, April 2nd 2012 (2012-04-02), "DAY_OF_MONTH" would run subsequent reports on the 2nd of every Month, and "WEEK_OF_MONTH" would run subsequent reports on the first Monday of the month.
+ "every": 42, # Defines every how many days, weeks or months the report should be run. Needs to be set when "repeats" is either "DAILY", "WEEKLY" or "MONTHLY".
+ "expirationDate": "A String", # The expiration date when the scheduled report stops running.
+ "active": True or False, # Whether the schedule is active or not. Must be set to either true or false.
+ "repeats": "A String", # The interval for which the report is repeated, one of:
+ # - "DAILY", also requires field "every" to be set.
+ # - "WEEKLY", also requires fields "every" and "repeatsOnWeekDays" to be set.
+ # - "TWICE_A_MONTH"
+ # - "MONTHLY", also requires fields "every" and "runsOnDayOfMonth" to be set.
+ # - "QUARTERLY"
+ # - "YEARLY"
+ "repeatsOnWeekDays": [ # List of week days "WEEKLY" on which scheduled reports should run.
+ "A String",
+ ],
+ },
+ "format": "A String", # The output format of the report, one of:
+ # - "CSV"
+ # - "EXCEL" If not specified, default format is "CSV". Note that the actual format in the completed report file might differ if for instance the report's size exceeds the format's capabilities. "CSV" will then be the fallback format.
+ "ownerProfileId": "A String", # The user profile id of the owner of this report.
+ "reachCriteria": { # The report criteria for a report of type "REACH".
+ "activities": { # Represents an activity group. # Activity group.
+ "kind": "dfareporting#activities", # The kind of resource this is, in this case dfareporting#activities.
+ "filters": [ # List of activity filters. The dimension values need to be all either of type "dfa:activity" or "dfa:activityGroup".
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "metricNames": [ # List of names of floodlight activity metrics.
+ "A String",
+ ],
+ },
+ "dimensions": [ # The list of dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dateRange": { # Represents a date range. # The date range this report should be run for.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+ # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "reachByFrequencyMetricNames": [ # The list of names of Reach By Frequency metrics the report should include.
+ "A String",
+ ],
+ "customRichMediaEvents": { # Represents a Custom Rich Media Events group. # Custom Rich Media Events group.
+ "kind": "dfareporting#customRichMediaEvents", # The kind of resource this is, in this case dfareporting#customRichMediaEvents.
+ "filteredEventIds": [ # List of custom rich media event IDs. Dimension values must be all of type dfa:richMediaEventTypeIdAndName.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ },
+ },
+ "floodlightCriteria": { # The report criteria for a report of type "FLOODLIGHT".
+ "dimensions": [ # The list of dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dateRange": { # Represents a date range. # The date range this report should be run for.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+ # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "floodlightConfigId": { # Represents a DimensionValue resource. # The floodlight ID for which to show data in this report. All advertisers associated with that ID will automatically be added. The dimension of the value needs to be 'dfa:floodlightConfigId'.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ "customRichMediaEvents": [ # The list of custom rich media events to include.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "reportProperties": { # The properties of the report.
+ "includeUnattributedIPConversions": True or False, # Include conversions that have no associated cookies and no exposures. It’s therefore impossible to know how the user was exposed to your ads during the lookback window prior to a conversion.
+ "includeUnattributedCookieConversions": True or False, # Include conversions of users with a DoubleClick cookie but without an exposure. That means the user did not click or see an ad from the advertiser within the Floodlight group, or that the interaction happened outside the lookback window.
+ "includeAttributedIPConversions": True or False, # Include conversions that have no cookie, but do have an exposure path.
+ },
+ },
+ "activeGrpCriteria": { # The report criteria for a report of type "ACTIVE_GRP".
+ "dateRange": { # Represents a date range. # The date range this report should be run for.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+ # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+ # A valid active GRP report needs to have exactly one DimensionValue for the United States in addition to any advertiser or campaign dimension values.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "dimensions": [ # The list of dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ },
+ "delivery": { # The report's email delivery settings.
+ "message": "A String", # The message to be sent with each email.
+ "emailOwnerDeliveryType": "A String", # The type of delivery for the owner to receive, if enabled. One of:
+ # - "ATTACHMENT"
+ # - "LINK"
+ "recipients": [ # The list of recipients to which to email the report.
+ { # Represents a recipient.
+ "kind": "dfareporting#recipient", # The kind of resource this is, in this case dfareporting#recipient.
+ "deliveryType": "A String", # The delivery type for the recipient, one of:
+ # - "ATTACHMENT"
+ # - "LINK"
+ "email": "A String", # The email address of the recipient.
+ },
+ ],
+ "emailOwner": True or False, # Whether the report should be emailed to the report owner.
+ },
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "criteria": { # The report criteria for a report of type "STANDARD".
+ "activities": { # Represents an activity group. # Activity group.
+ "kind": "dfareporting#activities", # The kind of resource this is, in this case dfareporting#activities.
+ "filters": [ # List of activity filters. The dimension values need to be all either of type "dfa:activity" or "dfa:activityGroup".
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "metricNames": [ # List of names of floodlight activity metrics.
+ "A String",
+ ],
+ },
+ "dimensions": [ # The list of standard dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dateRange": { # Represents a date range. # The date range for which this report should be run.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+ # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "customRichMediaEvents": { # Represents a Custom Rich Media Events group. # Custom Rich Media Events group.
+ "kind": "dfareporting#customRichMediaEvents", # The kind of resource this is, in this case dfareporting#customRichMediaEvents.
+ "filteredEventIds": [ # List of custom rich media event IDs. Dimension values must be all of type dfa:richMediaEventTypeIdAndName.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ },
+ },
+ "id": "A String", # The unique ID identifying this report resource.
+ "lastModifiedTime": "A String", # The timestamp (in milliseconds since epoch) of when this report was last modified.
+ "fileName": "A String", # The file name used when generating report files for this report.
+ "type": "A String", # The type of the report, one of:
+ # - STANDARD
+ # - REACH
+ # - ACTIVE_GRP
+ # - PATH_TO_CONVERSION
+ # - FLOODLIGHT
+ # - CROSS_DIMENSION_REACH
+ "crossDimensionReachCriteria": { # The report criteria for a report of type "CROSS_DIMENSION_REACH".
+ "breakdown": [ # The list of dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "overlapMetricNames": [ # The list of names of overlap metrics the report should include.
+ "A String",
+ ],
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dateRange": { # Represents a date range. # The date range this report should be run for.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "pivoted": True or False, # Whether the report is pivoted or not. Defaults to true.
+ "dimension": "A String", # The dimension option, one of:
+ # - "ADVERTISER"
+ # - "CAMPAIGN"
+ # - "SITE_BY_ADVERTISER"
+ # - "SITE_BY_CAMPAIGN"
+ },
+ "accountId": "A String", # The account ID to which this report belongs.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="insert">insert(profileId, body)</code>
+ <pre>Creates a report.
+
+Args:
+ profileId: string, The DFA user profile ID. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # Represents a Report resource.
+ "pathToConversionCriteria": { # The report criteria for a report of type "PATH_TO_CONVERSION".
+ "conversionDimensions": [ # The list of conversion dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dateRange": { # Represents a date range. # The date range this report should be run for.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "reportProperties": { # The properties of the report.
+ "clicksLookbackWindow": 42, # DFA checks to see if a click interaction occurred within the specified period of time before a conversion. By default the value is pulled from Floodlight or you can manually enter a custom value. Valid values: 1-90.
+ "pivotOnInteractionPath": True or False, # Enable pivoting on interaction path.
+ "impressionsLookbackWindow": 42, # DFA checks to see if an impression interaction occurred within the specified period of time before a conversion. By default the value is pulled from Floodlight or you can manually enter a custom value. Valid values: 1-90.
+ "includeUnattributedIPConversions": True or False, # Include conversions that have no associated cookies and no exposures. It’s therefore impossible to know how the user was exposed to your ads during the lookback window prior to a conversion.
+ "includeUnattributedCookieConversions": True or False, # Include conversions of users with a DoubleClick cookie but without an exposure. That means the user did not click or see an ad from the advertiser within the Floodlight group, or that the interaction happened outside the lookback window.
+ "maximumInteractionGap": 42, # The maximum amount of time that can take place between interactions (clicks or impressions) by the same user. Valid values: 1-90.
+ "includeAttributedIPConversions": True or False, # Deprecated: has no effect.
+ "maximumClickInteractions": 42, # The maximum number of click interactions to include in the report. Advertisers currently paying for E2C reports get up to 200 (100 clicks, 100 impressions). If another advertiser in your network is paying for E2C, you can have up to 5 total exposures per report.
+ "maximumImpressionInteractions": 42, # The maximum number of click interactions to include in the report. Advertisers currently paying for E2C reports get up to 200 (100 clicks, 100 impressions). If another advertiser in your network is paying for E2C, you can have up to 5 total exposures per report.
+ },
+ "perInteractionDimensions": [ # The list of per interaction dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "activityFilters": [ # The list of 'dfa:activity' values to filter on.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "customRichMediaEvents": [ # The list of custom rich media events to include.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "floodlightConfigId": { # Represents a DimensionValue resource. # The floodlight ID for which to show data in this report. All advertisers associated with that ID will automatically be added. The dimension of the value needs to be 'dfa:floodlightConfigId'.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ "customFloodlightVariables": [ # The list of custom floodlight variables the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ },
+ "kind": "dfareporting#report", # The kind of resource this is, in this case dfareporting#report.
+ "subAccountId": "A String", # The subbaccount ID to which this report belongs if applicable.
+ "name": "A String", # The name of the report.
+ "schedule": { # The report's schedule. Can only be set if the report's 'dateRange' is a relative date range and the relative date range is not "TODAY".
+ "startDate": "A String", # Start date of date range for which scheduled reports should be run.
+ "runsOnDayOfMonth": "A String", # Enum to define for "MONTHLY" scheduled reports whether reports should be repeated on the same day of the month as "startDate" or the same day of the week of the month. Possible values are:
+ # - DAY_OF_MONTH
+ # - WEEK_OF_MONTH
+ # Example: If 'startDate' is Monday, April 2nd 2012 (2012-04-02), "DAY_OF_MONTH" would run subsequent reports on the 2nd of every Month, and "WEEK_OF_MONTH" would run subsequent reports on the first Monday of the month.
+ "every": 42, # Defines every how many days, weeks or months the report should be run. Needs to be set when "repeats" is either "DAILY", "WEEKLY" or "MONTHLY".
+ "expirationDate": "A String", # The expiration date when the scheduled report stops running.
+ "active": True or False, # Whether the schedule is active or not. Must be set to either true or false.
+ "repeats": "A String", # The interval for which the report is repeated, one of:
+ # - "DAILY", also requires field "every" to be set.
+ # - "WEEKLY", also requires fields "every" and "repeatsOnWeekDays" to be set.
+ # - "TWICE_A_MONTH"
+ # - "MONTHLY", also requires fields "every" and "runsOnDayOfMonth" to be set.
+ # - "QUARTERLY"
+ # - "YEARLY"
+ "repeatsOnWeekDays": [ # List of week days "WEEKLY" on which scheduled reports should run.
+ "A String",
+ ],
+ },
+ "format": "A String", # The output format of the report, one of:
+ # - "CSV"
+ # - "EXCEL" If not specified, default format is "CSV". Note that the actual format in the completed report file might differ if for instance the report's size exceeds the format's capabilities. "CSV" will then be the fallback format.
+ "ownerProfileId": "A String", # The user profile id of the owner of this report.
+ "reachCriteria": { # The report criteria for a report of type "REACH".
+ "activities": { # Represents an activity group. # Activity group.
+ "kind": "dfareporting#activities", # The kind of resource this is, in this case dfareporting#activities.
+ "filters": [ # List of activity filters. The dimension values need to be all either of type "dfa:activity" or "dfa:activityGroup".
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "metricNames": [ # List of names of floodlight activity metrics.
+ "A String",
+ ],
+ },
+ "dimensions": [ # The list of dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dateRange": { # Represents a date range. # The date range this report should be run for.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+ # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "reachByFrequencyMetricNames": [ # The list of names of Reach By Frequency metrics the report should include.
+ "A String",
+ ],
+ "customRichMediaEvents": { # Represents a Custom Rich Media Events group. # Custom Rich Media Events group.
+ "kind": "dfareporting#customRichMediaEvents", # The kind of resource this is, in this case dfareporting#customRichMediaEvents.
+ "filteredEventIds": [ # List of custom rich media event IDs. Dimension values must be all of type dfa:richMediaEventTypeIdAndName.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ },
+ },
+ "floodlightCriteria": { # The report criteria for a report of type "FLOODLIGHT".
+ "dimensions": [ # The list of dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dateRange": { # Represents a date range. # The date range this report should be run for.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+ # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "floodlightConfigId": { # Represents a DimensionValue resource. # The floodlight ID for which to show data in this report. All advertisers associated with that ID will automatically be added. The dimension of the value needs to be 'dfa:floodlightConfigId'.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ "customRichMediaEvents": [ # The list of custom rich media events to include.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "reportProperties": { # The properties of the report.
+ "includeUnattributedIPConversions": True or False, # Include conversions that have no associated cookies and no exposures. It’s therefore impossible to know how the user was exposed to your ads during the lookback window prior to a conversion.
+ "includeUnattributedCookieConversions": True or False, # Include conversions of users with a DoubleClick cookie but without an exposure. That means the user did not click or see an ad from the advertiser within the Floodlight group, or that the interaction happened outside the lookback window.
+ "includeAttributedIPConversions": True or False, # Include conversions that have no cookie, but do have an exposure path.
+ },
+ },
+ "activeGrpCriteria": { # The report criteria for a report of type "ACTIVE_GRP".
+ "dateRange": { # Represents a date range. # The date range this report should be run for.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+ # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+ # A valid active GRP report needs to have exactly one DimensionValue for the United States in addition to any advertiser or campaign dimension values.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "dimensions": [ # The list of dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ },
+ "delivery": { # The report's email delivery settings.
+ "message": "A String", # The message to be sent with each email.
+ "emailOwnerDeliveryType": "A String", # The type of delivery for the owner to receive, if enabled. One of:
+ # - "ATTACHMENT"
+ # - "LINK"
+ "recipients": [ # The list of recipients to which to email the report.
+ { # Represents a recipient.
+ "kind": "dfareporting#recipient", # The kind of resource this is, in this case dfareporting#recipient.
+ "deliveryType": "A String", # The delivery type for the recipient, one of:
+ # - "ATTACHMENT"
+ # - "LINK"
+ "email": "A String", # The email address of the recipient.
+ },
+ ],
+ "emailOwner": True or False, # Whether the report should be emailed to the report owner.
+ },
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "criteria": { # The report criteria for a report of type "STANDARD".
+ "activities": { # Represents an activity group. # Activity group.
+ "kind": "dfareporting#activities", # The kind of resource this is, in this case dfareporting#activities.
+ "filters": [ # List of activity filters. The dimension values need to be all either of type "dfa:activity" or "dfa:activityGroup".
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "metricNames": [ # List of names of floodlight activity metrics.
+ "A String",
+ ],
+ },
+ "dimensions": [ # The list of standard dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dateRange": { # Represents a date range. # The date range for which this report should be run.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+ # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "customRichMediaEvents": { # Represents a Custom Rich Media Events group. # Custom Rich Media Events group.
+ "kind": "dfareporting#customRichMediaEvents", # The kind of resource this is, in this case dfareporting#customRichMediaEvents.
+ "filteredEventIds": [ # List of custom rich media event IDs. Dimension values must be all of type dfa:richMediaEventTypeIdAndName.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ },
+ },
+ "id": "A String", # The unique ID identifying this report resource.
+ "lastModifiedTime": "A String", # The timestamp (in milliseconds since epoch) of when this report was last modified.
+ "fileName": "A String", # The file name used when generating report files for this report.
+ "type": "A String", # The type of the report, one of:
+ # - STANDARD
+ # - REACH
+ # - ACTIVE_GRP
+ # - PATH_TO_CONVERSION
+ # - FLOODLIGHT
+ # - CROSS_DIMENSION_REACH
+ "crossDimensionReachCriteria": { # The report criteria for a report of type "CROSS_DIMENSION_REACH".
+ "breakdown": [ # The list of dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "overlapMetricNames": [ # The list of names of overlap metrics the report should include.
+ "A String",
+ ],
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dateRange": { # Represents a date range. # The date range this report should be run for.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "pivoted": True or False, # Whether the report is pivoted or not. Defaults to true.
+ "dimension": "A String", # The dimension option, one of:
+ # - "ADVERTISER"
+ # - "CAMPAIGN"
+ # - "SITE_BY_ADVERTISER"
+ # - "SITE_BY_CAMPAIGN"
+ },
+ "accountId": "A String", # The account ID to which this report belongs.
+ }
+
+
+Returns:
+ An object of the form:
+
+ { # Represents a Report resource.
+ "pathToConversionCriteria": { # The report criteria for a report of type "PATH_TO_CONVERSION".
+ "conversionDimensions": [ # The list of conversion dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dateRange": { # Represents a date range. # The date range this report should be run for.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "reportProperties": { # The properties of the report.
+ "clicksLookbackWindow": 42, # DFA checks to see if a click interaction occurred within the specified period of time before a conversion. By default the value is pulled from Floodlight or you can manually enter a custom value. Valid values: 1-90.
+ "pivotOnInteractionPath": True or False, # Enable pivoting on interaction path.
+ "impressionsLookbackWindow": 42, # DFA checks to see if an impression interaction occurred within the specified period of time before a conversion. By default the value is pulled from Floodlight or you can manually enter a custom value. Valid values: 1-90.
+ "includeUnattributedIPConversions": True or False, # Include conversions that have no associated cookies and no exposures. It’s therefore impossible to know how the user was exposed to your ads during the lookback window prior to a conversion.
+ "includeUnattributedCookieConversions": True or False, # Include conversions of users with a DoubleClick cookie but without an exposure. That means the user did not click or see an ad from the advertiser within the Floodlight group, or that the interaction happened outside the lookback window.
+ "maximumInteractionGap": 42, # The maximum amount of time that can take place between interactions (clicks or impressions) by the same user. Valid values: 1-90.
+ "includeAttributedIPConversions": True or False, # Deprecated: has no effect.
+ "maximumClickInteractions": 42, # The maximum number of click interactions to include in the report. Advertisers currently paying for E2C reports get up to 200 (100 clicks, 100 impressions). If another advertiser in your network is paying for E2C, you can have up to 5 total exposures per report.
+ "maximumImpressionInteractions": 42, # The maximum number of click interactions to include in the report. Advertisers currently paying for E2C reports get up to 200 (100 clicks, 100 impressions). If another advertiser in your network is paying for E2C, you can have up to 5 total exposures per report.
+ },
+ "perInteractionDimensions": [ # The list of per interaction dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "activityFilters": [ # The list of 'dfa:activity' values to filter on.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "customRichMediaEvents": [ # The list of custom rich media events to include.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "floodlightConfigId": { # Represents a DimensionValue resource. # The floodlight ID for which to show data in this report. All advertisers associated with that ID will automatically be added. The dimension of the value needs to be 'dfa:floodlightConfigId'.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ "customFloodlightVariables": [ # The list of custom floodlight variables the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ },
+ "kind": "dfareporting#report", # The kind of resource this is, in this case dfareporting#report.
+ "subAccountId": "A String", # The subbaccount ID to which this report belongs if applicable.
+ "name": "A String", # The name of the report.
+ "schedule": { # The report's schedule. Can only be set if the report's 'dateRange' is a relative date range and the relative date range is not "TODAY".
+ "startDate": "A String", # Start date of date range for which scheduled reports should be run.
+ "runsOnDayOfMonth": "A String", # Enum to define for "MONTHLY" scheduled reports whether reports should be repeated on the same day of the month as "startDate" or the same day of the week of the month. Possible values are:
+ # - DAY_OF_MONTH
+ # - WEEK_OF_MONTH
+ # Example: If 'startDate' is Monday, April 2nd 2012 (2012-04-02), "DAY_OF_MONTH" would run subsequent reports on the 2nd of every Month, and "WEEK_OF_MONTH" would run subsequent reports on the first Monday of the month.
+ "every": 42, # Defines every how many days, weeks or months the report should be run. Needs to be set when "repeats" is either "DAILY", "WEEKLY" or "MONTHLY".
+ "expirationDate": "A String", # The expiration date when the scheduled report stops running.
+ "active": True or False, # Whether the schedule is active or not. Must be set to either true or false.
+ "repeats": "A String", # The interval for which the report is repeated, one of:
+ # - "DAILY", also requires field "every" to be set.
+ # - "WEEKLY", also requires fields "every" and "repeatsOnWeekDays" to be set.
+ # - "TWICE_A_MONTH"
+ # - "MONTHLY", also requires fields "every" and "runsOnDayOfMonth" to be set.
+ # - "QUARTERLY"
+ # - "YEARLY"
+ "repeatsOnWeekDays": [ # List of week days "WEEKLY" on which scheduled reports should run.
+ "A String",
+ ],
+ },
+ "format": "A String", # The output format of the report, one of:
+ # - "CSV"
+ # - "EXCEL" If not specified, default format is "CSV". Note that the actual format in the completed report file might differ if for instance the report's size exceeds the format's capabilities. "CSV" will then be the fallback format.
+ "ownerProfileId": "A String", # The user profile id of the owner of this report.
+ "reachCriteria": { # The report criteria for a report of type "REACH".
+ "activities": { # Represents an activity group. # Activity group.
+ "kind": "dfareporting#activities", # The kind of resource this is, in this case dfareporting#activities.
+ "filters": [ # List of activity filters. The dimension values need to be all either of type "dfa:activity" or "dfa:activityGroup".
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "metricNames": [ # List of names of floodlight activity metrics.
+ "A String",
+ ],
+ },
+ "dimensions": [ # The list of dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dateRange": { # Represents a date range. # The date range this report should be run for.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+ # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "reachByFrequencyMetricNames": [ # The list of names of Reach By Frequency metrics the report should include.
+ "A String",
+ ],
+ "customRichMediaEvents": { # Represents a Custom Rich Media Events group. # Custom Rich Media Events group.
+ "kind": "dfareporting#customRichMediaEvents", # The kind of resource this is, in this case dfareporting#customRichMediaEvents.
+ "filteredEventIds": [ # List of custom rich media event IDs. Dimension values must be all of type dfa:richMediaEventTypeIdAndName.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ },
+ },
+ "floodlightCriteria": { # The report criteria for a report of type "FLOODLIGHT".
+ "dimensions": [ # The list of dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dateRange": { # Represents a date range. # The date range this report should be run for.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+ # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "floodlightConfigId": { # Represents a DimensionValue resource. # The floodlight ID for which to show data in this report. All advertisers associated with that ID will automatically be added. The dimension of the value needs to be 'dfa:floodlightConfigId'.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ "customRichMediaEvents": [ # The list of custom rich media events to include.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "reportProperties": { # The properties of the report.
+ "includeUnattributedIPConversions": True or False, # Include conversions that have no associated cookies and no exposures. It’s therefore impossible to know how the user was exposed to your ads during the lookback window prior to a conversion.
+ "includeUnattributedCookieConversions": True or False, # Include conversions of users with a DoubleClick cookie but without an exposure. That means the user did not click or see an ad from the advertiser within the Floodlight group, or that the interaction happened outside the lookback window.
+ "includeAttributedIPConversions": True or False, # Include conversions that have no cookie, but do have an exposure path.
+ },
+ },
+ "activeGrpCriteria": { # The report criteria for a report of type "ACTIVE_GRP".
+ "dateRange": { # Represents a date range. # The date range this report should be run for.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+ # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+ # A valid active GRP report needs to have exactly one DimensionValue for the United States in addition to any advertiser or campaign dimension values.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "dimensions": [ # The list of dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ },
+ "delivery": { # The report's email delivery settings.
+ "message": "A String", # The message to be sent with each email.
+ "emailOwnerDeliveryType": "A String", # The type of delivery for the owner to receive, if enabled. One of:
+ # - "ATTACHMENT"
+ # - "LINK"
+ "recipients": [ # The list of recipients to which to email the report.
+ { # Represents a recipient.
+ "kind": "dfareporting#recipient", # The kind of resource this is, in this case dfareporting#recipient.
+ "deliveryType": "A String", # The delivery type for the recipient, one of:
+ # - "ATTACHMENT"
+ # - "LINK"
+ "email": "A String", # The email address of the recipient.
+ },
+ ],
+ "emailOwner": True or False, # Whether the report should be emailed to the report owner.
+ },
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "criteria": { # The report criteria for a report of type "STANDARD".
+ "activities": { # Represents an activity group. # Activity group.
+ "kind": "dfareporting#activities", # The kind of resource this is, in this case dfareporting#activities.
+ "filters": [ # List of activity filters. The dimension values need to be all either of type "dfa:activity" or "dfa:activityGroup".
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "metricNames": [ # List of names of floodlight activity metrics.
+ "A String",
+ ],
+ },
+ "dimensions": [ # The list of standard dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dateRange": { # Represents a date range. # The date range for which this report should be run.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+ # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "customRichMediaEvents": { # Represents a Custom Rich Media Events group. # Custom Rich Media Events group.
+ "kind": "dfareporting#customRichMediaEvents", # The kind of resource this is, in this case dfareporting#customRichMediaEvents.
+ "filteredEventIds": [ # List of custom rich media event IDs. Dimension values must be all of type dfa:richMediaEventTypeIdAndName.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ },
+ },
+ "id": "A String", # The unique ID identifying this report resource.
+ "lastModifiedTime": "A String", # The timestamp (in milliseconds since epoch) of when this report was last modified.
+ "fileName": "A String", # The file name used when generating report files for this report.
+ "type": "A String", # The type of the report, one of:
+ # - STANDARD
+ # - REACH
+ # - ACTIVE_GRP
+ # - PATH_TO_CONVERSION
+ # - FLOODLIGHT
+ # - CROSS_DIMENSION_REACH
+ "crossDimensionReachCriteria": { # The report criteria for a report of type "CROSS_DIMENSION_REACH".
+ "breakdown": [ # The list of dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "overlapMetricNames": [ # The list of names of overlap metrics the report should include.
+ "A String",
+ ],
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dateRange": { # Represents a date range. # The date range this report should be run for.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "pivoted": True or False, # Whether the report is pivoted or not. Defaults to true.
+ "dimension": "A String", # The dimension option, one of:
+ # - "ADVERTISER"
+ # - "CAMPAIGN"
+ # - "SITE_BY_ADVERTISER"
+ # - "SITE_BY_CAMPAIGN"
+ },
+ "accountId": "A String", # The account ID to which this report belongs.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="list">list(profileId, pageToken=None, maxResults=None, sortOrder=None, sortField=None, scope=None)</code>
+ <pre>Retrieves list of reports.
+
+Args:
+ profileId: string, The DFA user profile ID. (required)
+ pageToken: string, The value of the nextToken from the previous result page.
+ maxResults: integer, Maximum number of results to return.
+ sortOrder: string, Order of sorted results, default is 'DESCENDING'.
+ Allowed values
+ ASCENDING - Ascending order.
+ DESCENDING - Descending order.
+ sortField: string, The field by which to sort the list.
+ Allowed values
+ ID - Sort by report ID.
+ LAST_MODIFIED_TIME - Sort by 'lastModifiedTime' field.
+ NAME - Sort by name of reports.
+ scope: string, The scope that defines which results are returned, default is 'MINE'.
+ Allowed values
+ ALL - All reports in account.
+ MINE - My reports.
+
+Returns:
+ An object of the form:
+
+ { # Represents the list of reports.
+ "nextPageToken": "A String", # Continuation token used to page through reports. To retrieve the next page of results, set the next request's "pageToken" to the value of this field. The page token is only valid for a limited amount of time and should not be persisted.
+ "items": [ # The reports returned in this response.
+ { # Represents a Report resource.
+ "pathToConversionCriteria": { # The report criteria for a report of type "PATH_TO_CONVERSION".
+ "conversionDimensions": [ # The list of conversion dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dateRange": { # Represents a date range. # The date range this report should be run for.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "reportProperties": { # The properties of the report.
+ "clicksLookbackWindow": 42, # DFA checks to see if a click interaction occurred within the specified period of time before a conversion. By default the value is pulled from Floodlight or you can manually enter a custom value. Valid values: 1-90.
+ "pivotOnInteractionPath": True or False, # Enable pivoting on interaction path.
+ "impressionsLookbackWindow": 42, # DFA checks to see if an impression interaction occurred within the specified period of time before a conversion. By default the value is pulled from Floodlight or you can manually enter a custom value. Valid values: 1-90.
+ "includeUnattributedIPConversions": True or False, # Include conversions that have no associated cookies and no exposures. It’s therefore impossible to know how the user was exposed to your ads during the lookback window prior to a conversion.
+ "includeUnattributedCookieConversions": True or False, # Include conversions of users with a DoubleClick cookie but without an exposure. That means the user did not click or see an ad from the advertiser within the Floodlight group, or that the interaction happened outside the lookback window.
+ "maximumInteractionGap": 42, # The maximum amount of time that can take place between interactions (clicks or impressions) by the same user. Valid values: 1-90.
+ "includeAttributedIPConversions": True or False, # Deprecated: has no effect.
+ "maximumClickInteractions": 42, # The maximum number of click interactions to include in the report. Advertisers currently paying for E2C reports get up to 200 (100 clicks, 100 impressions). If another advertiser in your network is paying for E2C, you can have up to 5 total exposures per report.
+ "maximumImpressionInteractions": 42, # The maximum number of click interactions to include in the report. Advertisers currently paying for E2C reports get up to 200 (100 clicks, 100 impressions). If another advertiser in your network is paying for E2C, you can have up to 5 total exposures per report.
+ },
+ "perInteractionDimensions": [ # The list of per interaction dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "activityFilters": [ # The list of 'dfa:activity' values to filter on.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "customRichMediaEvents": [ # The list of custom rich media events to include.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "floodlightConfigId": { # Represents a DimensionValue resource. # The floodlight ID for which to show data in this report. All advertisers associated with that ID will automatically be added. The dimension of the value needs to be 'dfa:floodlightConfigId'.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ "customFloodlightVariables": [ # The list of custom floodlight variables the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ },
+ "kind": "dfareporting#report", # The kind of resource this is, in this case dfareporting#report.
+ "subAccountId": "A String", # The subbaccount ID to which this report belongs if applicable.
+ "name": "A String", # The name of the report.
+ "schedule": { # The report's schedule. Can only be set if the report's 'dateRange' is a relative date range and the relative date range is not "TODAY".
+ "startDate": "A String", # Start date of date range for which scheduled reports should be run.
+ "runsOnDayOfMonth": "A String", # Enum to define for "MONTHLY" scheduled reports whether reports should be repeated on the same day of the month as "startDate" or the same day of the week of the month. Possible values are:
+ # - DAY_OF_MONTH
+ # - WEEK_OF_MONTH
+ # Example: If 'startDate' is Monday, April 2nd 2012 (2012-04-02), "DAY_OF_MONTH" would run subsequent reports on the 2nd of every Month, and "WEEK_OF_MONTH" would run subsequent reports on the first Monday of the month.
+ "every": 42, # Defines every how many days, weeks or months the report should be run. Needs to be set when "repeats" is either "DAILY", "WEEKLY" or "MONTHLY".
+ "expirationDate": "A String", # The expiration date when the scheduled report stops running.
+ "active": True or False, # Whether the schedule is active or not. Must be set to either true or false.
+ "repeats": "A String", # The interval for which the report is repeated, one of:
+ # - "DAILY", also requires field "every" to be set.
+ # - "WEEKLY", also requires fields "every" and "repeatsOnWeekDays" to be set.
+ # - "TWICE_A_MONTH"
+ # - "MONTHLY", also requires fields "every" and "runsOnDayOfMonth" to be set.
+ # - "QUARTERLY"
+ # - "YEARLY"
+ "repeatsOnWeekDays": [ # List of week days "WEEKLY" on which scheduled reports should run.
+ "A String",
+ ],
+ },
+ "format": "A String", # The output format of the report, one of:
+ # - "CSV"
+ # - "EXCEL" If not specified, default format is "CSV". Note that the actual format in the completed report file might differ if for instance the report's size exceeds the format's capabilities. "CSV" will then be the fallback format.
+ "ownerProfileId": "A String", # The user profile id of the owner of this report.
+ "reachCriteria": { # The report criteria for a report of type "REACH".
+ "activities": { # Represents an activity group. # Activity group.
+ "kind": "dfareporting#activities", # The kind of resource this is, in this case dfareporting#activities.
+ "filters": [ # List of activity filters. The dimension values need to be all either of type "dfa:activity" or "dfa:activityGroup".
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "metricNames": [ # List of names of floodlight activity metrics.
+ "A String",
+ ],
+ },
+ "dimensions": [ # The list of dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dateRange": { # Represents a date range. # The date range this report should be run for.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+ # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "reachByFrequencyMetricNames": [ # The list of names of Reach By Frequency metrics the report should include.
+ "A String",
+ ],
+ "customRichMediaEvents": { # Represents a Custom Rich Media Events group. # Custom Rich Media Events group.
+ "kind": "dfareporting#customRichMediaEvents", # The kind of resource this is, in this case dfareporting#customRichMediaEvents.
+ "filteredEventIds": [ # List of custom rich media event IDs. Dimension values must be all of type dfa:richMediaEventTypeIdAndName.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ },
+ },
+ "floodlightCriteria": { # The report criteria for a report of type "FLOODLIGHT".
+ "dimensions": [ # The list of dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dateRange": { # Represents a date range. # The date range this report should be run for.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+ # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "floodlightConfigId": { # Represents a DimensionValue resource. # The floodlight ID for which to show data in this report. All advertisers associated with that ID will automatically be added. The dimension of the value needs to be 'dfa:floodlightConfigId'.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ "customRichMediaEvents": [ # The list of custom rich media events to include.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "reportProperties": { # The properties of the report.
+ "includeUnattributedIPConversions": True or False, # Include conversions that have no associated cookies and no exposures. It’s therefore impossible to know how the user was exposed to your ads during the lookback window prior to a conversion.
+ "includeUnattributedCookieConversions": True or False, # Include conversions of users with a DoubleClick cookie but without an exposure. That means the user did not click or see an ad from the advertiser within the Floodlight group, or that the interaction happened outside the lookback window.
+ "includeAttributedIPConversions": True or False, # Include conversions that have no cookie, but do have an exposure path.
+ },
+ },
+ "activeGrpCriteria": { # The report criteria for a report of type "ACTIVE_GRP".
+ "dateRange": { # Represents a date range. # The date range this report should be run for.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+ # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+ # A valid active GRP report needs to have exactly one DimensionValue for the United States in addition to any advertiser or campaign dimension values.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "dimensions": [ # The list of dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ },
+ "delivery": { # The report's email delivery settings.
+ "message": "A String", # The message to be sent with each email.
+ "emailOwnerDeliveryType": "A String", # The type of delivery for the owner to receive, if enabled. One of:
+ # - "ATTACHMENT"
+ # - "LINK"
+ "recipients": [ # The list of recipients to which to email the report.
+ { # Represents a recipient.
+ "kind": "dfareporting#recipient", # The kind of resource this is, in this case dfareporting#recipient.
+ "deliveryType": "A String", # The delivery type for the recipient, one of:
+ # - "ATTACHMENT"
+ # - "LINK"
+ "email": "A String", # The email address of the recipient.
+ },
+ ],
+ "emailOwner": True or False, # Whether the report should be emailed to the report owner.
+ },
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "criteria": { # The report criteria for a report of type "STANDARD".
+ "activities": { # Represents an activity group. # Activity group.
+ "kind": "dfareporting#activities", # The kind of resource this is, in this case dfareporting#activities.
+ "filters": [ # List of activity filters. The dimension values need to be all either of type "dfa:activity" or "dfa:activityGroup".
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "metricNames": [ # List of names of floodlight activity metrics.
+ "A String",
+ ],
+ },
+ "dimensions": [ # The list of standard dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dateRange": { # Represents a date range. # The date range for which this report should be run.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+ # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "customRichMediaEvents": { # Represents a Custom Rich Media Events group. # Custom Rich Media Events group.
+ "kind": "dfareporting#customRichMediaEvents", # The kind of resource this is, in this case dfareporting#customRichMediaEvents.
+ "filteredEventIds": [ # List of custom rich media event IDs. Dimension values must be all of type dfa:richMediaEventTypeIdAndName.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ },
+ },
+ "id": "A String", # The unique ID identifying this report resource.
+ "lastModifiedTime": "A String", # The timestamp (in milliseconds since epoch) of when this report was last modified.
+ "fileName": "A String", # The file name used when generating report files for this report.
+ "type": "A String", # The type of the report, one of:
+ # - STANDARD
+ # - REACH
+ # - ACTIVE_GRP
+ # - PATH_TO_CONVERSION
+ # - FLOODLIGHT
+ # - CROSS_DIMENSION_REACH
+ "crossDimensionReachCriteria": { # The report criteria for a report of type "CROSS_DIMENSION_REACH".
+ "breakdown": [ # The list of dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "overlapMetricNames": [ # The list of names of overlap metrics the report should include.
+ "A String",
+ ],
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dateRange": { # Represents a date range. # The date range this report should be run for.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "pivoted": True or False, # Whether the report is pivoted or not. Defaults to true.
+ "dimension": "A String", # The dimension option, one of:
+ # - "ADVERTISER"
+ # - "CAMPAIGN"
+ # - "SITE_BY_ADVERTISER"
+ # - "SITE_BY_CAMPAIGN"
+ },
+ "accountId": "A String", # The account ID to which this report belongs.
+ },
+ ],
+ "kind": "dfareporting#reportList", # The kind of list this is, in this case dfareporting#reportList.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ }</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(profileId, reportId, body)</code>
+ <pre>Updates a report. This method supports patch semantics.
+
+Args:
+ profileId: string, The DFA user profile ID. (required)
+ reportId: string, The ID of the report. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # Represents a Report resource.
+ "pathToConversionCriteria": { # The report criteria for a report of type "PATH_TO_CONVERSION".
+ "conversionDimensions": [ # The list of conversion dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dateRange": { # Represents a date range. # The date range this report should be run for.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "reportProperties": { # The properties of the report.
+ "clicksLookbackWindow": 42, # DFA checks to see if a click interaction occurred within the specified period of time before a conversion. By default the value is pulled from Floodlight or you can manually enter a custom value. Valid values: 1-90.
+ "pivotOnInteractionPath": True or False, # Enable pivoting on interaction path.
+ "impressionsLookbackWindow": 42, # DFA checks to see if an impression interaction occurred within the specified period of time before a conversion. By default the value is pulled from Floodlight or you can manually enter a custom value. Valid values: 1-90.
+ "includeUnattributedIPConversions": True or False, # Include conversions that have no associated cookies and no exposures. It’s therefore impossible to know how the user was exposed to your ads during the lookback window prior to a conversion.
+ "includeUnattributedCookieConversions": True or False, # Include conversions of users with a DoubleClick cookie but without an exposure. That means the user did not click or see an ad from the advertiser within the Floodlight group, or that the interaction happened outside the lookback window.
+ "maximumInteractionGap": 42, # The maximum amount of time that can take place between interactions (clicks or impressions) by the same user. Valid values: 1-90.
+ "includeAttributedIPConversions": True or False, # Deprecated: has no effect.
+ "maximumClickInteractions": 42, # The maximum number of click interactions to include in the report. Advertisers currently paying for E2C reports get up to 200 (100 clicks, 100 impressions). If another advertiser in your network is paying for E2C, you can have up to 5 total exposures per report.
+ "maximumImpressionInteractions": 42, # The maximum number of click interactions to include in the report. Advertisers currently paying for E2C reports get up to 200 (100 clicks, 100 impressions). If another advertiser in your network is paying for E2C, you can have up to 5 total exposures per report.
+ },
+ "perInteractionDimensions": [ # The list of per interaction dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "activityFilters": [ # The list of 'dfa:activity' values to filter on.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "customRichMediaEvents": [ # The list of custom rich media events to include.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "floodlightConfigId": { # Represents a DimensionValue resource. # The floodlight ID for which to show data in this report. All advertisers associated with that ID will automatically be added. The dimension of the value needs to be 'dfa:floodlightConfigId'.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ "customFloodlightVariables": [ # The list of custom floodlight variables the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ },
+ "kind": "dfareporting#report", # The kind of resource this is, in this case dfareporting#report.
+ "subAccountId": "A String", # The subbaccount ID to which this report belongs if applicable.
+ "name": "A String", # The name of the report.
+ "schedule": { # The report's schedule. Can only be set if the report's 'dateRange' is a relative date range and the relative date range is not "TODAY".
+ "startDate": "A String", # Start date of date range for which scheduled reports should be run.
+ "runsOnDayOfMonth": "A String", # Enum to define for "MONTHLY" scheduled reports whether reports should be repeated on the same day of the month as "startDate" or the same day of the week of the month. Possible values are:
+ # - DAY_OF_MONTH
+ # - WEEK_OF_MONTH
+ # Example: If 'startDate' is Monday, April 2nd 2012 (2012-04-02), "DAY_OF_MONTH" would run subsequent reports on the 2nd of every Month, and "WEEK_OF_MONTH" would run subsequent reports on the first Monday of the month.
+ "every": 42, # Defines every how many days, weeks or months the report should be run. Needs to be set when "repeats" is either "DAILY", "WEEKLY" or "MONTHLY".
+ "expirationDate": "A String", # The expiration date when the scheduled report stops running.
+ "active": True or False, # Whether the schedule is active or not. Must be set to either true or false.
+ "repeats": "A String", # The interval for which the report is repeated, one of:
+ # - "DAILY", also requires field "every" to be set.
+ # - "WEEKLY", also requires fields "every" and "repeatsOnWeekDays" to be set.
+ # - "TWICE_A_MONTH"
+ # - "MONTHLY", also requires fields "every" and "runsOnDayOfMonth" to be set.
+ # - "QUARTERLY"
+ # - "YEARLY"
+ "repeatsOnWeekDays": [ # List of week days "WEEKLY" on which scheduled reports should run.
+ "A String",
+ ],
+ },
+ "format": "A String", # The output format of the report, one of:
+ # - "CSV"
+ # - "EXCEL" If not specified, default format is "CSV". Note that the actual format in the completed report file might differ if for instance the report's size exceeds the format's capabilities. "CSV" will then be the fallback format.
+ "ownerProfileId": "A String", # The user profile id of the owner of this report.
+ "reachCriteria": { # The report criteria for a report of type "REACH".
+ "activities": { # Represents an activity group. # Activity group.
+ "kind": "dfareporting#activities", # The kind of resource this is, in this case dfareporting#activities.
+ "filters": [ # List of activity filters. The dimension values need to be all either of type "dfa:activity" or "dfa:activityGroup".
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "metricNames": [ # List of names of floodlight activity metrics.
+ "A String",
+ ],
+ },
+ "dimensions": [ # The list of dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dateRange": { # Represents a date range. # The date range this report should be run for.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+ # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "reachByFrequencyMetricNames": [ # The list of names of Reach By Frequency metrics the report should include.
+ "A String",
+ ],
+ "customRichMediaEvents": { # Represents a Custom Rich Media Events group. # Custom Rich Media Events group.
+ "kind": "dfareporting#customRichMediaEvents", # The kind of resource this is, in this case dfareporting#customRichMediaEvents.
+ "filteredEventIds": [ # List of custom rich media event IDs. Dimension values must be all of type dfa:richMediaEventTypeIdAndName.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ },
+ },
+ "floodlightCriteria": { # The report criteria for a report of type "FLOODLIGHT".
+ "dimensions": [ # The list of dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dateRange": { # Represents a date range. # The date range this report should be run for.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+ # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "floodlightConfigId": { # Represents a DimensionValue resource. # The floodlight ID for which to show data in this report. All advertisers associated with that ID will automatically be added. The dimension of the value needs to be 'dfa:floodlightConfigId'.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ "customRichMediaEvents": [ # The list of custom rich media events to include.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "reportProperties": { # The properties of the report.
+ "includeUnattributedIPConversions": True or False, # Include conversions that have no associated cookies and no exposures. It’s therefore impossible to know how the user was exposed to your ads during the lookback window prior to a conversion.
+ "includeUnattributedCookieConversions": True or False, # Include conversions of users with a DoubleClick cookie but without an exposure. That means the user did not click or see an ad from the advertiser within the Floodlight group, or that the interaction happened outside the lookback window.
+ "includeAttributedIPConversions": True or False, # Include conversions that have no cookie, but do have an exposure path.
+ },
+ },
+ "activeGrpCriteria": { # The report criteria for a report of type "ACTIVE_GRP".
+ "dateRange": { # Represents a date range. # The date range this report should be run for.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+ # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+ # A valid active GRP report needs to have exactly one DimensionValue for the United States in addition to any advertiser or campaign dimension values.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "dimensions": [ # The list of dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ },
+ "delivery": { # The report's email delivery settings.
+ "message": "A String", # The message to be sent with each email.
+ "emailOwnerDeliveryType": "A String", # The type of delivery for the owner to receive, if enabled. One of:
+ # - "ATTACHMENT"
+ # - "LINK"
+ "recipients": [ # The list of recipients to which to email the report.
+ { # Represents a recipient.
+ "kind": "dfareporting#recipient", # The kind of resource this is, in this case dfareporting#recipient.
+ "deliveryType": "A String", # The delivery type for the recipient, one of:
+ # - "ATTACHMENT"
+ # - "LINK"
+ "email": "A String", # The email address of the recipient.
+ },
+ ],
+ "emailOwner": True or False, # Whether the report should be emailed to the report owner.
+ },
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "criteria": { # The report criteria for a report of type "STANDARD".
+ "activities": { # Represents an activity group. # Activity group.
+ "kind": "dfareporting#activities", # The kind of resource this is, in this case dfareporting#activities.
+ "filters": [ # List of activity filters. The dimension values need to be all either of type "dfa:activity" or "dfa:activityGroup".
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "metricNames": [ # List of names of floodlight activity metrics.
+ "A String",
+ ],
+ },
+ "dimensions": [ # The list of standard dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dateRange": { # Represents a date range. # The date range for which this report should be run.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+ # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "customRichMediaEvents": { # Represents a Custom Rich Media Events group. # Custom Rich Media Events group.
+ "kind": "dfareporting#customRichMediaEvents", # The kind of resource this is, in this case dfareporting#customRichMediaEvents.
+ "filteredEventIds": [ # List of custom rich media event IDs. Dimension values must be all of type dfa:richMediaEventTypeIdAndName.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ },
+ },
+ "id": "A String", # The unique ID identifying this report resource.
+ "lastModifiedTime": "A String", # The timestamp (in milliseconds since epoch) of when this report was last modified.
+ "fileName": "A String", # The file name used when generating report files for this report.
+ "type": "A String", # The type of the report, one of:
+ # - STANDARD
+ # - REACH
+ # - ACTIVE_GRP
+ # - PATH_TO_CONVERSION
+ # - FLOODLIGHT
+ # - CROSS_DIMENSION_REACH
+ "crossDimensionReachCriteria": { # The report criteria for a report of type "CROSS_DIMENSION_REACH".
+ "breakdown": [ # The list of dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "overlapMetricNames": [ # The list of names of overlap metrics the report should include.
+ "A String",
+ ],
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dateRange": { # Represents a date range. # The date range this report should be run for.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "pivoted": True or False, # Whether the report is pivoted or not. Defaults to true.
+ "dimension": "A String", # The dimension option, one of:
+ # - "ADVERTISER"
+ # - "CAMPAIGN"
+ # - "SITE_BY_ADVERTISER"
+ # - "SITE_BY_CAMPAIGN"
+ },
+ "accountId": "A String", # The account ID to which this report belongs.
+ }
+
+
+Returns:
+ An object of the form:
+
+ { # Represents a Report resource.
+ "pathToConversionCriteria": { # The report criteria for a report of type "PATH_TO_CONVERSION".
+ "conversionDimensions": [ # The list of conversion dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dateRange": { # Represents a date range. # The date range this report should be run for.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "reportProperties": { # The properties of the report.
+ "clicksLookbackWindow": 42, # DFA checks to see if a click interaction occurred within the specified period of time before a conversion. By default the value is pulled from Floodlight or you can manually enter a custom value. Valid values: 1-90.
+ "pivotOnInteractionPath": True or False, # Enable pivoting on interaction path.
+ "impressionsLookbackWindow": 42, # DFA checks to see if an impression interaction occurred within the specified period of time before a conversion. By default the value is pulled from Floodlight or you can manually enter a custom value. Valid values: 1-90.
+ "includeUnattributedIPConversions": True or False, # Include conversions that have no associated cookies and no exposures. It’s therefore impossible to know how the user was exposed to your ads during the lookback window prior to a conversion.
+ "includeUnattributedCookieConversions": True or False, # Include conversions of users with a DoubleClick cookie but without an exposure. That means the user did not click or see an ad from the advertiser within the Floodlight group, or that the interaction happened outside the lookback window.
+ "maximumInteractionGap": 42, # The maximum amount of time that can take place between interactions (clicks or impressions) by the same user. Valid values: 1-90.
+ "includeAttributedIPConversions": True or False, # Deprecated: has no effect.
+ "maximumClickInteractions": 42, # The maximum number of click interactions to include in the report. Advertisers currently paying for E2C reports get up to 200 (100 clicks, 100 impressions). If another advertiser in your network is paying for E2C, you can have up to 5 total exposures per report.
+ "maximumImpressionInteractions": 42, # The maximum number of click interactions to include in the report. Advertisers currently paying for E2C reports get up to 200 (100 clicks, 100 impressions). If another advertiser in your network is paying for E2C, you can have up to 5 total exposures per report.
+ },
+ "perInteractionDimensions": [ # The list of per interaction dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "activityFilters": [ # The list of 'dfa:activity' values to filter on.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "customRichMediaEvents": [ # The list of custom rich media events to include.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "floodlightConfigId": { # Represents a DimensionValue resource. # The floodlight ID for which to show data in this report. All advertisers associated with that ID will automatically be added. The dimension of the value needs to be 'dfa:floodlightConfigId'.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ "customFloodlightVariables": [ # The list of custom floodlight variables the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ },
+ "kind": "dfareporting#report", # The kind of resource this is, in this case dfareporting#report.
+ "subAccountId": "A String", # The subbaccount ID to which this report belongs if applicable.
+ "name": "A String", # The name of the report.
+ "schedule": { # The report's schedule. Can only be set if the report's 'dateRange' is a relative date range and the relative date range is not "TODAY".
+ "startDate": "A String", # Start date of date range for which scheduled reports should be run.
+ "runsOnDayOfMonth": "A String", # Enum to define for "MONTHLY" scheduled reports whether reports should be repeated on the same day of the month as "startDate" or the same day of the week of the month. Possible values are:
+ # - DAY_OF_MONTH
+ # - WEEK_OF_MONTH
+ # Example: If 'startDate' is Monday, April 2nd 2012 (2012-04-02), "DAY_OF_MONTH" would run subsequent reports on the 2nd of every Month, and "WEEK_OF_MONTH" would run subsequent reports on the first Monday of the month.
+ "every": 42, # Defines every how many days, weeks or months the report should be run. Needs to be set when "repeats" is either "DAILY", "WEEKLY" or "MONTHLY".
+ "expirationDate": "A String", # The expiration date when the scheduled report stops running.
+ "active": True or False, # Whether the schedule is active or not. Must be set to either true or false.
+ "repeats": "A String", # The interval for which the report is repeated, one of:
+ # - "DAILY", also requires field "every" to be set.
+ # - "WEEKLY", also requires fields "every" and "repeatsOnWeekDays" to be set.
+ # - "TWICE_A_MONTH"
+ # - "MONTHLY", also requires fields "every" and "runsOnDayOfMonth" to be set.
+ # - "QUARTERLY"
+ # - "YEARLY"
+ "repeatsOnWeekDays": [ # List of week days "WEEKLY" on which scheduled reports should run.
+ "A String",
+ ],
+ },
+ "format": "A String", # The output format of the report, one of:
+ # - "CSV"
+ # - "EXCEL" If not specified, default format is "CSV". Note that the actual format in the completed report file might differ if for instance the report's size exceeds the format's capabilities. "CSV" will then be the fallback format.
+ "ownerProfileId": "A String", # The user profile id of the owner of this report.
+ "reachCriteria": { # The report criteria for a report of type "REACH".
+ "activities": { # Represents an activity group. # Activity group.
+ "kind": "dfareporting#activities", # The kind of resource this is, in this case dfareporting#activities.
+ "filters": [ # List of activity filters. The dimension values need to be all either of type "dfa:activity" or "dfa:activityGroup".
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "metricNames": [ # List of names of floodlight activity metrics.
+ "A String",
+ ],
+ },
+ "dimensions": [ # The list of dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dateRange": { # Represents a date range. # The date range this report should be run for.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+ # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "reachByFrequencyMetricNames": [ # The list of names of Reach By Frequency metrics the report should include.
+ "A String",
+ ],
+ "customRichMediaEvents": { # Represents a Custom Rich Media Events group. # Custom Rich Media Events group.
+ "kind": "dfareporting#customRichMediaEvents", # The kind of resource this is, in this case dfareporting#customRichMediaEvents.
+ "filteredEventIds": [ # List of custom rich media event IDs. Dimension values must be all of type dfa:richMediaEventTypeIdAndName.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ },
+ },
+ "floodlightCriteria": { # The report criteria for a report of type "FLOODLIGHT".
+ "dimensions": [ # The list of dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dateRange": { # Represents a date range. # The date range this report should be run for.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+ # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "floodlightConfigId": { # Represents a DimensionValue resource. # The floodlight ID for which to show data in this report. All advertisers associated with that ID will automatically be added. The dimension of the value needs to be 'dfa:floodlightConfigId'.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ "customRichMediaEvents": [ # The list of custom rich media events to include.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "reportProperties": { # The properties of the report.
+ "includeUnattributedIPConversions": True or False, # Include conversions that have no associated cookies and no exposures. It’s therefore impossible to know how the user was exposed to your ads during the lookback window prior to a conversion.
+ "includeUnattributedCookieConversions": True or False, # Include conversions of users with a DoubleClick cookie but without an exposure. That means the user did not click or see an ad from the advertiser within the Floodlight group, or that the interaction happened outside the lookback window.
+ "includeAttributedIPConversions": True or False, # Include conversions that have no cookie, but do have an exposure path.
+ },
+ },
+ "activeGrpCriteria": { # The report criteria for a report of type "ACTIVE_GRP".
+ "dateRange": { # Represents a date range. # The date range this report should be run for.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+ # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+ # A valid active GRP report needs to have exactly one DimensionValue for the United States in addition to any advertiser or campaign dimension values.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "dimensions": [ # The list of dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ },
+ "delivery": { # The report's email delivery settings.
+ "message": "A String", # The message to be sent with each email.
+ "emailOwnerDeliveryType": "A String", # The type of delivery for the owner to receive, if enabled. One of:
+ # - "ATTACHMENT"
+ # - "LINK"
+ "recipients": [ # The list of recipients to which to email the report.
+ { # Represents a recipient.
+ "kind": "dfareporting#recipient", # The kind of resource this is, in this case dfareporting#recipient.
+ "deliveryType": "A String", # The delivery type for the recipient, one of:
+ # - "ATTACHMENT"
+ # - "LINK"
+ "email": "A String", # The email address of the recipient.
+ },
+ ],
+ "emailOwner": True or False, # Whether the report should be emailed to the report owner.
+ },
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "criteria": { # The report criteria for a report of type "STANDARD".
+ "activities": { # Represents an activity group. # Activity group.
+ "kind": "dfareporting#activities", # The kind of resource this is, in this case dfareporting#activities.
+ "filters": [ # List of activity filters. The dimension values need to be all either of type "dfa:activity" or "dfa:activityGroup".
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "metricNames": [ # List of names of floodlight activity metrics.
+ "A String",
+ ],
+ },
+ "dimensions": [ # The list of standard dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dateRange": { # Represents a date range. # The date range for which this report should be run.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+ # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "customRichMediaEvents": { # Represents a Custom Rich Media Events group. # Custom Rich Media Events group.
+ "kind": "dfareporting#customRichMediaEvents", # The kind of resource this is, in this case dfareporting#customRichMediaEvents.
+ "filteredEventIds": [ # List of custom rich media event IDs. Dimension values must be all of type dfa:richMediaEventTypeIdAndName.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ },
+ },
+ "id": "A String", # The unique ID identifying this report resource.
+ "lastModifiedTime": "A String", # The timestamp (in milliseconds since epoch) of when this report was last modified.
+ "fileName": "A String", # The file name used when generating report files for this report.
+ "type": "A String", # The type of the report, one of:
+ # - STANDARD
+ # - REACH
+ # - ACTIVE_GRP
+ # - PATH_TO_CONVERSION
+ # - FLOODLIGHT
+ # - CROSS_DIMENSION_REACH
+ "crossDimensionReachCriteria": { # The report criteria for a report of type "CROSS_DIMENSION_REACH".
+ "breakdown": [ # The list of dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "overlapMetricNames": [ # The list of names of overlap metrics the report should include.
+ "A String",
+ ],
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dateRange": { # Represents a date range. # The date range this report should be run for.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "pivoted": True or False, # Whether the report is pivoted or not. Defaults to true.
+ "dimension": "A String", # The dimension option, one of:
+ # - "ADVERTISER"
+ # - "CAMPAIGN"
+ # - "SITE_BY_ADVERTISER"
+ # - "SITE_BY_CAMPAIGN"
+ },
+ "accountId": "A String", # The account ID to which this report belongs.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="run">run(profileId, reportId, synchronous=None)</code>
+ <pre>Runs a report.
+
+Args:
+ profileId: string, The DFA profile ID. (required)
+ reportId: string, The ID of the report. (required)
+ synchronous: boolean, If set and true, tries to run the report synchronously.
+
+Returns:
+ An object of the form:
+
+ { # Represents a File resource. A File contains the meta-data for a report run. It shows the status of the run and holds the urls to the generated report data if the run is finished and the status is "REPORT_AVAILABLE".
+ "status": "A String", # The status of the report file, one of:
+ # - "PROCESSING"
+ # - "REPORT_AVAILABLE"
+ # - "FAILED"
+ # - "CANCELLED"
+ "kind": "dfareporting#file", # The kind of resource this is, in this case dfareporting#file.
+ "format": "A String", # The output format of the report. Only available once the file is available.
+ "dateRange": { # Represents a date range. # The date range for which the file has report data. The date range will always be the absolute date range for which the report is run.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "fileName": "A String", # The file name of the file.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "reportId": "A String", # The ID of the report this file was generated from.
+ "urls": { # The urls where the completed report file can be downloaded.
+ "browserUrl": "A String", # The url for downloading the report data through a browser.
+ "apiUrl": "A String", # The url for downloading the report data through the API.
+ },
+ "lastModifiedTime": "A String", # The timestamp in milliseconds since epoch when this file was last modified.
+ "id": "A String", # The unique ID of this report file.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="update">update(profileId, reportId, body)</code>
+ <pre>Updates a report.
+
+Args:
+ profileId: string, The DFA user profile ID. (required)
+ reportId: string, The ID of the report. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # Represents a Report resource.
+ "pathToConversionCriteria": { # The report criteria for a report of type "PATH_TO_CONVERSION".
+ "conversionDimensions": [ # The list of conversion dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dateRange": { # Represents a date range. # The date range this report should be run for.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "reportProperties": { # The properties of the report.
+ "clicksLookbackWindow": 42, # DFA checks to see if a click interaction occurred within the specified period of time before a conversion. By default the value is pulled from Floodlight or you can manually enter a custom value. Valid values: 1-90.
+ "pivotOnInteractionPath": True or False, # Enable pivoting on interaction path.
+ "impressionsLookbackWindow": 42, # DFA checks to see if an impression interaction occurred within the specified period of time before a conversion. By default the value is pulled from Floodlight or you can manually enter a custom value. Valid values: 1-90.
+ "includeUnattributedIPConversions": True or False, # Include conversions that have no associated cookies and no exposures. It’s therefore impossible to know how the user was exposed to your ads during the lookback window prior to a conversion.
+ "includeUnattributedCookieConversions": True or False, # Include conversions of users with a DoubleClick cookie but without an exposure. That means the user did not click or see an ad from the advertiser within the Floodlight group, or that the interaction happened outside the lookback window.
+ "maximumInteractionGap": 42, # The maximum amount of time that can take place between interactions (clicks or impressions) by the same user. Valid values: 1-90.
+ "includeAttributedIPConversions": True or False, # Deprecated: has no effect.
+ "maximumClickInteractions": 42, # The maximum number of click interactions to include in the report. Advertisers currently paying for E2C reports get up to 200 (100 clicks, 100 impressions). If another advertiser in your network is paying for E2C, you can have up to 5 total exposures per report.
+ "maximumImpressionInteractions": 42, # The maximum number of click interactions to include in the report. Advertisers currently paying for E2C reports get up to 200 (100 clicks, 100 impressions). If another advertiser in your network is paying for E2C, you can have up to 5 total exposures per report.
+ },
+ "perInteractionDimensions": [ # The list of per interaction dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "activityFilters": [ # The list of 'dfa:activity' values to filter on.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "customRichMediaEvents": [ # The list of custom rich media events to include.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "floodlightConfigId": { # Represents a DimensionValue resource. # The floodlight ID for which to show data in this report. All advertisers associated with that ID will automatically be added. The dimension of the value needs to be 'dfa:floodlightConfigId'.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ "customFloodlightVariables": [ # The list of custom floodlight variables the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ },
+ "kind": "dfareporting#report", # The kind of resource this is, in this case dfareporting#report.
+ "subAccountId": "A String", # The subbaccount ID to which this report belongs if applicable.
+ "name": "A String", # The name of the report.
+ "schedule": { # The report's schedule. Can only be set if the report's 'dateRange' is a relative date range and the relative date range is not "TODAY".
+ "startDate": "A String", # Start date of date range for which scheduled reports should be run.
+ "runsOnDayOfMonth": "A String", # Enum to define for "MONTHLY" scheduled reports whether reports should be repeated on the same day of the month as "startDate" or the same day of the week of the month. Possible values are:
+ # - DAY_OF_MONTH
+ # - WEEK_OF_MONTH
+ # Example: If 'startDate' is Monday, April 2nd 2012 (2012-04-02), "DAY_OF_MONTH" would run subsequent reports on the 2nd of every Month, and "WEEK_OF_MONTH" would run subsequent reports on the first Monday of the month.
+ "every": 42, # Defines every how many days, weeks or months the report should be run. Needs to be set when "repeats" is either "DAILY", "WEEKLY" or "MONTHLY".
+ "expirationDate": "A String", # The expiration date when the scheduled report stops running.
+ "active": True or False, # Whether the schedule is active or not. Must be set to either true or false.
+ "repeats": "A String", # The interval for which the report is repeated, one of:
+ # - "DAILY", also requires field "every" to be set.
+ # - "WEEKLY", also requires fields "every" and "repeatsOnWeekDays" to be set.
+ # - "TWICE_A_MONTH"
+ # - "MONTHLY", also requires fields "every" and "runsOnDayOfMonth" to be set.
+ # - "QUARTERLY"
+ # - "YEARLY"
+ "repeatsOnWeekDays": [ # List of week days "WEEKLY" on which scheduled reports should run.
+ "A String",
+ ],
+ },
+ "format": "A String", # The output format of the report, one of:
+ # - "CSV"
+ # - "EXCEL" If not specified, default format is "CSV". Note that the actual format in the completed report file might differ if for instance the report's size exceeds the format's capabilities. "CSV" will then be the fallback format.
+ "ownerProfileId": "A String", # The user profile id of the owner of this report.
+ "reachCriteria": { # The report criteria for a report of type "REACH".
+ "activities": { # Represents an activity group. # Activity group.
+ "kind": "dfareporting#activities", # The kind of resource this is, in this case dfareporting#activities.
+ "filters": [ # List of activity filters. The dimension values need to be all either of type "dfa:activity" or "dfa:activityGroup".
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "metricNames": [ # List of names of floodlight activity metrics.
+ "A String",
+ ],
+ },
+ "dimensions": [ # The list of dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dateRange": { # Represents a date range. # The date range this report should be run for.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+ # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "reachByFrequencyMetricNames": [ # The list of names of Reach By Frequency metrics the report should include.
+ "A String",
+ ],
+ "customRichMediaEvents": { # Represents a Custom Rich Media Events group. # Custom Rich Media Events group.
+ "kind": "dfareporting#customRichMediaEvents", # The kind of resource this is, in this case dfareporting#customRichMediaEvents.
+ "filteredEventIds": [ # List of custom rich media event IDs. Dimension values must be all of type dfa:richMediaEventTypeIdAndName.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ },
+ },
+ "floodlightCriteria": { # The report criteria for a report of type "FLOODLIGHT".
+ "dimensions": [ # The list of dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dateRange": { # Represents a date range. # The date range this report should be run for.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+ # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "floodlightConfigId": { # Represents a DimensionValue resource. # The floodlight ID for which to show data in this report. All advertisers associated with that ID will automatically be added. The dimension of the value needs to be 'dfa:floodlightConfigId'.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ "customRichMediaEvents": [ # The list of custom rich media events to include.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "reportProperties": { # The properties of the report.
+ "includeUnattributedIPConversions": True or False, # Include conversions that have no associated cookies and no exposures. It’s therefore impossible to know how the user was exposed to your ads during the lookback window prior to a conversion.
+ "includeUnattributedCookieConversions": True or False, # Include conversions of users with a DoubleClick cookie but without an exposure. That means the user did not click or see an ad from the advertiser within the Floodlight group, or that the interaction happened outside the lookback window.
+ "includeAttributedIPConversions": True or False, # Include conversions that have no cookie, but do have an exposure path.
+ },
+ },
+ "activeGrpCriteria": { # The report criteria for a report of type "ACTIVE_GRP".
+ "dateRange": { # Represents a date range. # The date range this report should be run for.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+ # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+ # A valid active GRP report needs to have exactly one DimensionValue for the United States in addition to any advertiser or campaign dimension values.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "dimensions": [ # The list of dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ },
+ "delivery": { # The report's email delivery settings.
+ "message": "A String", # The message to be sent with each email.
+ "emailOwnerDeliveryType": "A String", # The type of delivery for the owner to receive, if enabled. One of:
+ # - "ATTACHMENT"
+ # - "LINK"
+ "recipients": [ # The list of recipients to which to email the report.
+ { # Represents a recipient.
+ "kind": "dfareporting#recipient", # The kind of resource this is, in this case dfareporting#recipient.
+ "deliveryType": "A String", # The delivery type for the recipient, one of:
+ # - "ATTACHMENT"
+ # - "LINK"
+ "email": "A String", # The email address of the recipient.
+ },
+ ],
+ "emailOwner": True or False, # Whether the report should be emailed to the report owner.
+ },
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "criteria": { # The report criteria for a report of type "STANDARD".
+ "activities": { # Represents an activity group. # Activity group.
+ "kind": "dfareporting#activities", # The kind of resource this is, in this case dfareporting#activities.
+ "filters": [ # List of activity filters. The dimension values need to be all either of type "dfa:activity" or "dfa:activityGroup".
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "metricNames": [ # List of names of floodlight activity metrics.
+ "A String",
+ ],
+ },
+ "dimensions": [ # The list of standard dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dateRange": { # Represents a date range. # The date range for which this report should be run.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+ # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "customRichMediaEvents": { # Represents a Custom Rich Media Events group. # Custom Rich Media Events group.
+ "kind": "dfareporting#customRichMediaEvents", # The kind of resource this is, in this case dfareporting#customRichMediaEvents.
+ "filteredEventIds": [ # List of custom rich media event IDs. Dimension values must be all of type dfa:richMediaEventTypeIdAndName.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ },
+ },
+ "id": "A String", # The unique ID identifying this report resource.
+ "lastModifiedTime": "A String", # The timestamp (in milliseconds since epoch) of when this report was last modified.
+ "fileName": "A String", # The file name used when generating report files for this report.
+ "type": "A String", # The type of the report, one of:
+ # - STANDARD
+ # - REACH
+ # - ACTIVE_GRP
+ # - PATH_TO_CONVERSION
+ # - FLOODLIGHT
+ # - CROSS_DIMENSION_REACH
+ "crossDimensionReachCriteria": { # The report criteria for a report of type "CROSS_DIMENSION_REACH".
+ "breakdown": [ # The list of dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "overlapMetricNames": [ # The list of names of overlap metrics the report should include.
+ "A String",
+ ],
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dateRange": { # Represents a date range. # The date range this report should be run for.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "pivoted": True or False, # Whether the report is pivoted or not. Defaults to true.
+ "dimension": "A String", # The dimension option, one of:
+ # - "ADVERTISER"
+ # - "CAMPAIGN"
+ # - "SITE_BY_ADVERTISER"
+ # - "SITE_BY_CAMPAIGN"
+ },
+ "accountId": "A String", # The account ID to which this report belongs.
+ }
+
+
+Returns:
+ An object of the form:
+
+ { # Represents a Report resource.
+ "pathToConversionCriteria": { # The report criteria for a report of type "PATH_TO_CONVERSION".
+ "conversionDimensions": [ # The list of conversion dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dateRange": { # Represents a date range. # The date range this report should be run for.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "reportProperties": { # The properties of the report.
+ "clicksLookbackWindow": 42, # DFA checks to see if a click interaction occurred within the specified period of time before a conversion. By default the value is pulled from Floodlight or you can manually enter a custom value. Valid values: 1-90.
+ "pivotOnInteractionPath": True or False, # Enable pivoting on interaction path.
+ "impressionsLookbackWindow": 42, # DFA checks to see if an impression interaction occurred within the specified period of time before a conversion. By default the value is pulled from Floodlight or you can manually enter a custom value. Valid values: 1-90.
+ "includeUnattributedIPConversions": True or False, # Include conversions that have no associated cookies and no exposures. It’s therefore impossible to know how the user was exposed to your ads during the lookback window prior to a conversion.
+ "includeUnattributedCookieConversions": True or False, # Include conversions of users with a DoubleClick cookie but without an exposure. That means the user did not click or see an ad from the advertiser within the Floodlight group, or that the interaction happened outside the lookback window.
+ "maximumInteractionGap": 42, # The maximum amount of time that can take place between interactions (clicks or impressions) by the same user. Valid values: 1-90.
+ "includeAttributedIPConversions": True or False, # Deprecated: has no effect.
+ "maximumClickInteractions": 42, # The maximum number of click interactions to include in the report. Advertisers currently paying for E2C reports get up to 200 (100 clicks, 100 impressions). If another advertiser in your network is paying for E2C, you can have up to 5 total exposures per report.
+ "maximumImpressionInteractions": 42, # The maximum number of click interactions to include in the report. Advertisers currently paying for E2C reports get up to 200 (100 clicks, 100 impressions). If another advertiser in your network is paying for E2C, you can have up to 5 total exposures per report.
+ },
+ "perInteractionDimensions": [ # The list of per interaction dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "activityFilters": [ # The list of 'dfa:activity' values to filter on.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "customRichMediaEvents": [ # The list of custom rich media events to include.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "floodlightConfigId": { # Represents a DimensionValue resource. # The floodlight ID for which to show data in this report. All advertisers associated with that ID will automatically be added. The dimension of the value needs to be 'dfa:floodlightConfigId'.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ "customFloodlightVariables": [ # The list of custom floodlight variables the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ },
+ "kind": "dfareporting#report", # The kind of resource this is, in this case dfareporting#report.
+ "subAccountId": "A String", # The subbaccount ID to which this report belongs if applicable.
+ "name": "A String", # The name of the report.
+ "schedule": { # The report's schedule. Can only be set if the report's 'dateRange' is a relative date range and the relative date range is not "TODAY".
+ "startDate": "A String", # Start date of date range for which scheduled reports should be run.
+ "runsOnDayOfMonth": "A String", # Enum to define for "MONTHLY" scheduled reports whether reports should be repeated on the same day of the month as "startDate" or the same day of the week of the month. Possible values are:
+ # - DAY_OF_MONTH
+ # - WEEK_OF_MONTH
+ # Example: If 'startDate' is Monday, April 2nd 2012 (2012-04-02), "DAY_OF_MONTH" would run subsequent reports on the 2nd of every Month, and "WEEK_OF_MONTH" would run subsequent reports on the first Monday of the month.
+ "every": 42, # Defines every how many days, weeks or months the report should be run. Needs to be set when "repeats" is either "DAILY", "WEEKLY" or "MONTHLY".
+ "expirationDate": "A String", # The expiration date when the scheduled report stops running.
+ "active": True or False, # Whether the schedule is active or not. Must be set to either true or false.
+ "repeats": "A String", # The interval for which the report is repeated, one of:
+ # - "DAILY", also requires field "every" to be set.
+ # - "WEEKLY", also requires fields "every" and "repeatsOnWeekDays" to be set.
+ # - "TWICE_A_MONTH"
+ # - "MONTHLY", also requires fields "every" and "runsOnDayOfMonth" to be set.
+ # - "QUARTERLY"
+ # - "YEARLY"
+ "repeatsOnWeekDays": [ # List of week days "WEEKLY" on which scheduled reports should run.
+ "A String",
+ ],
+ },
+ "format": "A String", # The output format of the report, one of:
+ # - "CSV"
+ # - "EXCEL" If not specified, default format is "CSV". Note that the actual format in the completed report file might differ if for instance the report's size exceeds the format's capabilities. "CSV" will then be the fallback format.
+ "ownerProfileId": "A String", # The user profile id of the owner of this report.
+ "reachCriteria": { # The report criteria for a report of type "REACH".
+ "activities": { # Represents an activity group. # Activity group.
+ "kind": "dfareporting#activities", # The kind of resource this is, in this case dfareporting#activities.
+ "filters": [ # List of activity filters. The dimension values need to be all either of type "dfa:activity" or "dfa:activityGroup".
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "metricNames": [ # List of names of floodlight activity metrics.
+ "A String",
+ ],
+ },
+ "dimensions": [ # The list of dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dateRange": { # Represents a date range. # The date range this report should be run for.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+ # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "reachByFrequencyMetricNames": [ # The list of names of Reach By Frequency metrics the report should include.
+ "A String",
+ ],
+ "customRichMediaEvents": { # Represents a Custom Rich Media Events group. # Custom Rich Media Events group.
+ "kind": "dfareporting#customRichMediaEvents", # The kind of resource this is, in this case dfareporting#customRichMediaEvents.
+ "filteredEventIds": [ # List of custom rich media event IDs. Dimension values must be all of type dfa:richMediaEventTypeIdAndName.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ },
+ },
+ "floodlightCriteria": { # The report criteria for a report of type "FLOODLIGHT".
+ "dimensions": [ # The list of dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dateRange": { # Represents a date range. # The date range this report should be run for.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+ # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "floodlightConfigId": { # Represents a DimensionValue resource. # The floodlight ID for which to show data in this report. All advertisers associated with that ID will automatically be added. The dimension of the value needs to be 'dfa:floodlightConfigId'.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ "customRichMediaEvents": [ # The list of custom rich media events to include.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "reportProperties": { # The properties of the report.
+ "includeUnattributedIPConversions": True or False, # Include conversions that have no associated cookies and no exposures. It’s therefore impossible to know how the user was exposed to your ads during the lookback window prior to a conversion.
+ "includeUnattributedCookieConversions": True or False, # Include conversions of users with a DoubleClick cookie but without an exposure. That means the user did not click or see an ad from the advertiser within the Floodlight group, or that the interaction happened outside the lookback window.
+ "includeAttributedIPConversions": True or False, # Include conversions that have no cookie, but do have an exposure path.
+ },
+ },
+ "activeGrpCriteria": { # The report criteria for a report of type "ACTIVE_GRP".
+ "dateRange": { # Represents a date range. # The date range this report should be run for.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+ # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+ # A valid active GRP report needs to have exactly one DimensionValue for the United States in addition to any advertiser or campaign dimension values.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "dimensions": [ # The list of dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ },
+ "delivery": { # The report's email delivery settings.
+ "message": "A String", # The message to be sent with each email.
+ "emailOwnerDeliveryType": "A String", # The type of delivery for the owner to receive, if enabled. One of:
+ # - "ATTACHMENT"
+ # - "LINK"
+ "recipients": [ # The list of recipients to which to email the report.
+ { # Represents a recipient.
+ "kind": "dfareporting#recipient", # The kind of resource this is, in this case dfareporting#recipient.
+ "deliveryType": "A String", # The delivery type for the recipient, one of:
+ # - "ATTACHMENT"
+ # - "LINK"
+ "email": "A String", # The email address of the recipient.
+ },
+ ],
+ "emailOwner": True or False, # Whether the report should be emailed to the report owner.
+ },
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "criteria": { # The report criteria for a report of type "STANDARD".
+ "activities": { # Represents an activity group. # Activity group.
+ "kind": "dfareporting#activities", # The kind of resource this is, in this case dfareporting#activities.
+ "filters": [ # List of activity filters. The dimension values need to be all either of type "dfa:activity" or "dfa:activityGroup".
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "metricNames": [ # List of names of floodlight activity metrics.
+ "A String",
+ ],
+ },
+ "dimensions": [ # The list of standard dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dateRange": { # Represents a date range. # The date range for which this report should be run.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+ # Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "customRichMediaEvents": { # Represents a Custom Rich Media Events group. # Custom Rich Media Events group.
+ "kind": "dfareporting#customRichMediaEvents", # The kind of resource this is, in this case dfareporting#customRichMediaEvents.
+ "filteredEventIds": [ # List of custom rich media event IDs. Dimension values must be all of type dfa:richMediaEventTypeIdAndName.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ },
+ },
+ "id": "A String", # The unique ID identifying this report resource.
+ "lastModifiedTime": "A String", # The timestamp (in milliseconds since epoch) of when this report was last modified.
+ "fileName": "A String", # The file name used when generating report files for this report.
+ "type": "A String", # The type of the report, one of:
+ # - STANDARD
+ # - REACH
+ # - ACTIVE_GRP
+ # - PATH_TO_CONVERSION
+ # - FLOODLIGHT
+ # - CROSS_DIMENSION_REACH
+ "crossDimensionReachCriteria": { # The report criteria for a report of type "CROSS_DIMENSION_REACH".
+ "breakdown": [ # The list of dimensions the report should include.
+ { # Represents a sorted dimension.
+ "kind": "dfareporting#sortedDimension", # The kind of resource this is, in this case dfareporting#sortedDimension.
+ "name": "A String", # The name of the dimension.
+ "sortOrder": "A String", # An optional sort order for the dimension column, one of:
+ # - "ASCENDING"
+ # - "DESCENDING"
+ },
+ ],
+ "overlapMetricNames": [ # The list of names of overlap metrics the report should include.
+ "A String",
+ ],
+ "metricNames": [ # The list of names of metrics the report should include.
+ "A String",
+ ],
+ "dateRange": { # Represents a date range. # The date range this report should be run for.
+ "startDate": "A String", # The start date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "kind": "dfareporting#dateRange", # The kind of resource this is, in this case dfareporting#dateRange.
+ "endDate": "A String", # The end date of the date range, inclusive. A string of the format: "yyyy-MM-dd".
+ "relativeDateRange": "A String", # The date range relative to the date of when the report is run, one of:
+ # - "TODAY"
+ # - "YESTERDAY"
+ # - "WEEK_TO_DATE"
+ # - "MONTH_TO_DATE"
+ # - "QUARTER_TO_DATE"
+ # - "YEAR_TO_DATE"
+ # - "PREVIOUS_WEEK"
+ # - "PREVIOUS_MONTH"
+ # - "PREVIOUS_QUARTER"
+ # - "PREVIOUS_YEAR"
+ # - "LAST_7_DAYS"
+ # - "LAST_30_DAYS"
+ # - "LAST_90_DAYS"
+ # - "LAST_365_DAYS"
+ # - "LAST_24_MONTHS"
+ },
+ "dimensionFilters": [ # The list of filters on which dimensions are filtered.
+ { # Represents a DimensionValue resource.
+ "kind": "dfareporting#dimensionValue", # The kind of resource this is, in this case dfareporting#dimensionValue.
+ "value": "A String", # The value of the dimension.
+ "dimensionName": "A String", # The name of the dimension.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "matchType": "A String", # Determines how the 'value' field is matched when filtering. One of:
+ # - EXACT (default if not specified)
+ # - CONTAINS
+ # - BEGINS_WITH
+ # - WILDCARD_EXPRESSION (allowing '*' as a placeholder for variable length character sequences, it can be escaped with a backslash.) Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.
+ "id": "A String", # The ID associated with the value if available.
+ },
+ ],
+ "pivoted": True or False, # Whether the report is pivoted or not. Defaults to true.
+ "dimension": "A String", # The dimension option, one of:
+ # - "ADVERTISER"
+ # - "CAMPAIGN"
+ # - "SITE_BY_ADVERTISER"
+ # - "SITE_BY_CAMPAIGN"
+ },
+ "accountId": "A String", # The account ID to which this report belongs.
+ }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/dfareporting_v1_3.userProfiles.html b/docs/dyn/dfareporting_v1_3.userProfiles.html
new file mode 100644
index 0000000..dc0cbc7
--- /dev/null
+++ b/docs/dyn/dfareporting_v1_3.userProfiles.html
@@ -0,0 +1,133 @@
+<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="dfareporting_v1_3.html">DFA Reporting API</a> . <a href="dfareporting_v1_3.userProfiles.html">userProfiles</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#get">get(profileId)</a></code></p>
+<p class="firstline">Gets one user profile by ID.</p>
+<p class="toc_element">
+ <code><a href="#list">list()</a></code></p>
+<p class="firstline">Retrieves list of user profiles for a user.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="get">get(profileId)</code>
+ <pre>Gets one user profile by ID.
+
+Args:
+ profileId: string, The user profile ID. (required)
+
+Returns:
+ An object of the form:
+
+ { # Represents a UserProfile resource.
+ "userName": "A String", # The user name.
+ "kind": "dfareporting#userProfile", # The kind of resource this is, in this case dfareporting#userProfile.
+ "subAccountId": "A String", # The sub account ID this profile belongs to if applicable.
+ "accountName": "A String", # The account name this profile belongs to.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "subAccountName": "A String", # The sub account name this profile belongs to if applicable.
+ "profileId": "A String", # The unique ID of the user profile.
+ "accountId": "A String", # The account ID to which this profile belongs.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="list">list()</code>
+ <pre>Retrieves list of user profiles for a user.
+
+Args:
+
+Returns:
+ An object of the form:
+
+ { # Represents the list of user profiles.
+ "items": [ # The user profiles returned in this response.
+ { # Represents a UserProfile resource.
+ "userName": "A String", # The user name.
+ "kind": "dfareporting#userProfile", # The kind of resource this is, in this case dfareporting#userProfile.
+ "subAccountId": "A String", # The sub account ID this profile belongs to if applicable.
+ "accountName": "A String", # The account name this profile belongs to.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ "subAccountName": "A String", # The sub account name this profile belongs to if applicable.
+ "profileId": "A String", # The unique ID of the user profile.
+ "accountId": "A String", # The account ID to which this profile belongs.
+ },
+ ],
+ "kind": "dfareporting#userProfileList", # The kind of list this is, in this case dfareporting#userProfileList.
+ "etag": "A String", # The eTag of this response for caching purposes.
+ }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/discovery_v1.apis.html b/docs/dyn/discovery_v1.apis.html
index 280e348..a97b661 100644
--- a/docs/dyn/discovery_v1.apis.html
+++ b/docs/dyn/discovery_v1.apis.html
@@ -78,7 +78,7 @@
<code><a href="#getRest">getRest(api, version)</a></code></p>
<p class="firstline">Retrieve the description of a particular version of an api.</p>
<p class="toc_element">
- <code><a href="#list">list(name=None, preferred=None, label=None)</a></code></p>
+ <code><a href="#list">list(name=None, preferred=None)</a></code></p>
<p class="firstline">Retrieve the list of APIs supported at this endpoint.</p>
<h3>Method Details</h3>
<div class="method">
@@ -120,7 +120,7 @@
"A String",
],
"minimum": "A String", # The minimum value of this parameter.
- "readOnly": True or False, # The value is read-only, generated by the service. The value can not be modified by the client. It the value is included in a POST, PUT or PATCH request, it will be ignored by the service.
+ "readOnly": True or False, # The value is read-only, generated by the service. The value cannot be modified by the client. If the value is included in a POST, PUT, or PATCH request, it is ignored by the service.
"location": "A String", # Whether this parameter goes in the query or the path for REST requests.
"pattern": "A String", # The regular expression this parameter must conform to. Uses Java 6 regex format: http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html
"additionalProperties": # Object with schema name: JsonSchema # If this is a schema for an object, this property is the schema for any additional properties with dynamic keys on this object.
@@ -152,6 +152,7 @@
],
},
"request": { # The schema for the request.
+ "parameterName": "A String", # parameter name.
"$ref": "A String", # Schema ID for the request schema.
},
"response": { # The schema for the response.
@@ -170,42 +171,14 @@
"labels": [ # Labels for the status of this API, such as labs or deprecated.
"A String",
],
+ "ownerName": "A String", # The name of the owner of this API. See ownerDomain.
"batchPath": "batch", # The path for REST batch requests.
- "id": "A String", # The id of this API.
- "schemas": { # The schemas for this API.
- "a_key": { # An individual schema description.
- "properties": { # If this is a schema for an object, list the schema for each property of this object.
- "a_key": # Object with schema name: JsonSchema # A single property of this object. The value is itself a JSON Schema object describing this property.
- },
- "required": True or False, # Whether the parameter is required.
- "type": "A String", # The value type for this schema. A list of values can be found here: http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.1
- "description": "A String", # A description of this object.
- "format": "A String", # An additional regular expression or key that helps constrain the value. For more details see: http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.23
- "default": "A String", # The default value of this property (if one exists).
- "items": # Object with schema name: JsonSchema # If this is a schema for an array, this property is the schema for each element in the array.
- "enum": [ # Values this parameter may take (if it is an enum).
- "A String",
- ],
- "maximum": "A String", # The maximum value of this parameter.
- "id": "A String", # Unique identifier for this schema.
- "enumDescriptions": [ # The descriptions for the enums. Each position maps to the corresponding value in the "enum" array.
- "A String",
- ],
- "minimum": "A String", # The minimum value of this parameter.
- "readOnly": True or False, # The value is read-only, generated by the service. The value can not be modified by the client. It the value is included in a POST, PUT or PATCH request, it will be ignored by the service.
- "location": "A String", # Whether this parameter goes in the query or the path for REST requests.
- "pattern": "A String", # The regular expression this parameter must conform to. Uses Java 6 regex format: http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html
- "additionalProperties": # Object with schema name: JsonSchema # If this is a schema for an object, this property is the schema for any additional properties with dynamic keys on this object.
- "repeated": True or False, # Whether this parameter may appear multiple times.
- "annotations": { # Additional information about this property.
- "required": [ # A list of methods for which this property is required on requests.
- "A String",
- ],
- },
- "$ref": "A String", # A reference to another schema. The value of this property is the "id" of another schema.
- },
- },
- "rootUrl": "A String", # The root url under which all API services live.
+ "id": "A String", # The ID of this API.
+ "features": [ # A list of supported features for this API.
+ "A String",
+ ],
+ "ownerDomain": "A String", # The domain of the owner of this API. Together with the ownerName and a packagePath values, this can be used to generate a library for this API which would have a unique fully qualified name.
+ "rootUrl": "A String", # The root URL under which all API services live.
"parameters": { # Common parameters that apply across all apis.
"a_key": { # Description of a single parameter.
"properties": { # If this is a schema for an object, list the schema for each property of this object.
@@ -226,7 +199,7 @@
"A String",
],
"minimum": "A String", # The minimum value of this parameter.
- "readOnly": True or False, # The value is read-only, generated by the service. The value can not be modified by the client. It the value is included in a POST, PUT or PATCH request, it will be ignored by the service.
+ "readOnly": True or False, # The value is read-only, generated by the service. The value cannot be modified by the client. If the value is included in a POST, PUT, or PATCH request, it is ignored by the service.
"location": "A String", # Whether this parameter goes in the query or the path for REST requests.
"pattern": "A String", # The regular expression this parameter must conform to. Uses Java 6 regex format: http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html
"additionalProperties": # Object with schema name: JsonSchema # If this is a schema for an object, this property is the schema for any additional properties with dynamic keys on this object.
@@ -240,16 +213,46 @@
},
},
"icons": { # Links to 16x16 and 32x32 icons representing the API.
- "x32": "A String", # The url of the 32x32 icon.
- "x16": "A String", # The url of the 16x16 icon.
+ "x32": "A String", # The URL of the 32x32 icon.
+ "x16": "A String", # The URL of the 16x16 icon.
},
"baseUrl": "A String", # [DEPRECATED] The base URL for REST requests.
- "etag": "A String", # The etag for this response.
- "features": [ # A list of supported features for this API.
- "A String",
- ],
+ "etag": "A String", # The ETag for this response.
"version": "A String", # The version of this API.
"servicePath": "A String", # The base path for all REST requests.
+ "schemas": { # The schemas for this API.
+ "a_key": { # An individual schema description.
+ "properties": { # If this is a schema for an object, list the schema for each property of this object.
+ "a_key": # Object with schema name: JsonSchema # A single property of this object. The value is itself a JSON Schema object describing this property.
+ },
+ "required": True or False, # Whether the parameter is required.
+ "type": "A String", # The value type for this schema. A list of values can be found here: http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.1
+ "description": "A String", # A description of this object.
+ "format": "A String", # An additional regular expression or key that helps constrain the value. For more details see: http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.23
+ "default": "A String", # The default value of this property (if one exists).
+ "items": # Object with schema name: JsonSchema # If this is a schema for an array, this property is the schema for each element in the array.
+ "enum": [ # Values this parameter may take (if it is an enum).
+ "A String",
+ ],
+ "maximum": "A String", # The maximum value of this parameter.
+ "id": "A String", # Unique identifier for this schema.
+ "enumDescriptions": [ # The descriptions for the enums. Each position maps to the corresponding value in the "enum" array.
+ "A String",
+ ],
+ "minimum": "A String", # The minimum value of this parameter.
+ "readOnly": True or False, # The value is read-only, generated by the service. The value cannot be modified by the client. If the value is included in a POST, PUT, or PATCH request, it is ignored by the service.
+ "location": "A String", # Whether this parameter goes in the query or the path for REST requests.
+ "pattern": "A String", # The regular expression this parameter must conform to. Uses Java 6 regex format: http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html
+ "additionalProperties": # Object with schema name: JsonSchema # If this is a schema for an object, this property is the schema for any additional properties with dynamic keys on this object.
+ "repeated": True or False, # Whether this parameter may appear multiple times.
+ "annotations": { # Additional information about this property.
+ "required": [ # A list of methods for which this property is required on requests.
+ "A String",
+ ],
+ },
+ "$ref": "A String", # A reference to another schema. The value of this property is the "id" of another schema.
+ },
+ },
"resources": { # The resources in this API.
"a_key": { # An individual resource description. Contains methods and sub-resources related to this resource.
"methods": { # Methods on this resource.
@@ -278,7 +281,7 @@
"A String",
],
"minimum": "A String", # The minimum value of this parameter.
- "readOnly": True or False, # The value is read-only, generated by the service. The value can not be modified by the client. It the value is included in a POST, PUT or PATCH request, it will be ignored by the service.
+ "readOnly": True or False, # The value is read-only, generated by the service. The value cannot be modified by the client. If the value is included in a POST, PUT, or PATCH request, it is ignored by the service.
"location": "A String", # Whether this parameter goes in the query or the path for REST requests.
"pattern": "A String", # The regular expression this parameter must conform to. Uses Java 6 regex format: http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html
"additionalProperties": # Object with schema name: JsonSchema # If this is a schema for an object, this property is the schema for any additional properties with dynamic keys on this object.
@@ -310,6 +313,7 @@
],
},
"request": { # The schema for the request.
+ "parameterName": "A String", # parameter name.
"$ref": "A String", # Schema ID for the request schema.
},
"response": { # The schema for the response.
@@ -342,6 +346,7 @@
},
},
},
+ "packagePath": "A String", # The package of the owner of this API. See ownerDomain.
"kind": "discovery#restDescription", # The kind for this response.
"name": "A String", # The name of this API.
"basePath": "A String", # [DEPRECATED] The base path for REST requests.
@@ -352,17 +357,12 @@
</div>
<div class="method">
- <code class="details" id="list">list(name=None, preferred=None, label=None)</code>
+ <code class="details" id="list">list(name=None, preferred=None)</code>
<pre>Retrieve the list of APIs supported at this endpoint.
Args:
name: string, Only include APIs with the given name.
preferred: boolean, Return only the preferred version of an API.
- label: string, Only include APIs with a matching label, such as 'graduated' or 'labs'.
- Allowed values
- deprecated - APIs that have been deprecated.
- graduated - Supported APIs that have graduated from labs.
- labs - APIs that are experimental
Returns:
An object of the form:
@@ -376,10 +376,10 @@
],
"description": "A String", # The description of this API.
"icons": { # Links to 16x16 and 32x32 icons representing the API.
- "x32": "A String", # The url of the 32x32 icon.
- "x16": "A String", # The url of the 16x16 icon.
+ "x32": "A String", # The URL of the 32x32 icon.
+ "x16": "A String", # The URL of the 16x16 icon.
},
- "discoveryRestUrl": "A String", # The url for the discovery REST document.
+ "discoveryRestUrl": "A String", # The URL for the discovery REST document.
"preferred": True or False, # True if this version is the preferred version to use.
"name": "A String", # The name of the API.
"discoveryLink": "A String", # A link to the discovery document.
diff --git a/docs/dyn/doubleclickbidmanager_v1.html b/docs/dyn/doubleclickbidmanager_v1.html
new file mode 100644
index 0000000..e1c40d7
--- /dev/null
+++ b/docs/dyn/doubleclickbidmanager_v1.html
@@ -0,0 +1,87 @@
+<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="doubleclickbidmanager_v1.html">DoubleClick Bid Manager API</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="doubleclickbidmanager_v1.queries.html">queries()</a></code>
+</p>
+<p class="firstline">Returns the queries Resource.</p>
+
+<p class="toc_element">
+ <code><a href="doubleclickbidmanager_v1.reports.html">reports()</a></code>
+</p>
+<p class="firstline">Returns the reports Resource.</p>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/doubleclickbidmanager_v1.queries.html b/docs/dyn/doubleclickbidmanager_v1.queries.html
new file mode 100644
index 0000000..91e1a97
--- /dev/null
+++ b/docs/dyn/doubleclickbidmanager_v1.queries.html
@@ -0,0 +1,328 @@
+<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="doubleclickbidmanager_v1.html">DoubleClick Bid Manager API</a> . <a href="doubleclickbidmanager_v1.queries.html">queries</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#createquery">createquery(body)</a></code></p>
+<p class="firstline">Creates a query.</p>
+<p class="toc_element">
+ <code><a href="#deletequery">deletequery(queryId)</a></code></p>
+<p class="firstline">Deletes a stored query as well as the associated stored reports.</p>
+<p class="toc_element">
+ <code><a href="#getquery">getquery(queryId)</a></code></p>
+<p class="firstline">Retrieves a stored query.</p>
+<p class="toc_element">
+ <code><a href="#listqueries">listqueries()</a></code></p>
+<p class="firstline">Retrieves stored queries.</p>
+<p class="toc_element">
+ <code><a href="#runquery">runquery(queryId, body)</a></code></p>
+<p class="firstline">Runs a stored query to generate a report.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="createquery">createquery(body)</code>
+ <pre>Creates a query.
+
+Args:
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # Represents a query.
+ "kind": "doubleclickbidmanager#query", # The kind, fixed to "doubleclickbidmanager#query".
+ "schedule": { # Information on how frequently and when to run a query. # Information on how often and when to run a query.
+ "endTimeMs": "A String", # Run the query periodically until the specified time.
+ "frequency": "A String", # How often the query is run.
+ },
+ "timezoneCode": "A String", # Canonical timezone code for report data time. Defaults to America/New_York.
+ "reportDataEndTimeMs": "A String", # The ending time for the data that is shown in the report. Note, reportDataEndTimeMs is required if metadata.dataRange is CUSTOM_DATES and ignored otherwise.
+ "queryId": "A String", # Query ID.
+ "params": { # Parameters of a query or report. # Query parameters.
+ "metrics": [ # Metrics to include as columns in your report.
+ "A String",
+ ],
+ "includeInviteData": True or False, # Whether to include data from Invite Media.
+ "type": "A String", # Report type.
+ "groupBys": [ # Data is grouped by the filters listed in this field.
+ "A String",
+ ],
+ "filters": [ # Filters used to match traffic data in your report.
+ { # Filter used to match traffic data in your report.
+ "type": "A String", # Filter type.
+ "value": "A String", # Filter value.
+ },
+ ],
+ },
+ "reportDataStartTimeMs": "A String", # The starting time for the data that is shown in the report. Note, reportDataStartTimeMs is required if metadata.dataRange is CUSTOM_DATES and ignored otherwise.
+ "metadata": { # Query metadata. # Query metadata.
+ "googleCloudStoragePathForLatestReport": "A String", # The path to the location in Google Cloud Storage where the latest report is stored.
+ "dataRange": "A String", # Range of report data.
+ "format": "A String", # Format of the generated report.
+ "googleDrivePathForLatestReport": "A String", # The path in Google Drive for the latest report.
+ "sendNotification": True or False, # Whether to send an email notification when a report is ready. Default to false.
+ "shareEmailAddress": [ # List of email addresses which are sent email notifications when the report is finished. Separate from sendNotification.
+ "A String",
+ ],
+ "reportCount": 42, # Number of reports that have been generated for the query.
+ "running": True or False, # Whether the latest report is currently running.
+ "latestReportRunTimeMs": "A String", # The time when the latest report started to run.
+ "title": "A String", # Query title. It is used to name the reports generated from this query.
+ },
+}
+
+
+Returns:
+ An object of the form:
+
+ { # Represents a query.
+ "kind": "doubleclickbidmanager#query", # The kind, fixed to "doubleclickbidmanager#query".
+ "schedule": { # Information on how frequently and when to run a query. # Information on how often and when to run a query.
+ "endTimeMs": "A String", # Run the query periodically until the specified time.
+ "frequency": "A String", # How often the query is run.
+ },
+ "timezoneCode": "A String", # Canonical timezone code for report data time. Defaults to America/New_York.
+ "reportDataEndTimeMs": "A String", # The ending time for the data that is shown in the report. Note, reportDataEndTimeMs is required if metadata.dataRange is CUSTOM_DATES and ignored otherwise.
+ "queryId": "A String", # Query ID.
+ "params": { # Parameters of a query or report. # Query parameters.
+ "metrics": [ # Metrics to include as columns in your report.
+ "A String",
+ ],
+ "includeInviteData": True or False, # Whether to include data from Invite Media.
+ "type": "A String", # Report type.
+ "groupBys": [ # Data is grouped by the filters listed in this field.
+ "A String",
+ ],
+ "filters": [ # Filters used to match traffic data in your report.
+ { # Filter used to match traffic data in your report.
+ "type": "A String", # Filter type.
+ "value": "A String", # Filter value.
+ },
+ ],
+ },
+ "reportDataStartTimeMs": "A String", # The starting time for the data that is shown in the report. Note, reportDataStartTimeMs is required if metadata.dataRange is CUSTOM_DATES and ignored otherwise.
+ "metadata": { # Query metadata. # Query metadata.
+ "googleCloudStoragePathForLatestReport": "A String", # The path to the location in Google Cloud Storage where the latest report is stored.
+ "dataRange": "A String", # Range of report data.
+ "format": "A String", # Format of the generated report.
+ "googleDrivePathForLatestReport": "A String", # The path in Google Drive for the latest report.
+ "sendNotification": True or False, # Whether to send an email notification when a report is ready. Default to false.
+ "shareEmailAddress": [ # List of email addresses which are sent email notifications when the report is finished. Separate from sendNotification.
+ "A String",
+ ],
+ "reportCount": 42, # Number of reports that have been generated for the query.
+ "running": True or False, # Whether the latest report is currently running.
+ "latestReportRunTimeMs": "A String", # The time when the latest report started to run.
+ "title": "A String", # Query title. It is used to name the reports generated from this query.
+ },
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="deletequery">deletequery(queryId)</code>
+ <pre>Deletes a stored query as well as the associated stored reports.
+
+Args:
+ queryId: string, Query ID to delete. (required)
+</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="getquery">getquery(queryId)</code>
+ <pre>Retrieves a stored query.
+
+Args:
+ queryId: string, Query ID to retrieve. (required)
+
+Returns:
+ An object of the form:
+
+ { # Represents a query.
+ "kind": "doubleclickbidmanager#query", # The kind, fixed to "doubleclickbidmanager#query".
+ "schedule": { # Information on how frequently and when to run a query. # Information on how often and when to run a query.
+ "endTimeMs": "A String", # Run the query periodically until the specified time.
+ "frequency": "A String", # How often the query is run.
+ },
+ "timezoneCode": "A String", # Canonical timezone code for report data time. Defaults to America/New_York.
+ "reportDataEndTimeMs": "A String", # The ending time for the data that is shown in the report. Note, reportDataEndTimeMs is required if metadata.dataRange is CUSTOM_DATES and ignored otherwise.
+ "queryId": "A String", # Query ID.
+ "params": { # Parameters of a query or report. # Query parameters.
+ "metrics": [ # Metrics to include as columns in your report.
+ "A String",
+ ],
+ "includeInviteData": True or False, # Whether to include data from Invite Media.
+ "type": "A String", # Report type.
+ "groupBys": [ # Data is grouped by the filters listed in this field.
+ "A String",
+ ],
+ "filters": [ # Filters used to match traffic data in your report.
+ { # Filter used to match traffic data in your report.
+ "type": "A String", # Filter type.
+ "value": "A String", # Filter value.
+ },
+ ],
+ },
+ "reportDataStartTimeMs": "A String", # The starting time for the data that is shown in the report. Note, reportDataStartTimeMs is required if metadata.dataRange is CUSTOM_DATES and ignored otherwise.
+ "metadata": { # Query metadata. # Query metadata.
+ "googleCloudStoragePathForLatestReport": "A String", # The path to the location in Google Cloud Storage where the latest report is stored.
+ "dataRange": "A String", # Range of report data.
+ "format": "A String", # Format of the generated report.
+ "googleDrivePathForLatestReport": "A String", # The path in Google Drive for the latest report.
+ "sendNotification": True or False, # Whether to send an email notification when a report is ready. Default to false.
+ "shareEmailAddress": [ # List of email addresses which are sent email notifications when the report is finished. Separate from sendNotification.
+ "A String",
+ ],
+ "reportCount": 42, # Number of reports that have been generated for the query.
+ "running": True or False, # Whether the latest report is currently running.
+ "latestReportRunTimeMs": "A String", # The time when the latest report started to run.
+ "title": "A String", # Query title. It is used to name the reports generated from this query.
+ },
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="listqueries">listqueries()</code>
+ <pre>Retrieves stored queries.
+
+Args:
+
+Returns:
+ An object of the form:
+
+ { # List queries response.
+ "kind": "doubleclickbidmanager#listQueriesResponse", # The kind, fixed to "doubleclickbidmanager#listQueriesResponse".
+ "queries": [ # Retrieved queries.
+ { # Represents a query.
+ "kind": "doubleclickbidmanager#query", # The kind, fixed to "doubleclickbidmanager#query".
+ "schedule": { # Information on how frequently and when to run a query. # Information on how often and when to run a query.
+ "endTimeMs": "A String", # Run the query periodically until the specified time.
+ "frequency": "A String", # How often the query is run.
+ },
+ "timezoneCode": "A String", # Canonical timezone code for report data time. Defaults to America/New_York.
+ "reportDataEndTimeMs": "A String", # The ending time for the data that is shown in the report. Note, reportDataEndTimeMs is required if metadata.dataRange is CUSTOM_DATES and ignored otherwise.
+ "queryId": "A String", # Query ID.
+ "params": { # Parameters of a query or report. # Query parameters.
+ "metrics": [ # Metrics to include as columns in your report.
+ "A String",
+ ],
+ "includeInviteData": True or False, # Whether to include data from Invite Media.
+ "type": "A String", # Report type.
+ "groupBys": [ # Data is grouped by the filters listed in this field.
+ "A String",
+ ],
+ "filters": [ # Filters used to match traffic data in your report.
+ { # Filter used to match traffic data in your report.
+ "type": "A String", # Filter type.
+ "value": "A String", # Filter value.
+ },
+ ],
+ },
+ "reportDataStartTimeMs": "A String", # The starting time for the data that is shown in the report. Note, reportDataStartTimeMs is required if metadata.dataRange is CUSTOM_DATES and ignored otherwise.
+ "metadata": { # Query metadata. # Query metadata.
+ "googleCloudStoragePathForLatestReport": "A String", # The path to the location in Google Cloud Storage where the latest report is stored.
+ "dataRange": "A String", # Range of report data.
+ "format": "A String", # Format of the generated report.
+ "googleDrivePathForLatestReport": "A String", # The path in Google Drive for the latest report.
+ "sendNotification": True or False, # Whether to send an email notification when a report is ready. Default to false.
+ "shareEmailAddress": [ # List of email addresses which are sent email notifications when the report is finished. Separate from sendNotification.
+ "A String",
+ ],
+ "reportCount": 42, # Number of reports that have been generated for the query.
+ "running": True or False, # Whether the latest report is currently running.
+ "latestReportRunTimeMs": "A String", # The time when the latest report started to run.
+ "title": "A String", # Query title. It is used to name the reports generated from this query.
+ },
+ },
+ ],
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="runquery">runquery(queryId, body)</code>
+ <pre>Runs a stored query to generate a report.
+
+Args:
+ queryId: string, Query ID to run. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # Request to run a stored query to generate a report.
+ "reportDataEndTimeMs": "A String", # The ending time for the data that is shown in the report. Note, reportDataEndTimeMs is required if dataRange is CUSTOM_DATES and ignored otherwise.
+ "timezoneCode": "A String", # Canonical timezone code for report data time. Defaults to America/New_York.
+ "reportDataStartTimeMs": "A String", # The starting time for the data that is shown in the report. Note, reportDataStartTimeMs is required if dataRange is CUSTOM_DATES and ignored otherwise.
+ "dataRange": "A String", # Report data range used to generate the report.
+ }
+
+</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/doubleclickbidmanager_v1.reports.html b/docs/dyn/doubleclickbidmanager_v1.reports.html
new file mode 100644
index 0000000..b901d0c
--- /dev/null
+++ b/docs/dyn/doubleclickbidmanager_v1.reports.html
@@ -0,0 +1,133 @@
+<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="doubleclickbidmanager_v1.html">DoubleClick Bid Manager API</a> . <a href="doubleclickbidmanager_v1.reports.html">reports</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#listreports">listreports(queryId)</a></code></p>
+<p class="firstline">Retrieves stored reports.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="listreports">listreports(queryId)</code>
+ <pre>Retrieves stored reports.
+
+Args:
+ queryId: string, Query ID with which the reports are associated. (required)
+
+Returns:
+ An object of the form:
+
+ { # List reports response.
+ "kind": "doubleclickbidmanager#listReportsResponse", # The kind, fixed to "doubleclickbidmanager#listReportsResponse".
+ "reports": [ # Retrieved reports.
+ { # Represents a report.
+ "params": { # Parameters of a query or report. # Report parameters.
+ "metrics": [ # Metrics to include as columns in your report.
+ "A String",
+ ],
+ "includeInviteData": True or False, # Whether to include data from Invite Media.
+ "type": "A String", # Report type.
+ "groupBys": [ # Data is grouped by the filters listed in this field.
+ "A String",
+ ],
+ "filters": [ # Filters used to match traffic data in your report.
+ { # Filter used to match traffic data in your report.
+ "type": "A String", # Filter type.
+ "value": "A String", # Filter value.
+ },
+ ],
+ },
+ "key": { # Key used to identify a report. # Key used to identify a report.
+ "queryId": "A String", # Query ID.
+ "reportId": "A String", # Report ID.
+ },
+ "metadata": { # Report metadata. # Report metadata.
+ "status": { # Report status. # Report status.
+ "failure": { # An explanation of a report failure. # If the report failed, this records the cause.
+ "errorCode": "A String", # Error code that shows why the report was not created.
+ },
+ "state": "A String", # The state of the report.
+ "finishTimeMs": "A String", # The time when this report either completed successfully or failed.
+ "format": "A String", # The file type of the report.
+ },
+ "reportDataEndTimeMs": "A String", # The ending time for the data that is shown in the report.
+ "googleCloudStoragePath": "A String", # The path to the location in Google Cloud Storage where the report is stored.
+ "reportDataStartTimeMs": "A String", # The starting time for the data that is shown in the report.
+ },
+ },
+ ],
+ }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/drive_v2.apps.html b/docs/dyn/drive_v2.apps.html
index d8dfd75..000d852 100644
--- a/docs/dyn/drive_v2.apps.html
+++ b/docs/dyn/drive_v2.apps.html
@@ -96,7 +96,9 @@
"primaryFileExtensions": [ # The list of primary file extensions.
"A String",
],
- "useByDefault": True or False, # Whether the app is selected as the default handler for the types it supports.
+ "secondaryMimeTypes": [ # The list of secondary mime types.
+ "A String",
+ ],
"name": "A String", # The name of the app.
"icons": [ # The various icons for the app.
{
@@ -108,17 +110,20 @@
"size": 42, # Size of the icon. Represented as the maximum of the width and height.
},
],
+ "shortDescription": "A String", # A short description of the app.
"secondaryFileExtensions": [ # The list of secondary file extensions.
"A String",
],
+ "useByDefault": True or False, # Whether the app is selected as the default handler for the types it supports.
"installed": True or False, # Whether the app is installed.
- "productUrl": "A String", # The product URL.
- "secondaryMimeTypes": [ # The list of secondary mime types.
- "A String",
- ],
+ "supportsMultiOpen": True or False, # Whether this app supports opening more than one file.
+ "productUrl": "A String", # A link to the product listing for this app.
+ "productId": "A String", # The ID of the product listing for this app.
"authorized": True or False, # Whether the app is authorized to access data on the user's Drive.
"supportsCreate": True or False, # Whether this app supports creating new objects.
"supportsImport": True or False, # Whether this app supports importing Google Docs.
+ "openUrlTemplate": "A String", # The template url for opening files with this app. The template will contain {ids} and/or {exportIds} to be replaced by the actual file ids.
+ "longDescription": "A String", # A long description of the app.
"primaryMimeTypes": [ # The list of primary mime types.
"A String",
],
@@ -143,7 +148,9 @@
"primaryFileExtensions": [ # The list of primary file extensions.
"A String",
],
- "useByDefault": True or False, # Whether the app is selected as the default handler for the types it supports.
+ "secondaryMimeTypes": [ # The list of secondary mime types.
+ "A String",
+ ],
"name": "A String", # The name of the app.
"icons": [ # The various icons for the app.
{
@@ -155,17 +162,20 @@
"size": 42, # Size of the icon. Represented as the maximum of the width and height.
},
],
+ "shortDescription": "A String", # A short description of the app.
"secondaryFileExtensions": [ # The list of secondary file extensions.
"A String",
],
+ "useByDefault": True or False, # Whether the app is selected as the default handler for the types it supports.
"installed": True or False, # Whether the app is installed.
- "productUrl": "A String", # The product URL.
- "secondaryMimeTypes": [ # The list of secondary mime types.
- "A String",
- ],
+ "supportsMultiOpen": True or False, # Whether this app supports opening more than one file.
+ "productUrl": "A String", # A link to the product listing for this app.
+ "productId": "A String", # The ID of the product listing for this app.
"authorized": True or False, # Whether the app is authorized to access data on the user's Drive.
"supportsCreate": True or False, # Whether this app supports creating new objects.
"supportsImport": True or False, # Whether this app supports importing Google Docs.
+ "openUrlTemplate": "A String", # The template url for opening files with this app. The template will contain {ids} and/or {exportIds} to be replaced by the actual file ids.
+ "longDescription": "A String", # A long description of the app.
"primaryMimeTypes": [ # The list of primary mime types.
"A String",
],
diff --git a/docs/dyn/drive_v2.changes.html b/docs/dyn/drive_v2.changes.html
index 505e7af..f069e26 100644
--- a/docs/dyn/drive_v2.changes.html
+++ b/docs/dyn/drive_v2.changes.html
@@ -83,6 +83,9 @@
<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="#watch">watch(body, includeSubscribed=None, includeDeleted=None, pageToken=None, maxResults=None, startChangeId=None)</a></code></p>
+<p class="firstline">Subscribe to changes for a user.</p>
<h3>Method Details</h3>
<div class="method">
<code class="details" id="get">get(changeId)</code>
@@ -99,6 +102,8 @@
"deleted": True or False, # Whether the file has been deleted.
"file": { # The metadata for a file. # The updated state of the file. Present if the file has not been deleted.
"mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
+ "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
+ "appDataContents": True or False, # Whether this file is in the appdata folder.
"thumbnailLink": "A String", # A link to the file's thumbnail.
"labels": { # A group of labels for the file.
"restricted": True or False, # Whether viewers are prevented from downloading this file.
@@ -111,7 +116,6 @@
"text": "A String", # The text to be indexed for this file.
},
"explicitlyTrashed": True or False, # Whether this file has been explicitly trashed, as opposed to recursively trashed. This will only be populated if the file is trashed.
- "etag": "A String", # ETag of the file.
"lastModifyingUserName": "A String", # Name of the last user to modify this file.
"writersCanShare": True or False, # Whether writers can share the document with other users.
"owners": [ # The owner(s) of this file.
@@ -135,13 +139,13 @@
"displayName": "A String", # A plain text displayable name for this user.
"permissionId": "A String", # The user's ID as visible in the permissions collection.
},
- "title": "A String", # The title of this file.
+ "copyable": True or False, # Whether the file can be copied by the current user.
"ownerNames": [ # Name(s) of the owner(s) of this file.
"A String",
],
"sharedWithMeDate": "A String", # Time at which this file was shared with the user (formatted RFC 3339 timestamp).
"webViewLink": "A String", # A link only available on public folders for viewing their static web assets (HTML, CSS, JS, etc) via Google Drive's Website Hosting.
- "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
+ "etag": "A String", # ETag of the file.
"parents": [ # Collection of parent folders which contain this file.
# Setting this field will put the file in all of the provided folders. On insert, if no folders are provided, the file will be placed in the default root folder.
{ # A reference to a file's parent.
@@ -160,16 +164,9 @@
"mimeType": "A String", # The MIME type of the thumbnail.
"image": "A String", # The URL-safe Base64 encoded bytes of the thumbnail image.
},
- "originalFilename": "A String", # The original filename if the file was uploaded manually, or the original title if the file was inserted through the API. Note that renames of the title will not change the original filename. This will only be populated on files with content stored in Drive.
- "description": "A String", # A short description of the file.
- "webContentLink": "A String", # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
- "editable": True or False, # Whether the file can be edited by the current user.
- "kind": "drive#file", # The type of file. This is always drive#file.
- "quotaBytesUsed": "A String", # The number of quota bytes used by this file.
- "fileSize": "A String", # The size of the file in bytes. This is only populated for files with content stored in Drive.
- "createdDate": "A String", # Create time for this file (formatted ISO8601 timestamp).
- "md5Checksum": "A String", # An MD5 checksum for the content of this file. This is populated only for files with content stored in Drive.
- "iconLink": "A String", # A link to the file's icon.
+ "openWithLinks": { # A map of the id of each of the user's apps to a link to open this file with that app. Only populated when the drive.apps.readonly scope is used.
+ "a_key": "A String",
+ },
"imageMediaMetadata": { # Metadata about image media. This will only be present for image types, and its contents will depend on what can be parsed from the image content.
"exposureBias": 3.14, # The exposure bias of the photo (APEX value).
"exposureTime": 3.14, # The length of the exposure, in seconds.
@@ -197,23 +194,46 @@
"whiteBalance": "A String", # The white balance mode used to create the photo.
"cameraModel": "A String", # The model of the camera used to create the photo.
},
+ "description": "A String", # A short description of the file.
+ "webContentLink": "A String", # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
+ "editable": True or False, # Whether the file can be edited by the current user.
+ "kind": "drive#file", # The type of file. This is always drive#file.
+ "quotaBytesUsed": "A String", # The number of quota bytes used by this file.
+ "fileSize": "A String", # The size of the file in bytes. This is only populated for files with content stored in Drive.
+ "createdDate": "A String", # Create time for this file (formatted ISO8601 timestamp).
+ "properties": [ # The list of properties.
+ { # A key-value pair that is either public or private to an application.
+ "kind": "drive#property", # This is always drive#property.
+ "value": "A String", # The value of this property.
+ "etag": "A String", # ETag of the property.
+ "visibility": "A String", # The visibility of this property.
+ "key": "A String", # The key of this property.
+ "selfLink": "A String", # The link back to this property.
+ },
+ ],
+ "md5Checksum": "A String", # An MD5 checksum for the content of this file. This is populated only for files with content stored in Drive.
+ "iconLink": "A String", # A link to the file's icon.
+ "defaultOpenWithLink": "A String", # A link to open this file with the user's default app for this file. Only populated when the drive.apps.readonly scope is used.
"embedLink": "A String", # A link for embedding the file.
"alternateLink": "A String", # A link for opening the file in using a relevant Google editor or viewer.
+ "title": "A String", # The title of this file.
"modifiedByMeDate": "A String", # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
"downloadUrl": "A String", # Short lived download URL for the file. This is only populated for files with content stored in Drive.
"userPermission": { # A permission for a file. # The permissions for the authenticated user on this file.
"withLink": True or False, # Whether the link is required for this permission.
- "kind": "drive#permission", # This is always drive#permission.
+ "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is populated when the permission type is "user", "group" or "domain".
"name": "A String", # The name for this permission.
- "value": "A String", # The email address or domain name for the entity. This is not populated in responses.
+ "kind": "drive#permission", # This is always drive#permission.
+ "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses.
"id": "A String", # The ID of the permission.
"authKey": "A String", # The authkey parameter required for this permission.
"etag": "A String", # The ETag of the permission.
+ "emailAddress": "A String", # The email address of the user this permission refers to. This is an output-only field which is populated when the permission type is "user" and the given user's Google+ profile privacy settings allow exposing their email address.
+ "photoLink": "A String", # A link to the profile photo, if available.
"role": "A String", # The primary role for this user. Allowed values are:
# - owner
# - reader
# - writer
- "photoLink": "A String", # A link to the profile photo, if available.
"type": "A String", # The account type. Allowed values are:
# - user
# - group
@@ -224,10 +244,13 @@
],
"selfLink": "A String", # A link back to this permission.
},
+ "originalFilename": "A String", # The original filename if the file was uploaded manually, or the original title if the file was inserted through the API. Note that renames of the title will not change the original filename. This will only be populated on files with content stored in Drive.
"fileExtension": "A String", # The file extension used when downloading this file. This field is read only. To set the extension, include it in the title when creating the file. This is only populated for files with content stored in Drive.
+ "headRevisionId": "A String", # The ID of the file's head revision. This will only be populated for files with content stored in Drive.
"selfLink": "A String", # A link back to this file.
"modifiedDate": "A String", # Last time this file was modified by anyone (formatted RFC 3339 timestamp). This is only mutable on update when the setModifiedDate parameter is set.
},
+ "modificationDate": "A String", # The time of this modification.
"id": "A String", # The ID of the change.
"selfLink": "A String", # A link back to this change.
"fileId": "A String", # The ID of the file associated with this change.
@@ -257,6 +280,8 @@
"deleted": True or False, # Whether the file has been deleted.
"file": { # The metadata for a file. # The updated state of the file. Present if the file has not been deleted.
"mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
+ "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
+ "appDataContents": True or False, # Whether this file is in the appdata folder.
"thumbnailLink": "A String", # A link to the file's thumbnail.
"labels": { # A group of labels for the file.
"restricted": True or False, # Whether viewers are prevented from downloading this file.
@@ -269,7 +294,6 @@
"text": "A String", # The text to be indexed for this file.
},
"explicitlyTrashed": True or False, # Whether this file has been explicitly trashed, as opposed to recursively trashed. This will only be populated if the file is trashed.
- "etag": "A String", # ETag of the file.
"lastModifyingUserName": "A String", # Name of the last user to modify this file.
"writersCanShare": True or False, # Whether writers can share the document with other users.
"owners": [ # The owner(s) of this file.
@@ -293,13 +317,13 @@
"displayName": "A String", # A plain text displayable name for this user.
"permissionId": "A String", # The user's ID as visible in the permissions collection.
},
- "title": "A String", # The title of this file.
+ "copyable": True or False, # Whether the file can be copied by the current user.
"ownerNames": [ # Name(s) of the owner(s) of this file.
"A String",
],
"sharedWithMeDate": "A String", # Time at which this file was shared with the user (formatted RFC 3339 timestamp).
"webViewLink": "A String", # A link only available on public folders for viewing their static web assets (HTML, CSS, JS, etc) via Google Drive's Website Hosting.
- "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
+ "etag": "A String", # ETag of the file.
"parents": [ # Collection of parent folders which contain this file.
# Setting this field will put the file in all of the provided folders. On insert, if no folders are provided, the file will be placed in the default root folder.
{ # A reference to a file's parent.
@@ -318,16 +342,9 @@
"mimeType": "A String", # The MIME type of the thumbnail.
"image": "A String", # The URL-safe Base64 encoded bytes of the thumbnail image.
},
- "originalFilename": "A String", # The original filename if the file was uploaded manually, or the original title if the file was inserted through the API. Note that renames of the title will not change the original filename. This will only be populated on files with content stored in Drive.
- "description": "A String", # A short description of the file.
- "webContentLink": "A String", # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
- "editable": True or False, # Whether the file can be edited by the current user.
- "kind": "drive#file", # The type of file. This is always drive#file.
- "quotaBytesUsed": "A String", # The number of quota bytes used by this file.
- "fileSize": "A String", # The size of the file in bytes. This is only populated for files with content stored in Drive.
- "createdDate": "A String", # Create time for this file (formatted ISO8601 timestamp).
- "md5Checksum": "A String", # An MD5 checksum for the content of this file. This is populated only for files with content stored in Drive.
- "iconLink": "A String", # A link to the file's icon.
+ "openWithLinks": { # A map of the id of each of the user's apps to a link to open this file with that app. Only populated when the drive.apps.readonly scope is used.
+ "a_key": "A String",
+ },
"imageMediaMetadata": { # Metadata about image media. This will only be present for image types, and its contents will depend on what can be parsed from the image content.
"exposureBias": 3.14, # The exposure bias of the photo (APEX value).
"exposureTime": 3.14, # The length of the exposure, in seconds.
@@ -355,23 +372,46 @@
"whiteBalance": "A String", # The white balance mode used to create the photo.
"cameraModel": "A String", # The model of the camera used to create the photo.
},
+ "description": "A String", # A short description of the file.
+ "webContentLink": "A String", # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
+ "editable": True or False, # Whether the file can be edited by the current user.
+ "kind": "drive#file", # The type of file. This is always drive#file.
+ "quotaBytesUsed": "A String", # The number of quota bytes used by this file.
+ "fileSize": "A String", # The size of the file in bytes. This is only populated for files with content stored in Drive.
+ "createdDate": "A String", # Create time for this file (formatted ISO8601 timestamp).
+ "properties": [ # The list of properties.
+ { # A key-value pair that is either public or private to an application.
+ "kind": "drive#property", # This is always drive#property.
+ "value": "A String", # The value of this property.
+ "etag": "A String", # ETag of the property.
+ "visibility": "A String", # The visibility of this property.
+ "key": "A String", # The key of this property.
+ "selfLink": "A String", # The link back to this property.
+ },
+ ],
+ "md5Checksum": "A String", # An MD5 checksum for the content of this file. This is populated only for files with content stored in Drive.
+ "iconLink": "A String", # A link to the file's icon.
+ "defaultOpenWithLink": "A String", # A link to open this file with the user's default app for this file. Only populated when the drive.apps.readonly scope is used.
"embedLink": "A String", # A link for embedding the file.
"alternateLink": "A String", # A link for opening the file in using a relevant Google editor or viewer.
+ "title": "A String", # The title of this file.
"modifiedByMeDate": "A String", # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
"downloadUrl": "A String", # Short lived download URL for the file. This is only populated for files with content stored in Drive.
"userPermission": { # A permission for a file. # The permissions for the authenticated user on this file.
"withLink": True or False, # Whether the link is required for this permission.
- "kind": "drive#permission", # This is always drive#permission.
+ "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is populated when the permission type is "user", "group" or "domain".
"name": "A String", # The name for this permission.
- "value": "A String", # The email address or domain name for the entity. This is not populated in responses.
+ "kind": "drive#permission", # This is always drive#permission.
+ "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses.
"id": "A String", # The ID of the permission.
"authKey": "A String", # The authkey parameter required for this permission.
"etag": "A String", # The ETag of the permission.
+ "emailAddress": "A String", # The email address of the user this permission refers to. This is an output-only field which is populated when the permission type is "user" and the given user's Google+ profile privacy settings allow exposing their email address.
+ "photoLink": "A String", # A link to the profile photo, if available.
"role": "A String", # The primary role for this user. Allowed values are:
# - owner
# - reader
# - writer
- "photoLink": "A String", # A link to the profile photo, if available.
"type": "A String", # The account type. Allowed values are:
# - user
# - group
@@ -382,10 +422,13 @@
],
"selfLink": "A String", # A link back to this permission.
},
+ "originalFilename": "A String", # The original filename if the file was uploaded manually, or the original title if the file was inserted through the API. Note that renames of the title will not change the original filename. This will only be populated on files with content stored in Drive.
"fileExtension": "A String", # The file extension used when downloading this file. This field is read only. To set the extension, include it in the title when creating the file. This is only populated for files with content stored in Drive.
+ "headRevisionId": "A String", # The ID of the file's head revision. This will only be populated for files with content stored in Drive.
"selfLink": "A String", # A link back to this file.
"modifiedDate": "A String", # Last time this file was modified by anyone (formatted RFC 3339 timestamp). This is only mutable on update when the setModifiedDate parameter is set.
},
+ "modificationDate": "A String", # The time of this modification.
"id": "A String", # The ID of the change.
"selfLink": "A String", # A link back to this change.
"fileId": "A String", # The ID of the file associated with this change.
@@ -412,4 +455,50 @@
</pre>
</div>
+<div class="method">
+ <code class="details" id="watch">watch(body, includeSubscribed=None, includeDeleted=None, pageToken=None, maxResults=None, startChangeId=None)</code>
+ <pre>Subscribe to changes for a user.
+
+Args:
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{
+ "resourceUri": "A String", # The canonicalized ID of the watched resource.
+ "kind": "api#channel", # A channel watching an API resource
+ "resourceId": "A String", # An opaque id that identifies the resource that is being watched. Stable across different API versions
+ "token": "A String", # An arbitrary string associated with the channel that is delivered to the target address with each event delivered over this channel.
+ "params": { # Additional parameters controlling delivery channel behavior
+ "a_key": "A String", # Declares a new parameter by name.
+ },
+ "expiration": "A String", # The expiration instant for this channel if it is defined.
+ "address": "A String", # The address of the receiving entity where events are delivered. Specific to the channel type.
+ "type": "A String", # The type of delivery mechanism used by this channel
+ "id": "A String", # A UUID for the channel
+ }
+
+ includeSubscribed: boolean, Whether to include shared files and public files the user has opened. When set to false, the list will include owned files plus any shared or public files the user has explictly added to a folder in Drive.
+ includeDeleted: boolean, Whether to include deleted items.
+ pageToken: string, Page token for changes.
+ maxResults: integer, Maximum number of changes to return.
+ startChangeId: string, Change ID to start listing changes from.
+
+Returns:
+ An object of the form:
+
+ {
+ "resourceUri": "A String", # The canonicalized ID of the watched resource.
+ "kind": "api#channel", # A channel watching an API resource
+ "resourceId": "A String", # An opaque id that identifies the resource that is being watched. Stable across different API versions
+ "token": "A String", # An arbitrary string associated with the channel that is delivered to the target address with each event delivered over this channel.
+ "params": { # Additional parameters controlling delivery channel behavior
+ "a_key": "A String", # Declares a new parameter by name.
+ },
+ "expiration": "A String", # The expiration instant for this channel if it is defined.
+ "address": "A String", # The address of the receiving entity where events are delivered. Specific to the channel type.
+ "type": "A String", # The type of delivery mechanism used by this channel
+ "id": "A String", # A UUID for the channel
+ }</pre>
+</div>
+
</body></html>
\ No newline at end of file
diff --git a/docs/dyn/drive_v2.channels.html b/docs/dyn/drive_v2.channels.html
new file mode 100644
index 0000000..6eaf6f7
--- /dev/null
+++ b/docs/dyn/drive_v2.channels.html
@@ -0,0 +1,106 @@
+<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="drive_v2.html">Drive API</a> . <a href="drive_v2.channels.html">channels</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#stop">stop(body)</a></code></p>
+<p class="firstline">A description of how to use this function</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="stop">stop(body)</code>
+ <pre>A description of how to use this function
+
+Args:
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{
+ "resourceUri": "A String", # The canonicalized ID of the watched resource.
+ "kind": "api#channel", # A channel watching an API resource
+ "resourceId": "A String", # An opaque id that identifies the resource that is being watched. Stable across different API versions
+ "token": "A String", # An arbitrary string associated with the channel that is delivered to the target address with each event delivered over this channel.
+ "params": { # Additional parameters controlling delivery channel behavior
+ "a_key": "A String", # Declares a new parameter by name.
+ },
+ "expiration": "A String", # The expiration instant for this channel if it is defined.
+ "address": "A String", # The address of the receiving entity where events are delivered. Specific to the channel type.
+ "type": "A String", # The type of delivery mechanism used by this channel
+ "id": "A String", # A UUID for the channel
+ }
+
+</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/drive_v2.comments.html b/docs/dyn/drive_v2.comments.html
index da882e7..5d95ed3 100644
--- a/docs/dyn/drive_v2.comments.html
+++ b/docs/dyn/drive_v2.comments.html
@@ -363,6 +363,8 @@
},
],
"kind": "drive#commentList", # This is always drive#commentList.
+ "selfLink": "A String", # A link back to this list.
+ "nextLink": "A String", # A link to the next page of comments.
}</pre>
</div>
diff --git a/docs/dyn/drive_v2.files.html b/docs/dyn/drive_v2.files.html
index 407b827..acbcd80 100644
--- a/docs/dyn/drive_v2.files.html
+++ b/docs/dyn/drive_v2.files.html
@@ -75,7 +75,7 @@
<h1><a href="drive_v2.html">Drive API</a> . <a href="drive_v2.files.html">files</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
- <code><a href="#copy">copy(fileId, body, pinned=None, convert=None, ocrLanguage=None, ocr=None, timedTextLanguage=None, timedTextTrackName=None)</a></code></p>
+ <code><a href="#copy">copy(fileId, body, pinned=None, convert=None, visibility=None, ocrLanguage=None, ocr=None, timedTextLanguage=None, timedTextTrackName=None)</a></code></p>
<p class="firstline">Creates a copy of the specified file.</p>
<p class="toc_element">
<code><a href="#delete">delete(fileId)</a></code></p>
@@ -84,7 +84,7 @@
<code><a href="#get">get(fileId, projection=None, updateViewedDate=None)</a></code></p>
<p class="firstline">Gets a file's metadata by ID.</p>
<p class="toc_element">
- <code><a href="#insert">insert(body=None, media_body=None, convert=None, useContentAsIndexableText=None, ocrLanguage=None, ocr=None, timedTextLanguage=None, timedTextTrackName=None, pinned=None)</a></code></p>
+ <code><a href="#insert">insert(body=None, media_body=None, convert=None, useContentAsIndexableText=None, visibility=None, ocrLanguage=None, ocr=None, timedTextLanguage=None, timedTextTrackName=None, pinned=None)</a></code></p>
<p class="firstline">Insert a new file.</p>
<p class="toc_element">
<code><a href="#list">list(q=None, projection=None, pageToken=None, maxResults=None)</a></code></p>
@@ -107,9 +107,12 @@
<p class="toc_element">
<code><a href="#update">update(fileId, body=None, newRevision=None, media_body=None, ocrLanguage=None, ocr=None, pinned=None, updateViewedDate=None, timedTextTrackName=None, convert=None, useContentAsIndexableText=None, setModifiedDate=None, timedTextLanguage=None)</a></code></p>
<p class="firstline">Updates file metadata and/or content.</p>
+<p class="toc_element">
+ <code><a href="#watch">watch(fileId, body, projection=None, updateViewedDate=None)</a></code></p>
+<p class="firstline">Subscribe to changes on a file</p>
<h3>Method Details</h3>
<div class="method">
- <code class="details" id="copy">copy(fileId, body, pinned=None, convert=None, ocrLanguage=None, ocr=None, timedTextLanguage=None, timedTextTrackName=None)</code>
+ <code class="details" id="copy">copy(fileId, body, pinned=None, convert=None, visibility=None, ocrLanguage=None, ocr=None, timedTextLanguage=None, timedTextTrackName=None)</code>
<pre>Creates a copy of the specified file.
Args:
@@ -119,6 +122,8 @@
{ # The metadata for a file.
"mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
+ "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
+ "appDataContents": True or False, # Whether this file is in the appdata folder.
"thumbnailLink": "A String", # A link to the file's thumbnail.
"labels": { # A group of labels for the file.
"restricted": True or False, # Whether viewers are prevented from downloading this file.
@@ -131,7 +136,6 @@
"text": "A String", # The text to be indexed for this file.
},
"explicitlyTrashed": True or False, # Whether this file has been explicitly trashed, as opposed to recursively trashed. This will only be populated if the file is trashed.
- "etag": "A String", # ETag of the file.
"lastModifyingUserName": "A String", # Name of the last user to modify this file.
"writersCanShare": True or False, # Whether writers can share the document with other users.
"owners": [ # The owner(s) of this file.
@@ -155,13 +159,13 @@
"displayName": "A String", # A plain text displayable name for this user.
"permissionId": "A String", # The user's ID as visible in the permissions collection.
},
- "title": "A String", # The title of this file.
+ "copyable": True or False, # Whether the file can be copied by the current user.
"ownerNames": [ # Name(s) of the owner(s) of this file.
"A String",
],
"sharedWithMeDate": "A String", # Time at which this file was shared with the user (formatted RFC 3339 timestamp).
"webViewLink": "A String", # A link only available on public folders for viewing their static web assets (HTML, CSS, JS, etc) via Google Drive's Website Hosting.
- "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
+ "etag": "A String", # ETag of the file.
"parents": [ # Collection of parent folders which contain this file.
# Setting this field will put the file in all of the provided folders. On insert, if no folders are provided, the file will be placed in the default root folder.
{ # A reference to a file's parent.
@@ -180,16 +184,9 @@
"mimeType": "A String", # The MIME type of the thumbnail.
"image": "A String", # The URL-safe Base64 encoded bytes of the thumbnail image.
},
- "originalFilename": "A String", # The original filename if the file was uploaded manually, or the original title if the file was inserted through the API. Note that renames of the title will not change the original filename. This will only be populated on files with content stored in Drive.
- "description": "A String", # A short description of the file.
- "webContentLink": "A String", # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
- "editable": True or False, # Whether the file can be edited by the current user.
- "kind": "drive#file", # The type of file. This is always drive#file.
- "quotaBytesUsed": "A String", # The number of quota bytes used by this file.
- "fileSize": "A String", # The size of the file in bytes. This is only populated for files with content stored in Drive.
- "createdDate": "A String", # Create time for this file (formatted ISO8601 timestamp).
- "md5Checksum": "A String", # An MD5 checksum for the content of this file. This is populated only for files with content stored in Drive.
- "iconLink": "A String", # A link to the file's icon.
+ "openWithLinks": { # A map of the id of each of the user's apps to a link to open this file with that app. Only populated when the drive.apps.readonly scope is used.
+ "a_key": "A String",
+ },
"imageMediaMetadata": { # Metadata about image media. This will only be present for image types, and its contents will depend on what can be parsed from the image content.
"exposureBias": 3.14, # The exposure bias of the photo (APEX value).
"exposureTime": 3.14, # The length of the exposure, in seconds.
@@ -217,23 +214,46 @@
"whiteBalance": "A String", # The white balance mode used to create the photo.
"cameraModel": "A String", # The model of the camera used to create the photo.
},
+ "description": "A String", # A short description of the file.
+ "webContentLink": "A String", # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
+ "editable": True or False, # Whether the file can be edited by the current user.
+ "kind": "drive#file", # The type of file. This is always drive#file.
+ "quotaBytesUsed": "A String", # The number of quota bytes used by this file.
+ "fileSize": "A String", # The size of the file in bytes. This is only populated for files with content stored in Drive.
+ "createdDate": "A String", # Create time for this file (formatted ISO8601 timestamp).
+ "properties": [ # The list of properties.
+ { # A key-value pair that is either public or private to an application.
+ "kind": "drive#property", # This is always drive#property.
+ "value": "A String", # The value of this property.
+ "etag": "A String", # ETag of the property.
+ "visibility": "A String", # The visibility of this property.
+ "key": "A String", # The key of this property.
+ "selfLink": "A String", # The link back to this property.
+ },
+ ],
+ "md5Checksum": "A String", # An MD5 checksum for the content of this file. This is populated only for files with content stored in Drive.
+ "iconLink": "A String", # A link to the file's icon.
+ "defaultOpenWithLink": "A String", # A link to open this file with the user's default app for this file. Only populated when the drive.apps.readonly scope is used.
"embedLink": "A String", # A link for embedding the file.
"alternateLink": "A String", # A link for opening the file in using a relevant Google editor or viewer.
+ "title": "A String", # The title of this file.
"modifiedByMeDate": "A String", # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
"downloadUrl": "A String", # Short lived download URL for the file. This is only populated for files with content stored in Drive.
"userPermission": { # A permission for a file. # The permissions for the authenticated user on this file.
"withLink": True or False, # Whether the link is required for this permission.
- "kind": "drive#permission", # This is always drive#permission.
+ "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is populated when the permission type is "user", "group" or "domain".
"name": "A String", # The name for this permission.
- "value": "A String", # The email address or domain name for the entity. This is not populated in responses.
+ "kind": "drive#permission", # This is always drive#permission.
+ "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses.
"id": "A String", # The ID of the permission.
"authKey": "A String", # The authkey parameter required for this permission.
"etag": "A String", # The ETag of the permission.
+ "emailAddress": "A String", # The email address of the user this permission refers to. This is an output-only field which is populated when the permission type is "user" and the given user's Google+ profile privacy settings allow exposing their email address.
+ "photoLink": "A String", # A link to the profile photo, if available.
"role": "A String", # The primary role for this user. Allowed values are:
# - owner
# - reader
# - writer
- "photoLink": "A String", # A link to the profile photo, if available.
"type": "A String", # The account type. Allowed values are:
# - user
# - group
@@ -244,13 +264,19 @@
],
"selfLink": "A String", # A link back to this permission.
},
+ "originalFilename": "A String", # The original filename if the file was uploaded manually, or the original title if the file was inserted through the API. Note that renames of the title will not change the original filename. This will only be populated on files with content stored in Drive.
"fileExtension": "A String", # The file extension used when downloading this file. This field is read only. To set the extension, include it in the title when creating the file. This is only populated for files with content stored in Drive.
+ "headRevisionId": "A String", # The ID of the file's head revision. This will only be populated for files with content stored in Drive.
"selfLink": "A String", # A link back to this file.
"modifiedDate": "A String", # Last time this file was modified by anyone (formatted RFC 3339 timestamp). This is only mutable on update when the setModifiedDate parameter is set.
}
pinned: boolean, Whether to pin the head revision of the new copy.
convert: boolean, Whether to convert this file to the corresponding Google Docs format.
+ visibility: string, The visibility of the new file. This parameter is only relevant when the source is not a native Google Doc and convert=false.
+ Allowed values
+ DEFAULT - The visibility of the new file is determined by the user's default visibility/sharing policies.
+ PRIVATE - The new file will be visible to only the owner.
ocrLanguage: string, If ocr is true, hints at the language to use. Valid values are ISO 639-1 codes.
ocr: boolean, Whether to attempt OCR on .jpg, .png, .gif, or .pdf uploads.
timedTextLanguage: string, The language of the timed text.
@@ -261,6 +287,8 @@
{ # The metadata for a file.
"mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
+ "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
+ "appDataContents": True or False, # Whether this file is in the appdata folder.
"thumbnailLink": "A String", # A link to the file's thumbnail.
"labels": { # A group of labels for the file.
"restricted": True or False, # Whether viewers are prevented from downloading this file.
@@ -273,7 +301,6 @@
"text": "A String", # The text to be indexed for this file.
},
"explicitlyTrashed": True or False, # Whether this file has been explicitly trashed, as opposed to recursively trashed. This will only be populated if the file is trashed.
- "etag": "A String", # ETag of the file.
"lastModifyingUserName": "A String", # Name of the last user to modify this file.
"writersCanShare": True or False, # Whether writers can share the document with other users.
"owners": [ # The owner(s) of this file.
@@ -297,13 +324,13 @@
"displayName": "A String", # A plain text displayable name for this user.
"permissionId": "A String", # The user's ID as visible in the permissions collection.
},
- "title": "A String", # The title of this file.
+ "copyable": True or False, # Whether the file can be copied by the current user.
"ownerNames": [ # Name(s) of the owner(s) of this file.
"A String",
],
"sharedWithMeDate": "A String", # Time at which this file was shared with the user (formatted RFC 3339 timestamp).
"webViewLink": "A String", # A link only available on public folders for viewing their static web assets (HTML, CSS, JS, etc) via Google Drive's Website Hosting.
- "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
+ "etag": "A String", # ETag of the file.
"parents": [ # Collection of parent folders which contain this file.
# Setting this field will put the file in all of the provided folders. On insert, if no folders are provided, the file will be placed in the default root folder.
{ # A reference to a file's parent.
@@ -322,16 +349,9 @@
"mimeType": "A String", # The MIME type of the thumbnail.
"image": "A String", # The URL-safe Base64 encoded bytes of the thumbnail image.
},
- "originalFilename": "A String", # The original filename if the file was uploaded manually, or the original title if the file was inserted through the API. Note that renames of the title will not change the original filename. This will only be populated on files with content stored in Drive.
- "description": "A String", # A short description of the file.
- "webContentLink": "A String", # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
- "editable": True or False, # Whether the file can be edited by the current user.
- "kind": "drive#file", # The type of file. This is always drive#file.
- "quotaBytesUsed": "A String", # The number of quota bytes used by this file.
- "fileSize": "A String", # The size of the file in bytes. This is only populated for files with content stored in Drive.
- "createdDate": "A String", # Create time for this file (formatted ISO8601 timestamp).
- "md5Checksum": "A String", # An MD5 checksum for the content of this file. This is populated only for files with content stored in Drive.
- "iconLink": "A String", # A link to the file's icon.
+ "openWithLinks": { # A map of the id of each of the user's apps to a link to open this file with that app. Only populated when the drive.apps.readonly scope is used.
+ "a_key": "A String",
+ },
"imageMediaMetadata": { # Metadata about image media. This will only be present for image types, and its contents will depend on what can be parsed from the image content.
"exposureBias": 3.14, # The exposure bias of the photo (APEX value).
"exposureTime": 3.14, # The length of the exposure, in seconds.
@@ -359,23 +379,46 @@
"whiteBalance": "A String", # The white balance mode used to create the photo.
"cameraModel": "A String", # The model of the camera used to create the photo.
},
+ "description": "A String", # A short description of the file.
+ "webContentLink": "A String", # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
+ "editable": True or False, # Whether the file can be edited by the current user.
+ "kind": "drive#file", # The type of file. This is always drive#file.
+ "quotaBytesUsed": "A String", # The number of quota bytes used by this file.
+ "fileSize": "A String", # The size of the file in bytes. This is only populated for files with content stored in Drive.
+ "createdDate": "A String", # Create time for this file (formatted ISO8601 timestamp).
+ "properties": [ # The list of properties.
+ { # A key-value pair that is either public or private to an application.
+ "kind": "drive#property", # This is always drive#property.
+ "value": "A String", # The value of this property.
+ "etag": "A String", # ETag of the property.
+ "visibility": "A String", # The visibility of this property.
+ "key": "A String", # The key of this property.
+ "selfLink": "A String", # The link back to this property.
+ },
+ ],
+ "md5Checksum": "A String", # An MD5 checksum for the content of this file. This is populated only for files with content stored in Drive.
+ "iconLink": "A String", # A link to the file's icon.
+ "defaultOpenWithLink": "A String", # A link to open this file with the user's default app for this file. Only populated when the drive.apps.readonly scope is used.
"embedLink": "A String", # A link for embedding the file.
"alternateLink": "A String", # A link for opening the file in using a relevant Google editor or viewer.
+ "title": "A String", # The title of this file.
"modifiedByMeDate": "A String", # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
"downloadUrl": "A String", # Short lived download URL for the file. This is only populated for files with content stored in Drive.
"userPermission": { # A permission for a file. # The permissions for the authenticated user on this file.
"withLink": True or False, # Whether the link is required for this permission.
- "kind": "drive#permission", # This is always drive#permission.
+ "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is populated when the permission type is "user", "group" or "domain".
"name": "A String", # The name for this permission.
- "value": "A String", # The email address or domain name for the entity. This is not populated in responses.
+ "kind": "drive#permission", # This is always drive#permission.
+ "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses.
"id": "A String", # The ID of the permission.
"authKey": "A String", # The authkey parameter required for this permission.
"etag": "A String", # The ETag of the permission.
+ "emailAddress": "A String", # The email address of the user this permission refers to. This is an output-only field which is populated when the permission type is "user" and the given user's Google+ profile privacy settings allow exposing their email address.
+ "photoLink": "A String", # A link to the profile photo, if available.
"role": "A String", # The primary role for this user. Allowed values are:
# - owner
# - reader
# - writer
- "photoLink": "A String", # A link to the profile photo, if available.
"type": "A String", # The account type. Allowed values are:
# - user
# - group
@@ -386,7 +429,9 @@
],
"selfLink": "A String", # A link back to this permission.
},
+ "originalFilename": "A String", # The original filename if the file was uploaded manually, or the original title if the file was inserted through the API. Note that renames of the title will not change the original filename. This will only be populated on files with content stored in Drive.
"fileExtension": "A String", # The file extension used when downloading this file. This field is read only. To set the extension, include it in the title when creating the file. This is only populated for files with content stored in Drive.
+ "headRevisionId": "A String", # The ID of the file's head revision. This will only be populated for files with content stored in Drive.
"selfLink": "A String", # A link back to this file.
"modifiedDate": "A String", # Last time this file was modified by anyone (formatted RFC 3339 timestamp). This is only mutable on update when the setModifiedDate parameter is set.
}</pre>
@@ -418,6 +463,8 @@
{ # The metadata for a file.
"mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
+ "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
+ "appDataContents": True or False, # Whether this file is in the appdata folder.
"thumbnailLink": "A String", # A link to the file's thumbnail.
"labels": { # A group of labels for the file.
"restricted": True or False, # Whether viewers are prevented from downloading this file.
@@ -430,7 +477,6 @@
"text": "A String", # The text to be indexed for this file.
},
"explicitlyTrashed": True or False, # Whether this file has been explicitly trashed, as opposed to recursively trashed. This will only be populated if the file is trashed.
- "etag": "A String", # ETag of the file.
"lastModifyingUserName": "A String", # Name of the last user to modify this file.
"writersCanShare": True or False, # Whether writers can share the document with other users.
"owners": [ # The owner(s) of this file.
@@ -454,13 +500,13 @@
"displayName": "A String", # A plain text displayable name for this user.
"permissionId": "A String", # The user's ID as visible in the permissions collection.
},
- "title": "A String", # The title of this file.
+ "copyable": True or False, # Whether the file can be copied by the current user.
"ownerNames": [ # Name(s) of the owner(s) of this file.
"A String",
],
"sharedWithMeDate": "A String", # Time at which this file was shared with the user (formatted RFC 3339 timestamp).
"webViewLink": "A String", # A link only available on public folders for viewing their static web assets (HTML, CSS, JS, etc) via Google Drive's Website Hosting.
- "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
+ "etag": "A String", # ETag of the file.
"parents": [ # Collection of parent folders which contain this file.
# Setting this field will put the file in all of the provided folders. On insert, if no folders are provided, the file will be placed in the default root folder.
{ # A reference to a file's parent.
@@ -479,16 +525,9 @@
"mimeType": "A String", # The MIME type of the thumbnail.
"image": "A String", # The URL-safe Base64 encoded bytes of the thumbnail image.
},
- "originalFilename": "A String", # The original filename if the file was uploaded manually, or the original title if the file was inserted through the API. Note that renames of the title will not change the original filename. This will only be populated on files with content stored in Drive.
- "description": "A String", # A short description of the file.
- "webContentLink": "A String", # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
- "editable": True or False, # Whether the file can be edited by the current user.
- "kind": "drive#file", # The type of file. This is always drive#file.
- "quotaBytesUsed": "A String", # The number of quota bytes used by this file.
- "fileSize": "A String", # The size of the file in bytes. This is only populated for files with content stored in Drive.
- "createdDate": "A String", # Create time for this file (formatted ISO8601 timestamp).
- "md5Checksum": "A String", # An MD5 checksum for the content of this file. This is populated only for files with content stored in Drive.
- "iconLink": "A String", # A link to the file's icon.
+ "openWithLinks": { # A map of the id of each of the user's apps to a link to open this file with that app. Only populated when the drive.apps.readonly scope is used.
+ "a_key": "A String",
+ },
"imageMediaMetadata": { # Metadata about image media. This will only be present for image types, and its contents will depend on what can be parsed from the image content.
"exposureBias": 3.14, # The exposure bias of the photo (APEX value).
"exposureTime": 3.14, # The length of the exposure, in seconds.
@@ -516,23 +555,46 @@
"whiteBalance": "A String", # The white balance mode used to create the photo.
"cameraModel": "A String", # The model of the camera used to create the photo.
},
+ "description": "A String", # A short description of the file.
+ "webContentLink": "A String", # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
+ "editable": True or False, # Whether the file can be edited by the current user.
+ "kind": "drive#file", # The type of file. This is always drive#file.
+ "quotaBytesUsed": "A String", # The number of quota bytes used by this file.
+ "fileSize": "A String", # The size of the file in bytes. This is only populated for files with content stored in Drive.
+ "createdDate": "A String", # Create time for this file (formatted ISO8601 timestamp).
+ "properties": [ # The list of properties.
+ { # A key-value pair that is either public or private to an application.
+ "kind": "drive#property", # This is always drive#property.
+ "value": "A String", # The value of this property.
+ "etag": "A String", # ETag of the property.
+ "visibility": "A String", # The visibility of this property.
+ "key": "A String", # The key of this property.
+ "selfLink": "A String", # The link back to this property.
+ },
+ ],
+ "md5Checksum": "A String", # An MD5 checksum for the content of this file. This is populated only for files with content stored in Drive.
+ "iconLink": "A String", # A link to the file's icon.
+ "defaultOpenWithLink": "A String", # A link to open this file with the user's default app for this file. Only populated when the drive.apps.readonly scope is used.
"embedLink": "A String", # A link for embedding the file.
"alternateLink": "A String", # A link for opening the file in using a relevant Google editor or viewer.
+ "title": "A String", # The title of this file.
"modifiedByMeDate": "A String", # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
"downloadUrl": "A String", # Short lived download URL for the file. This is only populated for files with content stored in Drive.
"userPermission": { # A permission for a file. # The permissions for the authenticated user on this file.
"withLink": True or False, # Whether the link is required for this permission.
- "kind": "drive#permission", # This is always drive#permission.
+ "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is populated when the permission type is "user", "group" or "domain".
"name": "A String", # The name for this permission.
- "value": "A String", # The email address or domain name for the entity. This is not populated in responses.
+ "kind": "drive#permission", # This is always drive#permission.
+ "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses.
"id": "A String", # The ID of the permission.
"authKey": "A String", # The authkey parameter required for this permission.
"etag": "A String", # The ETag of the permission.
+ "emailAddress": "A String", # The email address of the user this permission refers to. This is an output-only field which is populated when the permission type is "user" and the given user's Google+ profile privacy settings allow exposing their email address.
+ "photoLink": "A String", # A link to the profile photo, if available.
"role": "A String", # The primary role for this user. Allowed values are:
# - owner
# - reader
# - writer
- "photoLink": "A String", # A link to the profile photo, if available.
"type": "A String", # The account type. Allowed values are:
# - user
# - group
@@ -543,14 +605,16 @@
],
"selfLink": "A String", # A link back to this permission.
},
+ "originalFilename": "A String", # The original filename if the file was uploaded manually, or the original title if the file was inserted through the API. Note that renames of the title will not change the original filename. This will only be populated on files with content stored in Drive.
"fileExtension": "A String", # The file extension used when downloading this file. This field is read only. To set the extension, include it in the title when creating the file. This is only populated for files with content stored in Drive.
+ "headRevisionId": "A String", # The ID of the file's head revision. This will only be populated for files with content stored in Drive.
"selfLink": "A String", # A link back to this file.
"modifiedDate": "A String", # Last time this file was modified by anyone (formatted RFC 3339 timestamp). This is only mutable on update when the setModifiedDate parameter is set.
}</pre>
</div>
<div class="method">
- <code class="details" id="insert">insert(body=None, media_body=None, convert=None, useContentAsIndexableText=None, ocrLanguage=None, ocr=None, timedTextLanguage=None, timedTextTrackName=None, pinned=None)</code>
+ <code class="details" id="insert">insert(body=None, media_body=None, convert=None, useContentAsIndexableText=None, visibility=None, ocrLanguage=None, ocr=None, timedTextLanguage=None, timedTextTrackName=None, pinned=None)</code>
<pre>Insert a new file.
Args:
@@ -559,6 +623,8 @@
{ # The metadata for a file.
"mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
+ "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
+ "appDataContents": True or False, # Whether this file is in the appdata folder.
"thumbnailLink": "A String", # A link to the file's thumbnail.
"labels": { # A group of labels for the file.
"restricted": True or False, # Whether viewers are prevented from downloading this file.
@@ -571,7 +637,6 @@
"text": "A String", # The text to be indexed for this file.
},
"explicitlyTrashed": True or False, # Whether this file has been explicitly trashed, as opposed to recursively trashed. This will only be populated if the file is trashed.
- "etag": "A String", # ETag of the file.
"lastModifyingUserName": "A String", # Name of the last user to modify this file.
"writersCanShare": True or False, # Whether writers can share the document with other users.
"owners": [ # The owner(s) of this file.
@@ -595,13 +660,13 @@
"displayName": "A String", # A plain text displayable name for this user.
"permissionId": "A String", # The user's ID as visible in the permissions collection.
},
- "title": "A String", # The title of this file.
+ "copyable": True or False, # Whether the file can be copied by the current user.
"ownerNames": [ # Name(s) of the owner(s) of this file.
"A String",
],
"sharedWithMeDate": "A String", # Time at which this file was shared with the user (formatted RFC 3339 timestamp).
"webViewLink": "A String", # A link only available on public folders for viewing their static web assets (HTML, CSS, JS, etc) via Google Drive's Website Hosting.
- "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
+ "etag": "A String", # ETag of the file.
"parents": [ # Collection of parent folders which contain this file.
# Setting this field will put the file in all of the provided folders. On insert, if no folders are provided, the file will be placed in the default root folder.
{ # A reference to a file's parent.
@@ -620,16 +685,9 @@
"mimeType": "A String", # The MIME type of the thumbnail.
"image": "A String", # The URL-safe Base64 encoded bytes of the thumbnail image.
},
- "originalFilename": "A String", # The original filename if the file was uploaded manually, or the original title if the file was inserted through the API. Note that renames of the title will not change the original filename. This will only be populated on files with content stored in Drive.
- "description": "A String", # A short description of the file.
- "webContentLink": "A String", # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
- "editable": True or False, # Whether the file can be edited by the current user.
- "kind": "drive#file", # The type of file. This is always drive#file.
- "quotaBytesUsed": "A String", # The number of quota bytes used by this file.
- "fileSize": "A String", # The size of the file in bytes. This is only populated for files with content stored in Drive.
- "createdDate": "A String", # Create time for this file (formatted ISO8601 timestamp).
- "md5Checksum": "A String", # An MD5 checksum for the content of this file. This is populated only for files with content stored in Drive.
- "iconLink": "A String", # A link to the file's icon.
+ "openWithLinks": { # A map of the id of each of the user's apps to a link to open this file with that app. Only populated when the drive.apps.readonly scope is used.
+ "a_key": "A String",
+ },
"imageMediaMetadata": { # Metadata about image media. This will only be present for image types, and its contents will depend on what can be parsed from the image content.
"exposureBias": 3.14, # The exposure bias of the photo (APEX value).
"exposureTime": 3.14, # The length of the exposure, in seconds.
@@ -657,23 +715,46 @@
"whiteBalance": "A String", # The white balance mode used to create the photo.
"cameraModel": "A String", # The model of the camera used to create the photo.
},
+ "description": "A String", # A short description of the file.
+ "webContentLink": "A String", # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
+ "editable": True or False, # Whether the file can be edited by the current user.
+ "kind": "drive#file", # The type of file. This is always drive#file.
+ "quotaBytesUsed": "A String", # The number of quota bytes used by this file.
+ "fileSize": "A String", # The size of the file in bytes. This is only populated for files with content stored in Drive.
+ "createdDate": "A String", # Create time for this file (formatted ISO8601 timestamp).
+ "properties": [ # The list of properties.
+ { # A key-value pair that is either public or private to an application.
+ "kind": "drive#property", # This is always drive#property.
+ "value": "A String", # The value of this property.
+ "etag": "A String", # ETag of the property.
+ "visibility": "A String", # The visibility of this property.
+ "key": "A String", # The key of this property.
+ "selfLink": "A String", # The link back to this property.
+ },
+ ],
+ "md5Checksum": "A String", # An MD5 checksum for the content of this file. This is populated only for files with content stored in Drive.
+ "iconLink": "A String", # A link to the file's icon.
+ "defaultOpenWithLink": "A String", # A link to open this file with the user's default app for this file. Only populated when the drive.apps.readonly scope is used.
"embedLink": "A String", # A link for embedding the file.
"alternateLink": "A String", # A link for opening the file in using a relevant Google editor or viewer.
+ "title": "A String", # The title of this file.
"modifiedByMeDate": "A String", # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
"downloadUrl": "A String", # Short lived download URL for the file. This is only populated for files with content stored in Drive.
"userPermission": { # A permission for a file. # The permissions for the authenticated user on this file.
"withLink": True or False, # Whether the link is required for this permission.
- "kind": "drive#permission", # This is always drive#permission.
+ "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is populated when the permission type is "user", "group" or "domain".
"name": "A String", # The name for this permission.
- "value": "A String", # The email address or domain name for the entity. This is not populated in responses.
+ "kind": "drive#permission", # This is always drive#permission.
+ "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses.
"id": "A String", # The ID of the permission.
"authKey": "A String", # The authkey parameter required for this permission.
"etag": "A String", # The ETag of the permission.
+ "emailAddress": "A String", # The email address of the user this permission refers to. This is an output-only field which is populated when the permission type is "user" and the given user's Google+ profile privacy settings allow exposing their email address.
+ "photoLink": "A String", # A link to the profile photo, if available.
"role": "A String", # The primary role for this user. Allowed values are:
# - owner
# - reader
# - writer
- "photoLink": "A String", # A link to the profile photo, if available.
"type": "A String", # The account type. Allowed values are:
# - user
# - group
@@ -684,7 +765,9 @@
],
"selfLink": "A String", # A link back to this permission.
},
+ "originalFilename": "A String", # The original filename if the file was uploaded manually, or the original title if the file was inserted through the API. Note that renames of the title will not change the original filename. This will only be populated on files with content stored in Drive.
"fileExtension": "A String", # The file extension used when downloading this file. This field is read only. To set the extension, include it in the title when creating the file. This is only populated for files with content stored in Drive.
+ "headRevisionId": "A String", # The ID of the file's head revision. This will only be populated for files with content stored in Drive.
"selfLink": "A String", # A link back to this file.
"modifiedDate": "A String", # Last time this file was modified by anyone (formatted RFC 3339 timestamp). This is only mutable on update when the setModifiedDate parameter is set.
}
@@ -692,6 +775,10 @@
media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
convert: boolean, Whether to convert this file to the corresponding Google Docs format.
useContentAsIndexableText: boolean, Whether to use the content as indexable text.
+ visibility: string, The visibility of the new file. This parameter is only relevant when convert=false.
+ Allowed values
+ DEFAULT - The visibility of the new file is determined by the user's default visibility/sharing policies.
+ PRIVATE - The new file will be visible to only the owner.
ocrLanguage: string, If ocr is true, hints at the language to use. Valid values are ISO 639-1 codes.
ocr: boolean, Whether to attempt OCR on .jpg, .png, .gif, or .pdf uploads.
timedTextLanguage: string, The language of the timed text.
@@ -703,6 +790,8 @@
{ # The metadata for a file.
"mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
+ "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
+ "appDataContents": True or False, # Whether this file is in the appdata folder.
"thumbnailLink": "A String", # A link to the file's thumbnail.
"labels": { # A group of labels for the file.
"restricted": True or False, # Whether viewers are prevented from downloading this file.
@@ -715,7 +804,6 @@
"text": "A String", # The text to be indexed for this file.
},
"explicitlyTrashed": True or False, # Whether this file has been explicitly trashed, as opposed to recursively trashed. This will only be populated if the file is trashed.
- "etag": "A String", # ETag of the file.
"lastModifyingUserName": "A String", # Name of the last user to modify this file.
"writersCanShare": True or False, # Whether writers can share the document with other users.
"owners": [ # The owner(s) of this file.
@@ -739,13 +827,13 @@
"displayName": "A String", # A plain text displayable name for this user.
"permissionId": "A String", # The user's ID as visible in the permissions collection.
},
- "title": "A String", # The title of this file.
+ "copyable": True or False, # Whether the file can be copied by the current user.
"ownerNames": [ # Name(s) of the owner(s) of this file.
"A String",
],
"sharedWithMeDate": "A String", # Time at which this file was shared with the user (formatted RFC 3339 timestamp).
"webViewLink": "A String", # A link only available on public folders for viewing their static web assets (HTML, CSS, JS, etc) via Google Drive's Website Hosting.
- "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
+ "etag": "A String", # ETag of the file.
"parents": [ # Collection of parent folders which contain this file.
# Setting this field will put the file in all of the provided folders. On insert, if no folders are provided, the file will be placed in the default root folder.
{ # A reference to a file's parent.
@@ -764,16 +852,9 @@
"mimeType": "A String", # The MIME type of the thumbnail.
"image": "A String", # The URL-safe Base64 encoded bytes of the thumbnail image.
},
- "originalFilename": "A String", # The original filename if the file was uploaded manually, or the original title if the file was inserted through the API. Note that renames of the title will not change the original filename. This will only be populated on files with content stored in Drive.
- "description": "A String", # A short description of the file.
- "webContentLink": "A String", # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
- "editable": True or False, # Whether the file can be edited by the current user.
- "kind": "drive#file", # The type of file. This is always drive#file.
- "quotaBytesUsed": "A String", # The number of quota bytes used by this file.
- "fileSize": "A String", # The size of the file in bytes. This is only populated for files with content stored in Drive.
- "createdDate": "A String", # Create time for this file (formatted ISO8601 timestamp).
- "md5Checksum": "A String", # An MD5 checksum for the content of this file. This is populated only for files with content stored in Drive.
- "iconLink": "A String", # A link to the file's icon.
+ "openWithLinks": { # A map of the id of each of the user's apps to a link to open this file with that app. Only populated when the drive.apps.readonly scope is used.
+ "a_key": "A String",
+ },
"imageMediaMetadata": { # Metadata about image media. This will only be present for image types, and its contents will depend on what can be parsed from the image content.
"exposureBias": 3.14, # The exposure bias of the photo (APEX value).
"exposureTime": 3.14, # The length of the exposure, in seconds.
@@ -801,23 +882,46 @@
"whiteBalance": "A String", # The white balance mode used to create the photo.
"cameraModel": "A String", # The model of the camera used to create the photo.
},
+ "description": "A String", # A short description of the file.
+ "webContentLink": "A String", # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
+ "editable": True or False, # Whether the file can be edited by the current user.
+ "kind": "drive#file", # The type of file. This is always drive#file.
+ "quotaBytesUsed": "A String", # The number of quota bytes used by this file.
+ "fileSize": "A String", # The size of the file in bytes. This is only populated for files with content stored in Drive.
+ "createdDate": "A String", # Create time for this file (formatted ISO8601 timestamp).
+ "properties": [ # The list of properties.
+ { # A key-value pair that is either public or private to an application.
+ "kind": "drive#property", # This is always drive#property.
+ "value": "A String", # The value of this property.
+ "etag": "A String", # ETag of the property.
+ "visibility": "A String", # The visibility of this property.
+ "key": "A String", # The key of this property.
+ "selfLink": "A String", # The link back to this property.
+ },
+ ],
+ "md5Checksum": "A String", # An MD5 checksum for the content of this file. This is populated only for files with content stored in Drive.
+ "iconLink": "A String", # A link to the file's icon.
+ "defaultOpenWithLink": "A String", # A link to open this file with the user's default app for this file. Only populated when the drive.apps.readonly scope is used.
"embedLink": "A String", # A link for embedding the file.
"alternateLink": "A String", # A link for opening the file in using a relevant Google editor or viewer.
+ "title": "A String", # The title of this file.
"modifiedByMeDate": "A String", # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
"downloadUrl": "A String", # Short lived download URL for the file. This is only populated for files with content stored in Drive.
"userPermission": { # A permission for a file. # The permissions for the authenticated user on this file.
"withLink": True or False, # Whether the link is required for this permission.
- "kind": "drive#permission", # This is always drive#permission.
+ "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is populated when the permission type is "user", "group" or "domain".
"name": "A String", # The name for this permission.
- "value": "A String", # The email address or domain name for the entity. This is not populated in responses.
+ "kind": "drive#permission", # This is always drive#permission.
+ "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses.
"id": "A String", # The ID of the permission.
"authKey": "A String", # The authkey parameter required for this permission.
"etag": "A String", # The ETag of the permission.
+ "emailAddress": "A String", # The email address of the user this permission refers to. This is an output-only field which is populated when the permission type is "user" and the given user's Google+ profile privacy settings allow exposing their email address.
+ "photoLink": "A String", # A link to the profile photo, if available.
"role": "A String", # The primary role for this user. Allowed values are:
# - owner
# - reader
# - writer
- "photoLink": "A String", # A link to the profile photo, if available.
"type": "A String", # The account type. Allowed values are:
# - user
# - group
@@ -828,7 +932,9 @@
],
"selfLink": "A String", # A link back to this permission.
},
+ "originalFilename": "A String", # The original filename if the file was uploaded manually, or the original title if the file was inserted through the API. Note that renames of the title will not change the original filename. This will only be populated on files with content stored in Drive.
"fileExtension": "A String", # The file extension used when downloading this file. This field is read only. To set the extension, include it in the title when creating the file. This is only populated for files with content stored in Drive.
+ "headRevisionId": "A String", # The ID of the file's head revision. This will only be populated for files with content stored in Drive.
"selfLink": "A String", # A link back to this file.
"modifiedDate": "A String", # Last time this file was modified by anyone (formatted RFC 3339 timestamp). This is only mutable on update when the setModifiedDate parameter is set.
}</pre>
@@ -856,6 +962,8 @@
"items": [ # The actual list of files.
{ # The metadata for a file.
"mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
+ "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
+ "appDataContents": True or False, # Whether this file is in the appdata folder.
"thumbnailLink": "A String", # A link to the file's thumbnail.
"labels": { # A group of labels for the file.
"restricted": True or False, # Whether viewers are prevented from downloading this file.
@@ -868,7 +976,6 @@
"text": "A String", # The text to be indexed for this file.
},
"explicitlyTrashed": True or False, # Whether this file has been explicitly trashed, as opposed to recursively trashed. This will only be populated if the file is trashed.
- "etag": "A String", # ETag of the file.
"lastModifyingUserName": "A String", # Name of the last user to modify this file.
"writersCanShare": True or False, # Whether writers can share the document with other users.
"owners": [ # The owner(s) of this file.
@@ -892,13 +999,13 @@
"displayName": "A String", # A plain text displayable name for this user.
"permissionId": "A String", # The user's ID as visible in the permissions collection.
},
- "title": "A String", # The title of this file.
+ "copyable": True or False, # Whether the file can be copied by the current user.
"ownerNames": [ # Name(s) of the owner(s) of this file.
"A String",
],
"sharedWithMeDate": "A String", # Time at which this file was shared with the user (formatted RFC 3339 timestamp).
"webViewLink": "A String", # A link only available on public folders for viewing their static web assets (HTML, CSS, JS, etc) via Google Drive's Website Hosting.
- "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
+ "etag": "A String", # ETag of the file.
"parents": [ # Collection of parent folders which contain this file.
# Setting this field will put the file in all of the provided folders. On insert, if no folders are provided, the file will be placed in the default root folder.
{ # A reference to a file's parent.
@@ -917,16 +1024,9 @@
"mimeType": "A String", # The MIME type of the thumbnail.
"image": "A String", # The URL-safe Base64 encoded bytes of the thumbnail image.
},
- "originalFilename": "A String", # The original filename if the file was uploaded manually, or the original title if the file was inserted through the API. Note that renames of the title will not change the original filename. This will only be populated on files with content stored in Drive.
- "description": "A String", # A short description of the file.
- "webContentLink": "A String", # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
- "editable": True or False, # Whether the file can be edited by the current user.
- "kind": "drive#file", # The type of file. This is always drive#file.
- "quotaBytesUsed": "A String", # The number of quota bytes used by this file.
- "fileSize": "A String", # The size of the file in bytes. This is only populated for files with content stored in Drive.
- "createdDate": "A String", # Create time for this file (formatted ISO8601 timestamp).
- "md5Checksum": "A String", # An MD5 checksum for the content of this file. This is populated only for files with content stored in Drive.
- "iconLink": "A String", # A link to the file's icon.
+ "openWithLinks": { # A map of the id of each of the user's apps to a link to open this file with that app. Only populated when the drive.apps.readonly scope is used.
+ "a_key": "A String",
+ },
"imageMediaMetadata": { # Metadata about image media. This will only be present for image types, and its contents will depend on what can be parsed from the image content.
"exposureBias": 3.14, # The exposure bias of the photo (APEX value).
"exposureTime": 3.14, # The length of the exposure, in seconds.
@@ -954,23 +1054,46 @@
"whiteBalance": "A String", # The white balance mode used to create the photo.
"cameraModel": "A String", # The model of the camera used to create the photo.
},
+ "description": "A String", # A short description of the file.
+ "webContentLink": "A String", # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
+ "editable": True or False, # Whether the file can be edited by the current user.
+ "kind": "drive#file", # The type of file. This is always drive#file.
+ "quotaBytesUsed": "A String", # The number of quota bytes used by this file.
+ "fileSize": "A String", # The size of the file in bytes. This is only populated for files with content stored in Drive.
+ "createdDate": "A String", # Create time for this file (formatted ISO8601 timestamp).
+ "properties": [ # The list of properties.
+ { # A key-value pair that is either public or private to an application.
+ "kind": "drive#property", # This is always drive#property.
+ "value": "A String", # The value of this property.
+ "etag": "A String", # ETag of the property.
+ "visibility": "A String", # The visibility of this property.
+ "key": "A String", # The key of this property.
+ "selfLink": "A String", # The link back to this property.
+ },
+ ],
+ "md5Checksum": "A String", # An MD5 checksum for the content of this file. This is populated only for files with content stored in Drive.
+ "iconLink": "A String", # A link to the file's icon.
+ "defaultOpenWithLink": "A String", # A link to open this file with the user's default app for this file. Only populated when the drive.apps.readonly scope is used.
"embedLink": "A String", # A link for embedding the file.
"alternateLink": "A String", # A link for opening the file in using a relevant Google editor or viewer.
+ "title": "A String", # The title of this file.
"modifiedByMeDate": "A String", # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
"downloadUrl": "A String", # Short lived download URL for the file. This is only populated for files with content stored in Drive.
"userPermission": { # A permission for a file. # The permissions for the authenticated user on this file.
"withLink": True or False, # Whether the link is required for this permission.
- "kind": "drive#permission", # This is always drive#permission.
+ "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is populated when the permission type is "user", "group" or "domain".
"name": "A String", # The name for this permission.
- "value": "A String", # The email address or domain name for the entity. This is not populated in responses.
+ "kind": "drive#permission", # This is always drive#permission.
+ "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses.
"id": "A String", # The ID of the permission.
"authKey": "A String", # The authkey parameter required for this permission.
"etag": "A String", # The ETag of the permission.
+ "emailAddress": "A String", # The email address of the user this permission refers to. This is an output-only field which is populated when the permission type is "user" and the given user's Google+ profile privacy settings allow exposing their email address.
+ "photoLink": "A String", # A link to the profile photo, if available.
"role": "A String", # The primary role for this user. Allowed values are:
# - owner
# - reader
# - writer
- "photoLink": "A String", # A link to the profile photo, if available.
"type": "A String", # The account type. Allowed values are:
# - user
# - group
@@ -981,7 +1104,9 @@
],
"selfLink": "A String", # A link back to this permission.
},
+ "originalFilename": "A String", # The original filename if the file was uploaded manually, or the original title if the file was inserted through the API. Note that renames of the title will not change the original filename. This will only be populated on files with content stored in Drive.
"fileExtension": "A String", # The file extension used when downloading this file. This field is read only. To set the extension, include it in the title when creating the file. This is only populated for files with content stored in Drive.
+ "headRevisionId": "A String", # The ID of the file's head revision. This will only be populated for files with content stored in Drive.
"selfLink": "A String", # A link back to this file.
"modifiedDate": "A String", # Last time this file was modified by anyone (formatted RFC 3339 timestamp). This is only mutable on update when the setModifiedDate parameter is set.
},
@@ -1017,6 +1142,8 @@
{ # The metadata for a file.
"mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
+ "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
+ "appDataContents": True or False, # Whether this file is in the appdata folder.
"thumbnailLink": "A String", # A link to the file's thumbnail.
"labels": { # A group of labels for the file.
"restricted": True or False, # Whether viewers are prevented from downloading this file.
@@ -1029,7 +1156,6 @@
"text": "A String", # The text to be indexed for this file.
},
"explicitlyTrashed": True or False, # Whether this file has been explicitly trashed, as opposed to recursively trashed. This will only be populated if the file is trashed.
- "etag": "A String", # ETag of the file.
"lastModifyingUserName": "A String", # Name of the last user to modify this file.
"writersCanShare": True or False, # Whether writers can share the document with other users.
"owners": [ # The owner(s) of this file.
@@ -1053,13 +1179,13 @@
"displayName": "A String", # A plain text displayable name for this user.
"permissionId": "A String", # The user's ID as visible in the permissions collection.
},
- "title": "A String", # The title of this file.
+ "copyable": True or False, # Whether the file can be copied by the current user.
"ownerNames": [ # Name(s) of the owner(s) of this file.
"A String",
],
"sharedWithMeDate": "A String", # Time at which this file was shared with the user (formatted RFC 3339 timestamp).
"webViewLink": "A String", # A link only available on public folders for viewing their static web assets (HTML, CSS, JS, etc) via Google Drive's Website Hosting.
- "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
+ "etag": "A String", # ETag of the file.
"parents": [ # Collection of parent folders which contain this file.
# Setting this field will put the file in all of the provided folders. On insert, if no folders are provided, the file will be placed in the default root folder.
{ # A reference to a file's parent.
@@ -1078,16 +1204,9 @@
"mimeType": "A String", # The MIME type of the thumbnail.
"image": "A String", # The URL-safe Base64 encoded bytes of the thumbnail image.
},
- "originalFilename": "A String", # The original filename if the file was uploaded manually, or the original title if the file was inserted through the API. Note that renames of the title will not change the original filename. This will only be populated on files with content stored in Drive.
- "description": "A String", # A short description of the file.
- "webContentLink": "A String", # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
- "editable": True or False, # Whether the file can be edited by the current user.
- "kind": "drive#file", # The type of file. This is always drive#file.
- "quotaBytesUsed": "A String", # The number of quota bytes used by this file.
- "fileSize": "A String", # The size of the file in bytes. This is only populated for files with content stored in Drive.
- "createdDate": "A String", # Create time for this file (formatted ISO8601 timestamp).
- "md5Checksum": "A String", # An MD5 checksum for the content of this file. This is populated only for files with content stored in Drive.
- "iconLink": "A String", # A link to the file's icon.
+ "openWithLinks": { # A map of the id of each of the user's apps to a link to open this file with that app. Only populated when the drive.apps.readonly scope is used.
+ "a_key": "A String",
+ },
"imageMediaMetadata": { # Metadata about image media. This will only be present for image types, and its contents will depend on what can be parsed from the image content.
"exposureBias": 3.14, # The exposure bias of the photo (APEX value).
"exposureTime": 3.14, # The length of the exposure, in seconds.
@@ -1115,23 +1234,46 @@
"whiteBalance": "A String", # The white balance mode used to create the photo.
"cameraModel": "A String", # The model of the camera used to create the photo.
},
+ "description": "A String", # A short description of the file.
+ "webContentLink": "A String", # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
+ "editable": True or False, # Whether the file can be edited by the current user.
+ "kind": "drive#file", # The type of file. This is always drive#file.
+ "quotaBytesUsed": "A String", # The number of quota bytes used by this file.
+ "fileSize": "A String", # The size of the file in bytes. This is only populated for files with content stored in Drive.
+ "createdDate": "A String", # Create time for this file (formatted ISO8601 timestamp).
+ "properties": [ # The list of properties.
+ { # A key-value pair that is either public or private to an application.
+ "kind": "drive#property", # This is always drive#property.
+ "value": "A String", # The value of this property.
+ "etag": "A String", # ETag of the property.
+ "visibility": "A String", # The visibility of this property.
+ "key": "A String", # The key of this property.
+ "selfLink": "A String", # The link back to this property.
+ },
+ ],
+ "md5Checksum": "A String", # An MD5 checksum for the content of this file. This is populated only for files with content stored in Drive.
+ "iconLink": "A String", # A link to the file's icon.
+ "defaultOpenWithLink": "A String", # A link to open this file with the user's default app for this file. Only populated when the drive.apps.readonly scope is used.
"embedLink": "A String", # A link for embedding the file.
"alternateLink": "A String", # A link for opening the file in using a relevant Google editor or viewer.
+ "title": "A String", # The title of this file.
"modifiedByMeDate": "A String", # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
"downloadUrl": "A String", # Short lived download URL for the file. This is only populated for files with content stored in Drive.
"userPermission": { # A permission for a file. # The permissions for the authenticated user on this file.
"withLink": True or False, # Whether the link is required for this permission.
- "kind": "drive#permission", # This is always drive#permission.
+ "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is populated when the permission type is "user", "group" or "domain".
"name": "A String", # The name for this permission.
- "value": "A String", # The email address or domain name for the entity. This is not populated in responses.
+ "kind": "drive#permission", # This is always drive#permission.
+ "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses.
"id": "A String", # The ID of the permission.
"authKey": "A String", # The authkey parameter required for this permission.
"etag": "A String", # The ETag of the permission.
+ "emailAddress": "A String", # The email address of the user this permission refers to. This is an output-only field which is populated when the permission type is "user" and the given user's Google+ profile privacy settings allow exposing their email address.
+ "photoLink": "A String", # A link to the profile photo, if available.
"role": "A String", # The primary role for this user. Allowed values are:
# - owner
# - reader
# - writer
- "photoLink": "A String", # A link to the profile photo, if available.
"type": "A String", # The account type. Allowed values are:
# - user
# - group
@@ -1142,7 +1284,9 @@
],
"selfLink": "A String", # A link back to this permission.
},
+ "originalFilename": "A String", # The original filename if the file was uploaded manually, or the original title if the file was inserted through the API. Note that renames of the title will not change the original filename. This will only be populated on files with content stored in Drive.
"fileExtension": "A String", # The file extension used when downloading this file. This field is read only. To set the extension, include it in the title when creating the file. This is only populated for files with content stored in Drive.
+ "headRevisionId": "A String", # The ID of the file's head revision. This will only be populated for files with content stored in Drive.
"selfLink": "A String", # A link back to this file.
"modifiedDate": "A String", # Last time this file was modified by anyone (formatted RFC 3339 timestamp). This is only mutable on update when the setModifiedDate parameter is set.
}
@@ -1163,6 +1307,8 @@
{ # The metadata for a file.
"mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
+ "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
+ "appDataContents": True or False, # Whether this file is in the appdata folder.
"thumbnailLink": "A String", # A link to the file's thumbnail.
"labels": { # A group of labels for the file.
"restricted": True or False, # Whether viewers are prevented from downloading this file.
@@ -1175,7 +1321,6 @@
"text": "A String", # The text to be indexed for this file.
},
"explicitlyTrashed": True or False, # Whether this file has been explicitly trashed, as opposed to recursively trashed. This will only be populated if the file is trashed.
- "etag": "A String", # ETag of the file.
"lastModifyingUserName": "A String", # Name of the last user to modify this file.
"writersCanShare": True or False, # Whether writers can share the document with other users.
"owners": [ # The owner(s) of this file.
@@ -1199,13 +1344,13 @@
"displayName": "A String", # A plain text displayable name for this user.
"permissionId": "A String", # The user's ID as visible in the permissions collection.
},
- "title": "A String", # The title of this file.
+ "copyable": True or False, # Whether the file can be copied by the current user.
"ownerNames": [ # Name(s) of the owner(s) of this file.
"A String",
],
"sharedWithMeDate": "A String", # Time at which this file was shared with the user (formatted RFC 3339 timestamp).
"webViewLink": "A String", # A link only available on public folders for viewing their static web assets (HTML, CSS, JS, etc) via Google Drive's Website Hosting.
- "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
+ "etag": "A String", # ETag of the file.
"parents": [ # Collection of parent folders which contain this file.
# Setting this field will put the file in all of the provided folders. On insert, if no folders are provided, the file will be placed in the default root folder.
{ # A reference to a file's parent.
@@ -1224,16 +1369,9 @@
"mimeType": "A String", # The MIME type of the thumbnail.
"image": "A String", # The URL-safe Base64 encoded bytes of the thumbnail image.
},
- "originalFilename": "A String", # The original filename if the file was uploaded manually, or the original title if the file was inserted through the API. Note that renames of the title will not change the original filename. This will only be populated on files with content stored in Drive.
- "description": "A String", # A short description of the file.
- "webContentLink": "A String", # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
- "editable": True or False, # Whether the file can be edited by the current user.
- "kind": "drive#file", # The type of file. This is always drive#file.
- "quotaBytesUsed": "A String", # The number of quota bytes used by this file.
- "fileSize": "A String", # The size of the file in bytes. This is only populated for files with content stored in Drive.
- "createdDate": "A String", # Create time for this file (formatted ISO8601 timestamp).
- "md5Checksum": "A String", # An MD5 checksum for the content of this file. This is populated only for files with content stored in Drive.
- "iconLink": "A String", # A link to the file's icon.
+ "openWithLinks": { # A map of the id of each of the user's apps to a link to open this file with that app. Only populated when the drive.apps.readonly scope is used.
+ "a_key": "A String",
+ },
"imageMediaMetadata": { # Metadata about image media. This will only be present for image types, and its contents will depend on what can be parsed from the image content.
"exposureBias": 3.14, # The exposure bias of the photo (APEX value).
"exposureTime": 3.14, # The length of the exposure, in seconds.
@@ -1261,23 +1399,46 @@
"whiteBalance": "A String", # The white balance mode used to create the photo.
"cameraModel": "A String", # The model of the camera used to create the photo.
},
+ "description": "A String", # A short description of the file.
+ "webContentLink": "A String", # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
+ "editable": True or False, # Whether the file can be edited by the current user.
+ "kind": "drive#file", # The type of file. This is always drive#file.
+ "quotaBytesUsed": "A String", # The number of quota bytes used by this file.
+ "fileSize": "A String", # The size of the file in bytes. This is only populated for files with content stored in Drive.
+ "createdDate": "A String", # Create time for this file (formatted ISO8601 timestamp).
+ "properties": [ # The list of properties.
+ { # A key-value pair that is either public or private to an application.
+ "kind": "drive#property", # This is always drive#property.
+ "value": "A String", # The value of this property.
+ "etag": "A String", # ETag of the property.
+ "visibility": "A String", # The visibility of this property.
+ "key": "A String", # The key of this property.
+ "selfLink": "A String", # The link back to this property.
+ },
+ ],
+ "md5Checksum": "A String", # An MD5 checksum for the content of this file. This is populated only for files with content stored in Drive.
+ "iconLink": "A String", # A link to the file's icon.
+ "defaultOpenWithLink": "A String", # A link to open this file with the user's default app for this file. Only populated when the drive.apps.readonly scope is used.
"embedLink": "A String", # A link for embedding the file.
"alternateLink": "A String", # A link for opening the file in using a relevant Google editor or viewer.
+ "title": "A String", # The title of this file.
"modifiedByMeDate": "A String", # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
"downloadUrl": "A String", # Short lived download URL for the file. This is only populated for files with content stored in Drive.
"userPermission": { # A permission for a file. # The permissions for the authenticated user on this file.
"withLink": True or False, # Whether the link is required for this permission.
- "kind": "drive#permission", # This is always drive#permission.
+ "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is populated when the permission type is "user", "group" or "domain".
"name": "A String", # The name for this permission.
- "value": "A String", # The email address or domain name for the entity. This is not populated in responses.
+ "kind": "drive#permission", # This is always drive#permission.
+ "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses.
"id": "A String", # The ID of the permission.
"authKey": "A String", # The authkey parameter required for this permission.
"etag": "A String", # The ETag of the permission.
+ "emailAddress": "A String", # The email address of the user this permission refers to. This is an output-only field which is populated when the permission type is "user" and the given user's Google+ profile privacy settings allow exposing their email address.
+ "photoLink": "A String", # A link to the profile photo, if available.
"role": "A String", # The primary role for this user. Allowed values are:
# - owner
# - reader
# - writer
- "photoLink": "A String", # A link to the profile photo, if available.
"type": "A String", # The account type. Allowed values are:
# - user
# - group
@@ -1288,7 +1449,9 @@
],
"selfLink": "A String", # A link back to this permission.
},
+ "originalFilename": "A String", # The original filename if the file was uploaded manually, or the original title if the file was inserted through the API. Note that renames of the title will not change the original filename. This will only be populated on files with content stored in Drive.
"fileExtension": "A String", # The file extension used when downloading this file. This field is read only. To set the extension, include it in the title when creating the file. This is only populated for files with content stored in Drive.
+ "headRevisionId": "A String", # The ID of the file's head revision. This will only be populated for files with content stored in Drive.
"selfLink": "A String", # A link back to this file.
"modifiedDate": "A String", # Last time this file was modified by anyone (formatted RFC 3339 timestamp). This is only mutable on update when the setModifiedDate parameter is set.
}</pre>
@@ -1306,6 +1469,8 @@
{ # The metadata for a file.
"mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
+ "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
+ "appDataContents": True or False, # Whether this file is in the appdata folder.
"thumbnailLink": "A String", # A link to the file's thumbnail.
"labels": { # A group of labels for the file.
"restricted": True or False, # Whether viewers are prevented from downloading this file.
@@ -1318,7 +1483,6 @@
"text": "A String", # The text to be indexed for this file.
},
"explicitlyTrashed": True or False, # Whether this file has been explicitly trashed, as opposed to recursively trashed. This will only be populated if the file is trashed.
- "etag": "A String", # ETag of the file.
"lastModifyingUserName": "A String", # Name of the last user to modify this file.
"writersCanShare": True or False, # Whether writers can share the document with other users.
"owners": [ # The owner(s) of this file.
@@ -1342,13 +1506,13 @@
"displayName": "A String", # A plain text displayable name for this user.
"permissionId": "A String", # The user's ID as visible in the permissions collection.
},
- "title": "A String", # The title of this file.
+ "copyable": True or False, # Whether the file can be copied by the current user.
"ownerNames": [ # Name(s) of the owner(s) of this file.
"A String",
],
"sharedWithMeDate": "A String", # Time at which this file was shared with the user (formatted RFC 3339 timestamp).
"webViewLink": "A String", # A link only available on public folders for viewing their static web assets (HTML, CSS, JS, etc) via Google Drive's Website Hosting.
- "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
+ "etag": "A String", # ETag of the file.
"parents": [ # Collection of parent folders which contain this file.
# Setting this field will put the file in all of the provided folders. On insert, if no folders are provided, the file will be placed in the default root folder.
{ # A reference to a file's parent.
@@ -1367,16 +1531,9 @@
"mimeType": "A String", # The MIME type of the thumbnail.
"image": "A String", # The URL-safe Base64 encoded bytes of the thumbnail image.
},
- "originalFilename": "A String", # The original filename if the file was uploaded manually, or the original title if the file was inserted through the API. Note that renames of the title will not change the original filename. This will only be populated on files with content stored in Drive.
- "description": "A String", # A short description of the file.
- "webContentLink": "A String", # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
- "editable": True or False, # Whether the file can be edited by the current user.
- "kind": "drive#file", # The type of file. This is always drive#file.
- "quotaBytesUsed": "A String", # The number of quota bytes used by this file.
- "fileSize": "A String", # The size of the file in bytes. This is only populated for files with content stored in Drive.
- "createdDate": "A String", # Create time for this file (formatted ISO8601 timestamp).
- "md5Checksum": "A String", # An MD5 checksum for the content of this file. This is populated only for files with content stored in Drive.
- "iconLink": "A String", # A link to the file's icon.
+ "openWithLinks": { # A map of the id of each of the user's apps to a link to open this file with that app. Only populated when the drive.apps.readonly scope is used.
+ "a_key": "A String",
+ },
"imageMediaMetadata": { # Metadata about image media. This will only be present for image types, and its contents will depend on what can be parsed from the image content.
"exposureBias": 3.14, # The exposure bias of the photo (APEX value).
"exposureTime": 3.14, # The length of the exposure, in seconds.
@@ -1404,23 +1561,46 @@
"whiteBalance": "A String", # The white balance mode used to create the photo.
"cameraModel": "A String", # The model of the camera used to create the photo.
},
+ "description": "A String", # A short description of the file.
+ "webContentLink": "A String", # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
+ "editable": True or False, # Whether the file can be edited by the current user.
+ "kind": "drive#file", # The type of file. This is always drive#file.
+ "quotaBytesUsed": "A String", # The number of quota bytes used by this file.
+ "fileSize": "A String", # The size of the file in bytes. This is only populated for files with content stored in Drive.
+ "createdDate": "A String", # Create time for this file (formatted ISO8601 timestamp).
+ "properties": [ # The list of properties.
+ { # A key-value pair that is either public or private to an application.
+ "kind": "drive#property", # This is always drive#property.
+ "value": "A String", # The value of this property.
+ "etag": "A String", # ETag of the property.
+ "visibility": "A String", # The visibility of this property.
+ "key": "A String", # The key of this property.
+ "selfLink": "A String", # The link back to this property.
+ },
+ ],
+ "md5Checksum": "A String", # An MD5 checksum for the content of this file. This is populated only for files with content stored in Drive.
+ "iconLink": "A String", # A link to the file's icon.
+ "defaultOpenWithLink": "A String", # A link to open this file with the user's default app for this file. Only populated when the drive.apps.readonly scope is used.
"embedLink": "A String", # A link for embedding the file.
"alternateLink": "A String", # A link for opening the file in using a relevant Google editor or viewer.
+ "title": "A String", # The title of this file.
"modifiedByMeDate": "A String", # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
"downloadUrl": "A String", # Short lived download URL for the file. This is only populated for files with content stored in Drive.
"userPermission": { # A permission for a file. # The permissions for the authenticated user on this file.
"withLink": True or False, # Whether the link is required for this permission.
- "kind": "drive#permission", # This is always drive#permission.
+ "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is populated when the permission type is "user", "group" or "domain".
"name": "A String", # The name for this permission.
- "value": "A String", # The email address or domain name for the entity. This is not populated in responses.
+ "kind": "drive#permission", # This is always drive#permission.
+ "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses.
"id": "A String", # The ID of the permission.
"authKey": "A String", # The authkey parameter required for this permission.
"etag": "A String", # The ETag of the permission.
+ "emailAddress": "A String", # The email address of the user this permission refers to. This is an output-only field which is populated when the permission type is "user" and the given user's Google+ profile privacy settings allow exposing their email address.
+ "photoLink": "A String", # A link to the profile photo, if available.
"role": "A String", # The primary role for this user. Allowed values are:
# - owner
# - reader
# - writer
- "photoLink": "A String", # A link to the profile photo, if available.
"type": "A String", # The account type. Allowed values are:
# - user
# - group
@@ -1431,7 +1611,9 @@
],
"selfLink": "A String", # A link back to this permission.
},
+ "originalFilename": "A String", # The original filename if the file was uploaded manually, or the original title if the file was inserted through the API. Note that renames of the title will not change the original filename. This will only be populated on files with content stored in Drive.
"fileExtension": "A String", # The file extension used when downloading this file. This field is read only. To set the extension, include it in the title when creating the file. This is only populated for files with content stored in Drive.
+ "headRevisionId": "A String", # The ID of the file's head revision. This will only be populated for files with content stored in Drive.
"selfLink": "A String", # A link back to this file.
"modifiedDate": "A String", # Last time this file was modified by anyone (formatted RFC 3339 timestamp). This is only mutable on update when the setModifiedDate parameter is set.
}</pre>
@@ -1449,6 +1631,8 @@
{ # The metadata for a file.
"mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
+ "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
+ "appDataContents": True or False, # Whether this file is in the appdata folder.
"thumbnailLink": "A String", # A link to the file's thumbnail.
"labels": { # A group of labels for the file.
"restricted": True or False, # Whether viewers are prevented from downloading this file.
@@ -1461,7 +1645,6 @@
"text": "A String", # The text to be indexed for this file.
},
"explicitlyTrashed": True or False, # Whether this file has been explicitly trashed, as opposed to recursively trashed. This will only be populated if the file is trashed.
- "etag": "A String", # ETag of the file.
"lastModifyingUserName": "A String", # Name of the last user to modify this file.
"writersCanShare": True or False, # Whether writers can share the document with other users.
"owners": [ # The owner(s) of this file.
@@ -1485,13 +1668,13 @@
"displayName": "A String", # A plain text displayable name for this user.
"permissionId": "A String", # The user's ID as visible in the permissions collection.
},
- "title": "A String", # The title of this file.
+ "copyable": True or False, # Whether the file can be copied by the current user.
"ownerNames": [ # Name(s) of the owner(s) of this file.
"A String",
],
"sharedWithMeDate": "A String", # Time at which this file was shared with the user (formatted RFC 3339 timestamp).
"webViewLink": "A String", # A link only available on public folders for viewing their static web assets (HTML, CSS, JS, etc) via Google Drive's Website Hosting.
- "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
+ "etag": "A String", # ETag of the file.
"parents": [ # Collection of parent folders which contain this file.
# Setting this field will put the file in all of the provided folders. On insert, if no folders are provided, the file will be placed in the default root folder.
{ # A reference to a file's parent.
@@ -1510,16 +1693,9 @@
"mimeType": "A String", # The MIME type of the thumbnail.
"image": "A String", # The URL-safe Base64 encoded bytes of the thumbnail image.
},
- "originalFilename": "A String", # The original filename if the file was uploaded manually, or the original title if the file was inserted through the API. Note that renames of the title will not change the original filename. This will only be populated on files with content stored in Drive.
- "description": "A String", # A short description of the file.
- "webContentLink": "A String", # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
- "editable": True or False, # Whether the file can be edited by the current user.
- "kind": "drive#file", # The type of file. This is always drive#file.
- "quotaBytesUsed": "A String", # The number of quota bytes used by this file.
- "fileSize": "A String", # The size of the file in bytes. This is only populated for files with content stored in Drive.
- "createdDate": "A String", # Create time for this file (formatted ISO8601 timestamp).
- "md5Checksum": "A String", # An MD5 checksum for the content of this file. This is populated only for files with content stored in Drive.
- "iconLink": "A String", # A link to the file's icon.
+ "openWithLinks": { # A map of the id of each of the user's apps to a link to open this file with that app. Only populated when the drive.apps.readonly scope is used.
+ "a_key": "A String",
+ },
"imageMediaMetadata": { # Metadata about image media. This will only be present for image types, and its contents will depend on what can be parsed from the image content.
"exposureBias": 3.14, # The exposure bias of the photo (APEX value).
"exposureTime": 3.14, # The length of the exposure, in seconds.
@@ -1547,23 +1723,46 @@
"whiteBalance": "A String", # The white balance mode used to create the photo.
"cameraModel": "A String", # The model of the camera used to create the photo.
},
+ "description": "A String", # A short description of the file.
+ "webContentLink": "A String", # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
+ "editable": True or False, # Whether the file can be edited by the current user.
+ "kind": "drive#file", # The type of file. This is always drive#file.
+ "quotaBytesUsed": "A String", # The number of quota bytes used by this file.
+ "fileSize": "A String", # The size of the file in bytes. This is only populated for files with content stored in Drive.
+ "createdDate": "A String", # Create time for this file (formatted ISO8601 timestamp).
+ "properties": [ # The list of properties.
+ { # A key-value pair that is either public or private to an application.
+ "kind": "drive#property", # This is always drive#property.
+ "value": "A String", # The value of this property.
+ "etag": "A String", # ETag of the property.
+ "visibility": "A String", # The visibility of this property.
+ "key": "A String", # The key of this property.
+ "selfLink": "A String", # The link back to this property.
+ },
+ ],
+ "md5Checksum": "A String", # An MD5 checksum for the content of this file. This is populated only for files with content stored in Drive.
+ "iconLink": "A String", # A link to the file's icon.
+ "defaultOpenWithLink": "A String", # A link to open this file with the user's default app for this file. Only populated when the drive.apps.readonly scope is used.
"embedLink": "A String", # A link for embedding the file.
"alternateLink": "A String", # A link for opening the file in using a relevant Google editor or viewer.
+ "title": "A String", # The title of this file.
"modifiedByMeDate": "A String", # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
"downloadUrl": "A String", # Short lived download URL for the file. This is only populated for files with content stored in Drive.
"userPermission": { # A permission for a file. # The permissions for the authenticated user on this file.
"withLink": True or False, # Whether the link is required for this permission.
- "kind": "drive#permission", # This is always drive#permission.
+ "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is populated when the permission type is "user", "group" or "domain".
"name": "A String", # The name for this permission.
- "value": "A String", # The email address or domain name for the entity. This is not populated in responses.
+ "kind": "drive#permission", # This is always drive#permission.
+ "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses.
"id": "A String", # The ID of the permission.
"authKey": "A String", # The authkey parameter required for this permission.
"etag": "A String", # The ETag of the permission.
+ "emailAddress": "A String", # The email address of the user this permission refers to. This is an output-only field which is populated when the permission type is "user" and the given user's Google+ profile privacy settings allow exposing their email address.
+ "photoLink": "A String", # A link to the profile photo, if available.
"role": "A String", # The primary role for this user. Allowed values are:
# - owner
# - reader
# - writer
- "photoLink": "A String", # A link to the profile photo, if available.
"type": "A String", # The account type. Allowed values are:
# - user
# - group
@@ -1574,7 +1773,9 @@
],
"selfLink": "A String", # A link back to this permission.
},
+ "originalFilename": "A String", # The original filename if the file was uploaded manually, or the original title if the file was inserted through the API. Note that renames of the title will not change the original filename. This will only be populated on files with content stored in Drive.
"fileExtension": "A String", # The file extension used when downloading this file. This field is read only. To set the extension, include it in the title when creating the file. This is only populated for files with content stored in Drive.
+ "headRevisionId": "A String", # The ID of the file's head revision. This will only be populated for files with content stored in Drive.
"selfLink": "A String", # A link back to this file.
"modifiedDate": "A String", # Last time this file was modified by anyone (formatted RFC 3339 timestamp). This is only mutable on update when the setModifiedDate parameter is set.
}</pre>
@@ -1592,6 +1793,8 @@
{ # The metadata for a file.
"mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
+ "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
+ "appDataContents": True or False, # Whether this file is in the appdata folder.
"thumbnailLink": "A String", # A link to the file's thumbnail.
"labels": { # A group of labels for the file.
"restricted": True or False, # Whether viewers are prevented from downloading this file.
@@ -1604,7 +1807,6 @@
"text": "A String", # The text to be indexed for this file.
},
"explicitlyTrashed": True or False, # Whether this file has been explicitly trashed, as opposed to recursively trashed. This will only be populated if the file is trashed.
- "etag": "A String", # ETag of the file.
"lastModifyingUserName": "A String", # Name of the last user to modify this file.
"writersCanShare": True or False, # Whether writers can share the document with other users.
"owners": [ # The owner(s) of this file.
@@ -1628,13 +1830,13 @@
"displayName": "A String", # A plain text displayable name for this user.
"permissionId": "A String", # The user's ID as visible in the permissions collection.
},
- "title": "A String", # The title of this file.
+ "copyable": True or False, # Whether the file can be copied by the current user.
"ownerNames": [ # Name(s) of the owner(s) of this file.
"A String",
],
"sharedWithMeDate": "A String", # Time at which this file was shared with the user (formatted RFC 3339 timestamp).
"webViewLink": "A String", # A link only available on public folders for viewing their static web assets (HTML, CSS, JS, etc) via Google Drive's Website Hosting.
- "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
+ "etag": "A String", # ETag of the file.
"parents": [ # Collection of parent folders which contain this file.
# Setting this field will put the file in all of the provided folders. On insert, if no folders are provided, the file will be placed in the default root folder.
{ # A reference to a file's parent.
@@ -1653,16 +1855,9 @@
"mimeType": "A String", # The MIME type of the thumbnail.
"image": "A String", # The URL-safe Base64 encoded bytes of the thumbnail image.
},
- "originalFilename": "A String", # The original filename if the file was uploaded manually, or the original title if the file was inserted through the API. Note that renames of the title will not change the original filename. This will only be populated on files with content stored in Drive.
- "description": "A String", # A short description of the file.
- "webContentLink": "A String", # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
- "editable": True or False, # Whether the file can be edited by the current user.
- "kind": "drive#file", # The type of file. This is always drive#file.
- "quotaBytesUsed": "A String", # The number of quota bytes used by this file.
- "fileSize": "A String", # The size of the file in bytes. This is only populated for files with content stored in Drive.
- "createdDate": "A String", # Create time for this file (formatted ISO8601 timestamp).
- "md5Checksum": "A String", # An MD5 checksum for the content of this file. This is populated only for files with content stored in Drive.
- "iconLink": "A String", # A link to the file's icon.
+ "openWithLinks": { # A map of the id of each of the user's apps to a link to open this file with that app. Only populated when the drive.apps.readonly scope is used.
+ "a_key": "A String",
+ },
"imageMediaMetadata": { # Metadata about image media. This will only be present for image types, and its contents will depend on what can be parsed from the image content.
"exposureBias": 3.14, # The exposure bias of the photo (APEX value).
"exposureTime": 3.14, # The length of the exposure, in seconds.
@@ -1690,23 +1885,46 @@
"whiteBalance": "A String", # The white balance mode used to create the photo.
"cameraModel": "A String", # The model of the camera used to create the photo.
},
+ "description": "A String", # A short description of the file.
+ "webContentLink": "A String", # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
+ "editable": True or False, # Whether the file can be edited by the current user.
+ "kind": "drive#file", # The type of file. This is always drive#file.
+ "quotaBytesUsed": "A String", # The number of quota bytes used by this file.
+ "fileSize": "A String", # The size of the file in bytes. This is only populated for files with content stored in Drive.
+ "createdDate": "A String", # Create time for this file (formatted ISO8601 timestamp).
+ "properties": [ # The list of properties.
+ { # A key-value pair that is either public or private to an application.
+ "kind": "drive#property", # This is always drive#property.
+ "value": "A String", # The value of this property.
+ "etag": "A String", # ETag of the property.
+ "visibility": "A String", # The visibility of this property.
+ "key": "A String", # The key of this property.
+ "selfLink": "A String", # The link back to this property.
+ },
+ ],
+ "md5Checksum": "A String", # An MD5 checksum for the content of this file. This is populated only for files with content stored in Drive.
+ "iconLink": "A String", # A link to the file's icon.
+ "defaultOpenWithLink": "A String", # A link to open this file with the user's default app for this file. Only populated when the drive.apps.readonly scope is used.
"embedLink": "A String", # A link for embedding the file.
"alternateLink": "A String", # A link for opening the file in using a relevant Google editor or viewer.
+ "title": "A String", # The title of this file.
"modifiedByMeDate": "A String", # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
"downloadUrl": "A String", # Short lived download URL for the file. This is only populated for files with content stored in Drive.
"userPermission": { # A permission for a file. # The permissions for the authenticated user on this file.
"withLink": True or False, # Whether the link is required for this permission.
- "kind": "drive#permission", # This is always drive#permission.
+ "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is populated when the permission type is "user", "group" or "domain".
"name": "A String", # The name for this permission.
- "value": "A String", # The email address or domain name for the entity. This is not populated in responses.
+ "kind": "drive#permission", # This is always drive#permission.
+ "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses.
"id": "A String", # The ID of the permission.
"authKey": "A String", # The authkey parameter required for this permission.
"etag": "A String", # The ETag of the permission.
+ "emailAddress": "A String", # The email address of the user this permission refers to. This is an output-only field which is populated when the permission type is "user" and the given user's Google+ profile privacy settings allow exposing their email address.
+ "photoLink": "A String", # A link to the profile photo, if available.
"role": "A String", # The primary role for this user. Allowed values are:
# - owner
# - reader
# - writer
- "photoLink": "A String", # A link to the profile photo, if available.
"type": "A String", # The account type. Allowed values are:
# - user
# - group
@@ -1717,7 +1935,9 @@
],
"selfLink": "A String", # A link back to this permission.
},
+ "originalFilename": "A String", # The original filename if the file was uploaded manually, or the original title if the file was inserted through the API. Note that renames of the title will not change the original filename. This will only be populated on files with content stored in Drive.
"fileExtension": "A String", # The file extension used when downloading this file. This field is read only. To set the extension, include it in the title when creating the file. This is only populated for files with content stored in Drive.
+ "headRevisionId": "A String", # The ID of the file's head revision. This will only be populated for files with content stored in Drive.
"selfLink": "A String", # A link back to this file.
"modifiedDate": "A String", # Last time this file was modified by anyone (formatted RFC 3339 timestamp). This is only mutable on update when the setModifiedDate parameter is set.
}</pre>
@@ -1734,6 +1954,8 @@
{ # The metadata for a file.
"mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
+ "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
+ "appDataContents": True or False, # Whether this file is in the appdata folder.
"thumbnailLink": "A String", # A link to the file's thumbnail.
"labels": { # A group of labels for the file.
"restricted": True or False, # Whether viewers are prevented from downloading this file.
@@ -1746,7 +1968,6 @@
"text": "A String", # The text to be indexed for this file.
},
"explicitlyTrashed": True or False, # Whether this file has been explicitly trashed, as opposed to recursively trashed. This will only be populated if the file is trashed.
- "etag": "A String", # ETag of the file.
"lastModifyingUserName": "A String", # Name of the last user to modify this file.
"writersCanShare": True or False, # Whether writers can share the document with other users.
"owners": [ # The owner(s) of this file.
@@ -1770,13 +1991,13 @@
"displayName": "A String", # A plain text displayable name for this user.
"permissionId": "A String", # The user's ID as visible in the permissions collection.
},
- "title": "A String", # The title of this file.
+ "copyable": True or False, # Whether the file can be copied by the current user.
"ownerNames": [ # Name(s) of the owner(s) of this file.
"A String",
],
"sharedWithMeDate": "A String", # Time at which this file was shared with the user (formatted RFC 3339 timestamp).
"webViewLink": "A String", # A link only available on public folders for viewing their static web assets (HTML, CSS, JS, etc) via Google Drive's Website Hosting.
- "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
+ "etag": "A String", # ETag of the file.
"parents": [ # Collection of parent folders which contain this file.
# Setting this field will put the file in all of the provided folders. On insert, if no folders are provided, the file will be placed in the default root folder.
{ # A reference to a file's parent.
@@ -1795,16 +2016,9 @@
"mimeType": "A String", # The MIME type of the thumbnail.
"image": "A String", # The URL-safe Base64 encoded bytes of the thumbnail image.
},
- "originalFilename": "A String", # The original filename if the file was uploaded manually, or the original title if the file was inserted through the API. Note that renames of the title will not change the original filename. This will only be populated on files with content stored in Drive.
- "description": "A String", # A short description of the file.
- "webContentLink": "A String", # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
- "editable": True or False, # Whether the file can be edited by the current user.
- "kind": "drive#file", # The type of file. This is always drive#file.
- "quotaBytesUsed": "A String", # The number of quota bytes used by this file.
- "fileSize": "A String", # The size of the file in bytes. This is only populated for files with content stored in Drive.
- "createdDate": "A String", # Create time for this file (formatted ISO8601 timestamp).
- "md5Checksum": "A String", # An MD5 checksum for the content of this file. This is populated only for files with content stored in Drive.
- "iconLink": "A String", # A link to the file's icon.
+ "openWithLinks": { # A map of the id of each of the user's apps to a link to open this file with that app. Only populated when the drive.apps.readonly scope is used.
+ "a_key": "A String",
+ },
"imageMediaMetadata": { # Metadata about image media. This will only be present for image types, and its contents will depend on what can be parsed from the image content.
"exposureBias": 3.14, # The exposure bias of the photo (APEX value).
"exposureTime": 3.14, # The length of the exposure, in seconds.
@@ -1832,23 +2046,46 @@
"whiteBalance": "A String", # The white balance mode used to create the photo.
"cameraModel": "A String", # The model of the camera used to create the photo.
},
+ "description": "A String", # A short description of the file.
+ "webContentLink": "A String", # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
+ "editable": True or False, # Whether the file can be edited by the current user.
+ "kind": "drive#file", # The type of file. This is always drive#file.
+ "quotaBytesUsed": "A String", # The number of quota bytes used by this file.
+ "fileSize": "A String", # The size of the file in bytes. This is only populated for files with content stored in Drive.
+ "createdDate": "A String", # Create time for this file (formatted ISO8601 timestamp).
+ "properties": [ # The list of properties.
+ { # A key-value pair that is either public or private to an application.
+ "kind": "drive#property", # This is always drive#property.
+ "value": "A String", # The value of this property.
+ "etag": "A String", # ETag of the property.
+ "visibility": "A String", # The visibility of this property.
+ "key": "A String", # The key of this property.
+ "selfLink": "A String", # The link back to this property.
+ },
+ ],
+ "md5Checksum": "A String", # An MD5 checksum for the content of this file. This is populated only for files with content stored in Drive.
+ "iconLink": "A String", # A link to the file's icon.
+ "defaultOpenWithLink": "A String", # A link to open this file with the user's default app for this file. Only populated when the drive.apps.readonly scope is used.
"embedLink": "A String", # A link for embedding the file.
"alternateLink": "A String", # A link for opening the file in using a relevant Google editor or viewer.
+ "title": "A String", # The title of this file.
"modifiedByMeDate": "A String", # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
"downloadUrl": "A String", # Short lived download URL for the file. This is only populated for files with content stored in Drive.
"userPermission": { # A permission for a file. # The permissions for the authenticated user on this file.
"withLink": True or False, # Whether the link is required for this permission.
- "kind": "drive#permission", # This is always drive#permission.
+ "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is populated when the permission type is "user", "group" or "domain".
"name": "A String", # The name for this permission.
- "value": "A String", # The email address or domain name for the entity. This is not populated in responses.
+ "kind": "drive#permission", # This is always drive#permission.
+ "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses.
"id": "A String", # The ID of the permission.
"authKey": "A String", # The authkey parameter required for this permission.
"etag": "A String", # The ETag of the permission.
+ "emailAddress": "A String", # The email address of the user this permission refers to. This is an output-only field which is populated when the permission type is "user" and the given user's Google+ profile privacy settings allow exposing their email address.
+ "photoLink": "A String", # A link to the profile photo, if available.
"role": "A String", # The primary role for this user. Allowed values are:
# - owner
# - reader
# - writer
- "photoLink": "A String", # A link to the profile photo, if available.
"type": "A String", # The account type. Allowed values are:
# - user
# - group
@@ -1859,7 +2096,9 @@
],
"selfLink": "A String", # A link back to this permission.
},
+ "originalFilename": "A String", # The original filename if the file was uploaded manually, or the original title if the file was inserted through the API. Note that renames of the title will not change the original filename. This will only be populated on files with content stored in Drive.
"fileExtension": "A String", # The file extension used when downloading this file. This field is read only. To set the extension, include it in the title when creating the file. This is only populated for files with content stored in Drive.
+ "headRevisionId": "A String", # The ID of the file's head revision. This will only be populated for files with content stored in Drive.
"selfLink": "A String", # A link back to this file.
"modifiedDate": "A String", # Last time this file was modified by anyone (formatted RFC 3339 timestamp). This is only mutable on update when the setModifiedDate parameter is set.
}
@@ -1881,6 +2120,8 @@
{ # The metadata for a file.
"mimeType": "A String", # The MIME type of the file. This is only mutable on update when uploading new content. This field can be left blank, and the mimetype will be determined from the uploaded content's MIME type.
+ "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
+ "appDataContents": True or False, # Whether this file is in the appdata folder.
"thumbnailLink": "A String", # A link to the file's thumbnail.
"labels": { # A group of labels for the file.
"restricted": True or False, # Whether viewers are prevented from downloading this file.
@@ -1893,7 +2134,6 @@
"text": "A String", # The text to be indexed for this file.
},
"explicitlyTrashed": True or False, # Whether this file has been explicitly trashed, as opposed to recursively trashed. This will only be populated if the file is trashed.
- "etag": "A String", # ETag of the file.
"lastModifyingUserName": "A String", # Name of the last user to modify this file.
"writersCanShare": True or False, # Whether writers can share the document with other users.
"owners": [ # The owner(s) of this file.
@@ -1917,13 +2157,13 @@
"displayName": "A String", # A plain text displayable name for this user.
"permissionId": "A String", # The user's ID as visible in the permissions collection.
},
- "title": "A String", # The title of this file.
+ "copyable": True or False, # Whether the file can be copied by the current user.
"ownerNames": [ # Name(s) of the owner(s) of this file.
"A String",
],
"sharedWithMeDate": "A String", # Time at which this file was shared with the user (formatted RFC 3339 timestamp).
"webViewLink": "A String", # A link only available on public folders for viewing their static web assets (HTML, CSS, JS, etc) via Google Drive's Website Hosting.
- "lastViewedByMeDate": "A String", # Last time this file was viewed by the user (formatted RFC 3339 timestamp).
+ "etag": "A String", # ETag of the file.
"parents": [ # Collection of parent folders which contain this file.
# Setting this field will put the file in all of the provided folders. On insert, if no folders are provided, the file will be placed in the default root folder.
{ # A reference to a file's parent.
@@ -1942,16 +2182,9 @@
"mimeType": "A String", # The MIME type of the thumbnail.
"image": "A String", # The URL-safe Base64 encoded bytes of the thumbnail image.
},
- "originalFilename": "A String", # The original filename if the file was uploaded manually, or the original title if the file was inserted through the API. Note that renames of the title will not change the original filename. This will only be populated on files with content stored in Drive.
- "description": "A String", # A short description of the file.
- "webContentLink": "A String", # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
- "editable": True or False, # Whether the file can be edited by the current user.
- "kind": "drive#file", # The type of file. This is always drive#file.
- "quotaBytesUsed": "A String", # The number of quota bytes used by this file.
- "fileSize": "A String", # The size of the file in bytes. This is only populated for files with content stored in Drive.
- "createdDate": "A String", # Create time for this file (formatted ISO8601 timestamp).
- "md5Checksum": "A String", # An MD5 checksum for the content of this file. This is populated only for files with content stored in Drive.
- "iconLink": "A String", # A link to the file's icon.
+ "openWithLinks": { # A map of the id of each of the user's apps to a link to open this file with that app. Only populated when the drive.apps.readonly scope is used.
+ "a_key": "A String",
+ },
"imageMediaMetadata": { # Metadata about image media. This will only be present for image types, and its contents will depend on what can be parsed from the image content.
"exposureBias": 3.14, # The exposure bias of the photo (APEX value).
"exposureTime": 3.14, # The length of the exposure, in seconds.
@@ -1979,23 +2212,46 @@
"whiteBalance": "A String", # The white balance mode used to create the photo.
"cameraModel": "A String", # The model of the camera used to create the photo.
},
+ "description": "A String", # A short description of the file.
+ "webContentLink": "A String", # A link for downloading the content of the file in a browser using cookie based authentication. In cases where the content is shared publicly, the content can be downloaded without any credentials.
+ "editable": True or False, # Whether the file can be edited by the current user.
+ "kind": "drive#file", # The type of file. This is always drive#file.
+ "quotaBytesUsed": "A String", # The number of quota bytes used by this file.
+ "fileSize": "A String", # The size of the file in bytes. This is only populated for files with content stored in Drive.
+ "createdDate": "A String", # Create time for this file (formatted ISO8601 timestamp).
+ "properties": [ # The list of properties.
+ { # A key-value pair that is either public or private to an application.
+ "kind": "drive#property", # This is always drive#property.
+ "value": "A String", # The value of this property.
+ "etag": "A String", # ETag of the property.
+ "visibility": "A String", # The visibility of this property.
+ "key": "A String", # The key of this property.
+ "selfLink": "A String", # The link back to this property.
+ },
+ ],
+ "md5Checksum": "A String", # An MD5 checksum for the content of this file. This is populated only for files with content stored in Drive.
+ "iconLink": "A String", # A link to the file's icon.
+ "defaultOpenWithLink": "A String", # A link to open this file with the user's default app for this file. Only populated when the drive.apps.readonly scope is used.
"embedLink": "A String", # A link for embedding the file.
"alternateLink": "A String", # A link for opening the file in using a relevant Google editor or viewer.
+ "title": "A String", # The title of this file.
"modifiedByMeDate": "A String", # Last time this file was modified by the user (formatted RFC 3339 timestamp). Note that setting modifiedDate will also update the modifiedByMe date for the user which set the date.
"downloadUrl": "A String", # Short lived download URL for the file. This is only populated for files with content stored in Drive.
"userPermission": { # A permission for a file. # The permissions for the authenticated user on this file.
"withLink": True or False, # Whether the link is required for this permission.
- "kind": "drive#permission", # This is always drive#permission.
+ "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is populated when the permission type is "user", "group" or "domain".
"name": "A String", # The name for this permission.
- "value": "A String", # The email address or domain name for the entity. This is not populated in responses.
+ "kind": "drive#permission", # This is always drive#permission.
+ "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses.
"id": "A String", # The ID of the permission.
"authKey": "A String", # The authkey parameter required for this permission.
"etag": "A String", # The ETag of the permission.
+ "emailAddress": "A String", # The email address of the user this permission refers to. This is an output-only field which is populated when the permission type is "user" and the given user's Google+ profile privacy settings allow exposing their email address.
+ "photoLink": "A String", # A link to the profile photo, if available.
"role": "A String", # The primary role for this user. Allowed values are:
# - owner
# - reader
# - writer
- "photoLink": "A String", # A link to the profile photo, if available.
"type": "A String", # The account type. Allowed values are:
# - user
# - group
@@ -2006,10 +2262,59 @@
],
"selfLink": "A String", # A link back to this permission.
},
+ "originalFilename": "A String", # The original filename if the file was uploaded manually, or the original title if the file was inserted through the API. Note that renames of the title will not change the original filename. This will only be populated on files with content stored in Drive.
"fileExtension": "A String", # The file extension used when downloading this file. This field is read only. To set the extension, include it in the title when creating the file. This is only populated for files with content stored in Drive.
+ "headRevisionId": "A String", # The ID of the file's head revision. This will only be populated for files with content stored in Drive.
"selfLink": "A String", # A link back to this file.
"modifiedDate": "A String", # Last time this file was modified by anyone (formatted RFC 3339 timestamp). This is only mutable on update when the setModifiedDate parameter is set.
}</pre>
</div>
+<div class="method">
+ <code class="details" id="watch">watch(fileId, body, projection=None, updateViewedDate=None)</code>
+ <pre>Subscribe to changes on a file
+
+Args:
+ fileId: string, The ID for the file in question. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{
+ "resourceUri": "A String", # The canonicalized ID of the watched resource.
+ "kind": "api#channel", # A channel watching an API resource
+ "resourceId": "A String", # An opaque id that identifies the resource that is being watched. Stable across different API versions
+ "token": "A String", # An arbitrary string associated with the channel that is delivered to the target address with each event delivered over this channel.
+ "params": { # Additional parameters controlling delivery channel behavior
+ "a_key": "A String", # Declares a new parameter by name.
+ },
+ "expiration": "A String", # The expiration instant for this channel if it is defined.
+ "address": "A String", # The address of the receiving entity where events are delivered. Specific to the channel type.
+ "type": "A String", # The type of delivery mechanism used by this channel
+ "id": "A String", # A UUID for the channel
+ }
+
+ projection: string, This parameter is deprecated and has no function.
+ Allowed values
+ BASIC - Deprecated
+ FULL - Deprecated
+ updateViewedDate: boolean, Whether to update the view date after successfully retrieving the file.
+
+Returns:
+ An object of the form:
+
+ {
+ "resourceUri": "A String", # The canonicalized ID of the watched resource.
+ "kind": "api#channel", # A channel watching an API resource
+ "resourceId": "A String", # An opaque id that identifies the resource that is being watched. Stable across different API versions
+ "token": "A String", # An arbitrary string associated with the channel that is delivered to the target address with each event delivered over this channel.
+ "params": { # Additional parameters controlling delivery channel behavior
+ "a_key": "A String", # Declares a new parameter by name.
+ },
+ "expiration": "A String", # The expiration instant for this channel if it is defined.
+ "address": "A String", # The address of the receiving entity where events are delivered. Specific to the channel type.
+ "type": "A String", # The type of delivery mechanism used by this channel
+ "id": "A String", # A UUID for the channel
+ }</pre>
+</div>
+
</body></html>
\ No newline at end of file
diff --git a/docs/dyn/drive_v2.html b/docs/dyn/drive_v2.html
index 29e6b8e..471c46c 100644
--- a/docs/dyn/drive_v2.html
+++ b/docs/dyn/drive_v2.html
@@ -90,6 +90,11 @@
<p class="firstline">Returns the changes Resource.</p>
<p class="toc_element">
+ <code><a href="drive_v2.channels.html">channels()</a></code>
+</p>
+<p class="firstline">Returns the channels Resource.</p>
+
+<p class="toc_element">
<code><a href="drive_v2.children.html">children()</a></code>
</p>
<p class="firstline">Returns the children Resource.</p>
@@ -115,6 +120,16 @@
<p class="firstline">Returns the permissions Resource.</p>
<p class="toc_element">
+ <code><a href="drive_v2.properties.html">properties()</a></code>
+</p>
+<p class="firstline">Returns the properties Resource.</p>
+
+<p class="toc_element">
+ <code><a href="drive_v2.realtime.html">realtime()</a></code>
+</p>
+<p class="firstline">Returns the realtime Resource.</p>
+
+<p class="toc_element">
<code><a href="drive_v2.replies.html">replies()</a></code>
</p>
<p class="firstline">Returns the replies Resource.</p>
diff --git a/docs/dyn/drive_v2.permissions.html b/docs/dyn/drive_v2.permissions.html
index 4f3048a..dddaf83 100644
--- a/docs/dyn/drive_v2.permissions.html
+++ b/docs/dyn/drive_v2.permissions.html
@@ -87,10 +87,10 @@
<code><a href="#list">list(fileId)</a></code></p>
<p class="firstline">Lists a file's permissions.</p>
<p class="toc_element">
- <code><a href="#patch">patch(fileId, permissionId, body)</a></code></p>
+ <code><a href="#patch">patch(fileId, permissionId, body, transferOwnership=None)</a></code></p>
<p class="firstline">Updates a permission. This method supports patch semantics.</p>
<p class="toc_element">
- <code><a href="#update">update(fileId, permissionId, body)</a></code></p>
+ <code><a href="#update">update(fileId, permissionId, body, transferOwnership=None)</a></code></p>
<p class="firstline">Updates a permission.</p>
<h3>Method Details</h3>
<div class="method">
@@ -116,17 +116,19 @@
{ # A permission for a file.
"withLink": True or False, # Whether the link is required for this permission.
- "kind": "drive#permission", # This is always drive#permission.
+ "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is populated when the permission type is "user", "group" or "domain".
"name": "A String", # The name for this permission.
- "value": "A String", # The email address or domain name for the entity. This is not populated in responses.
+ "kind": "drive#permission", # This is always drive#permission.
+ "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses.
"id": "A String", # The ID of the permission.
"authKey": "A String", # The authkey parameter required for this permission.
"etag": "A String", # The ETag of the permission.
+ "emailAddress": "A String", # The email address of the user this permission refers to. This is an output-only field which is populated when the permission type is "user" and the given user's Google+ profile privacy settings allow exposing their email address.
+ "photoLink": "A String", # A link to the profile photo, if available.
"role": "A String", # The primary role for this user. Allowed values are:
# - owner
# - reader
# - writer
- "photoLink": "A String", # A link to the profile photo, if available.
"type": "A String", # The account type. Allowed values are:
# - user
# - group
@@ -150,17 +152,19 @@
{ # A permission for a file.
"withLink": True or False, # Whether the link is required for this permission.
- "kind": "drive#permission", # This is always drive#permission.
+ "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is populated when the permission type is "user", "group" or "domain".
"name": "A String", # The name for this permission.
- "value": "A String", # The email address or domain name for the entity. This is not populated in responses.
+ "kind": "drive#permission", # This is always drive#permission.
+ "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses.
"id": "A String", # The ID of the permission.
"authKey": "A String", # The authkey parameter required for this permission.
"etag": "A String", # The ETag of the permission.
+ "emailAddress": "A String", # The email address of the user this permission refers to. This is an output-only field which is populated when the permission type is "user" and the given user's Google+ profile privacy settings allow exposing their email address.
+ "photoLink": "A String", # A link to the profile photo, if available.
"role": "A String", # The primary role for this user. Allowed values are:
# - owner
# - reader
# - writer
- "photoLink": "A String", # A link to the profile photo, if available.
"type": "A String", # The account type. Allowed values are:
# - user
# - group
@@ -180,17 +184,19 @@
{ # A permission for a file.
"withLink": True or False, # Whether the link is required for this permission.
- "kind": "drive#permission", # This is always drive#permission.
+ "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is populated when the permission type is "user", "group" or "domain".
"name": "A String", # The name for this permission.
- "value": "A String", # The email address or domain name for the entity. This is not populated in responses.
+ "kind": "drive#permission", # This is always drive#permission.
+ "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses.
"id": "A String", # The ID of the permission.
"authKey": "A String", # The authkey parameter required for this permission.
"etag": "A String", # The ETag of the permission.
+ "emailAddress": "A String", # The email address of the user this permission refers to. This is an output-only field which is populated when the permission type is "user" and the given user's Google+ profile privacy settings allow exposing their email address.
+ "photoLink": "A String", # A link to the profile photo, if available.
"role": "A String", # The primary role for this user. Allowed values are:
# - owner
# - reader
# - writer
- "photoLink": "A String", # A link to the profile photo, if available.
"type": "A String", # The account type. Allowed values are:
# - user
# - group
@@ -217,17 +223,19 @@
"items": [ # The actual list of permissions.
{ # A permission for a file.
"withLink": True or False, # Whether the link is required for this permission.
- "kind": "drive#permission", # This is always drive#permission.
+ "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is populated when the permission type is "user", "group" or "domain".
"name": "A String", # The name for this permission.
- "value": "A String", # The email address or domain name for the entity. This is not populated in responses.
+ "kind": "drive#permission", # This is always drive#permission.
+ "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses.
"id": "A String", # The ID of the permission.
"authKey": "A String", # The authkey parameter required for this permission.
"etag": "A String", # The ETag of the permission.
+ "emailAddress": "A String", # The email address of the user this permission refers to. This is an output-only field which is populated when the permission type is "user" and the given user's Google+ profile privacy settings allow exposing their email address.
+ "photoLink": "A String", # A link to the profile photo, if available.
"role": "A String", # The primary role for this user. Allowed values are:
# - owner
# - reader
# - writer
- "photoLink": "A String", # A link to the profile photo, if available.
"type": "A String", # The account type. Allowed values are:
# - user
# - group
@@ -246,7 +254,7 @@
</div>
<div class="method">
- <code class="details" id="patch">patch(fileId, permissionId, body)</code>
+ <code class="details" id="patch">patch(fileId, permissionId, body, transferOwnership=None)</code>
<pre>Updates a permission. This method supports patch semantics.
Args:
@@ -257,17 +265,19 @@
{ # A permission for a file.
"withLink": True or False, # Whether the link is required for this permission.
- "kind": "drive#permission", # This is always drive#permission.
+ "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is populated when the permission type is "user", "group" or "domain".
"name": "A String", # The name for this permission.
- "value": "A String", # The email address or domain name for the entity. This is not populated in responses.
+ "kind": "drive#permission", # This is always drive#permission.
+ "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses.
"id": "A String", # The ID of the permission.
"authKey": "A String", # The authkey parameter required for this permission.
"etag": "A String", # The ETag of the permission.
+ "emailAddress": "A String", # The email address of the user this permission refers to. This is an output-only field which is populated when the permission type is "user" and the given user's Google+ profile privacy settings allow exposing their email address.
+ "photoLink": "A String", # A link to the profile photo, if available.
"role": "A String", # The primary role for this user. Allowed values are:
# - owner
# - reader
# - writer
- "photoLink": "A String", # A link to the profile photo, if available.
"type": "A String", # The account type. Allowed values are:
# - user
# - group
@@ -279,23 +289,26 @@
"selfLink": "A String", # A link back to this permission.
}
+ transferOwnership: boolean, Whether changing a role to 'owner' should also downgrade the current owners to writers.
Returns:
An object of the form:
{ # A permission for a file.
"withLink": True or False, # Whether the link is required for this permission.
- "kind": "drive#permission", # This is always drive#permission.
+ "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is populated when the permission type is "user", "group" or "domain".
"name": "A String", # The name for this permission.
- "value": "A String", # The email address or domain name for the entity. This is not populated in responses.
+ "kind": "drive#permission", # This is always drive#permission.
+ "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses.
"id": "A String", # The ID of the permission.
"authKey": "A String", # The authkey parameter required for this permission.
"etag": "A String", # The ETag of the permission.
+ "emailAddress": "A String", # The email address of the user this permission refers to. This is an output-only field which is populated when the permission type is "user" and the given user's Google+ profile privacy settings allow exposing their email address.
+ "photoLink": "A String", # A link to the profile photo, if available.
"role": "A String", # The primary role for this user. Allowed values are:
# - owner
# - reader
# - writer
- "photoLink": "A String", # A link to the profile photo, if available.
"type": "A String", # The account type. Allowed values are:
# - user
# - group
@@ -309,7 +322,7 @@
</div>
<div class="method">
- <code class="details" id="update">update(fileId, permissionId, body)</code>
+ <code class="details" id="update">update(fileId, permissionId, body, transferOwnership=None)</code>
<pre>Updates a permission.
Args:
@@ -320,17 +333,19 @@
{ # A permission for a file.
"withLink": True or False, # Whether the link is required for this permission.
- "kind": "drive#permission", # This is always drive#permission.
+ "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is populated when the permission type is "user", "group" or "domain".
"name": "A String", # The name for this permission.
- "value": "A String", # The email address or domain name for the entity. This is not populated in responses.
+ "kind": "drive#permission", # This is always drive#permission.
+ "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses.
"id": "A String", # The ID of the permission.
"authKey": "A String", # The authkey parameter required for this permission.
"etag": "A String", # The ETag of the permission.
+ "emailAddress": "A String", # The email address of the user this permission refers to. This is an output-only field which is populated when the permission type is "user" and the given user's Google+ profile privacy settings allow exposing their email address.
+ "photoLink": "A String", # A link to the profile photo, if available.
"role": "A String", # The primary role for this user. Allowed values are:
# - owner
# - reader
# - writer
- "photoLink": "A String", # A link to the profile photo, if available.
"type": "A String", # The account type. Allowed values are:
# - user
# - group
@@ -342,23 +357,26 @@
"selfLink": "A String", # A link back to this permission.
}
+ transferOwnership: boolean, Whether changing a role to 'owner' should also downgrade the current owners to writers.
Returns:
An object of the form:
{ # A permission for a file.
"withLink": True or False, # Whether the link is required for this permission.
- "kind": "drive#permission", # This is always drive#permission.
+ "domain": "A String", # The domain name of the entity this permission refers to. This is an output-only field which is populated when the permission type is "user", "group" or "domain".
"name": "A String", # The name for this permission.
- "value": "A String", # The email address or domain name for the entity. This is not populated in responses.
+ "kind": "drive#permission", # This is always drive#permission.
+ "value": "A String", # The email address or domain name for the entity. This is used during inserts and is not populated in responses.
"id": "A String", # The ID of the permission.
"authKey": "A String", # The authkey parameter required for this permission.
"etag": "A String", # The ETag of the permission.
+ "emailAddress": "A String", # The email address of the user this permission refers to. This is an output-only field which is populated when the permission type is "user" and the given user's Google+ profile privacy settings allow exposing their email address.
+ "photoLink": "A String", # A link to the profile photo, if available.
"role": "A String", # The primary role for this user. Allowed values are:
# - owner
# - reader
# - writer
- "photoLink": "A String", # A link to the profile photo, if available.
"type": "A String", # The account type. Allowed values are:
# - user
# - group
diff --git a/docs/dyn/drive_v2.properties.html b/docs/dyn/drive_v2.properties.html
new file mode 100644
index 0000000..a5f7e24
--- /dev/null
+++ b/docs/dyn/drive_v2.properties.html
@@ -0,0 +1,256 @@
+<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="drive_v2.html">Drive API</a> . <a href="drive_v2.properties.html">properties</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#delete">delete(fileId, propertyKey, visibility=None)</a></code></p>
+<p class="firstline">Deletes a property.</p>
+<p class="toc_element">
+ <code><a href="#get">get(fileId, propertyKey, visibility=None)</a></code></p>
+<p class="firstline">Gets a property by its key.</p>
+<p class="toc_element">
+ <code><a href="#insert">insert(fileId, body)</a></code></p>
+<p class="firstline">Adds a property to a file.</p>
+<p class="toc_element">
+ <code><a href="#list">list(fileId)</a></code></p>
+<p class="firstline">Lists a file's properties.</p>
+<p class="toc_element">
+ <code><a href="#patch">patch(fileId, propertyKey, body, visibility=None)</a></code></p>
+<p class="firstline">Updates a property. This method supports patch semantics.</p>
+<p class="toc_element">
+ <code><a href="#update">update(fileId, propertyKey, body, visibility=None)</a></code></p>
+<p class="firstline">Updates a property.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="delete">delete(fileId, propertyKey, visibility=None)</code>
+ <pre>Deletes a property.
+
+Args:
+ fileId: string, The ID of the file. (required)
+ propertyKey: string, The key of the property. (required)
+ visibility: string, The visibility of the property.
+</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="get">get(fileId, propertyKey, visibility=None)</code>
+ <pre>Gets a property by its key.
+
+Args:
+ fileId: string, The ID of the file. (required)
+ propertyKey: string, The key of the property. (required)
+ visibility: string, The visibility of the property.
+
+Returns:
+ An object of the form:
+
+ { # A key-value pair that is either public or private to an application.
+ "kind": "drive#property", # This is always drive#property.
+ "value": "A String", # The value of this property.
+ "etag": "A String", # ETag of the property.
+ "visibility": "A String", # The visibility of this property.
+ "key": "A String", # The key of this property.
+ "selfLink": "A String", # The link back to this property.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="insert">insert(fileId, body)</code>
+ <pre>Adds a property to a file.
+
+Args:
+ fileId: string, The ID of the file. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # A key-value pair that is either public or private to an application.
+ "kind": "drive#property", # This is always drive#property.
+ "value": "A String", # The value of this property.
+ "etag": "A String", # ETag of the property.
+ "visibility": "A String", # The visibility of this property.
+ "key": "A String", # The key of this property.
+ "selfLink": "A String", # The link back to this property.
+}
+
+
+Returns:
+ An object of the form:
+
+ { # A key-value pair that is either public or private to an application.
+ "kind": "drive#property", # This is always drive#property.
+ "value": "A String", # The value of this property.
+ "etag": "A String", # ETag of the property.
+ "visibility": "A String", # The visibility of this property.
+ "key": "A String", # The key of this property.
+ "selfLink": "A String", # The link back to this property.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="list">list(fileId)</code>
+ <pre>Lists a file's properties.
+
+Args:
+ fileId: string, The ID of the file. (required)
+
+Returns:
+ An object of the form:
+
+ { # A collection of properties, key-value pairs that are either public or private to an application.
+ "items": [ # The list of properties.
+ { # A key-value pair that is either public or private to an application.
+ "kind": "drive#property", # This is always drive#property.
+ "value": "A String", # The value of this property.
+ "etag": "A String", # ETag of the property.
+ "visibility": "A String", # The visibility of this property.
+ "key": "A String", # The key of this property.
+ "selfLink": "A String", # The link back to this property.
+ },
+ ],
+ "kind": "drive#propertyList", # This is always drive#propertyList.
+ "etag": "A String", # The ETag of the list.
+ "selfLink": "A String", # The link back to this list.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="patch">patch(fileId, propertyKey, body, visibility=None)</code>
+ <pre>Updates a property. This method supports patch semantics.
+
+Args:
+ fileId: string, The ID of the file. (required)
+ propertyKey: string, The key of the property. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # A key-value pair that is either public or private to an application.
+ "kind": "drive#property", # This is always drive#property.
+ "value": "A String", # The value of this property.
+ "etag": "A String", # ETag of the property.
+ "visibility": "A String", # The visibility of this property.
+ "key": "A String", # The key of this property.
+ "selfLink": "A String", # The link back to this property.
+}
+
+ visibility: string, The visibility of the property.
+
+Returns:
+ An object of the form:
+
+ { # A key-value pair that is either public or private to an application.
+ "kind": "drive#property", # This is always drive#property.
+ "value": "A String", # The value of this property.
+ "etag": "A String", # ETag of the property.
+ "visibility": "A String", # The visibility of this property.
+ "key": "A String", # The key of this property.
+ "selfLink": "A String", # The link back to this property.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="update">update(fileId, propertyKey, body, visibility=None)</code>
+ <pre>Updates a property.
+
+Args:
+ fileId: string, The ID of the file. (required)
+ propertyKey: string, The key of the property. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # A key-value pair that is either public or private to an application.
+ "kind": "drive#property", # This is always drive#property.
+ "value": "A String", # The value of this property.
+ "etag": "A String", # ETag of the property.
+ "visibility": "A String", # The visibility of this property.
+ "key": "A String", # The key of this property.
+ "selfLink": "A String", # The link back to this property.
+}
+
+ visibility: string, The visibility of the property.
+
+Returns:
+ An object of the form:
+
+ { # A key-value pair that is either public or private to an application.
+ "kind": "drive#property", # This is always drive#property.
+ "value": "A String", # The value of this property.
+ "etag": "A String", # ETag of the property.
+ "visibility": "A String", # The visibility of this property.
+ "key": "A String", # The key of this property.
+ "selfLink": "A String", # The link back to this property.
+ }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/drive_v2.realtime.html b/docs/dyn/drive_v2.realtime.html
new file mode 100644
index 0000000..cea77ee
--- /dev/null
+++ b/docs/dyn/drive_v2.realtime.html
@@ -0,0 +1,102 @@
+<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="drive_v2.html">Drive API</a> . <a href="drive_v2.realtime.html">realtime</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#get">get(fileId)</a></code></p>
+<p class="firstline">Exports the contents of the Realtime API data model associated with this file as JSON.</p>
+<p class="toc_element">
+ <code><a href="#get_media">get_media(fileId)</a></code></p>
+<p class="firstline">Exports the contents of the Realtime API data model associated with this file as JSON.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="get">get(fileId)</code>
+ <pre>Exports the contents of the Realtime API data model associated with this file as JSON.
+
+Args:
+ fileId: string, The ID of the file that the Realtime API data model is associated with. (required)
+</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="get_media">get_media(fileId)</code>
+ <pre>Exports the contents of the Realtime API data model associated with this file as JSON.
+
+Args:
+ fileId: string, The ID of the file that the Realtime API data model is associated with. (required)
+</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/drive_v2.replies.html b/docs/dyn/drive_v2.replies.html
index 1111a4a..e393640 100644
--- a/docs/dyn/drive_v2.replies.html
+++ b/docs/dyn/drive_v2.replies.html
@@ -242,6 +242,8 @@
},
],
"kind": "drive#commentReplyList", # This is always drive#commentReplyList.
+ "selfLink": "A String", # A link back to this list.
+ "nextLink": "A String", # A link to the next page of replies.
}</pre>
</div>
diff --git a/docs/dyn/fusiontables_v1.table.html b/docs/dyn/fusiontables_v1.table.html
index 88bd29d..0157063 100644
--- a/docs/dyn/fusiontables_v1.table.html
+++ b/docs/dyn/fusiontables_v1.table.html
@@ -87,6 +87,9 @@
<code><a href="#importRows">importRows(tableId, media_body=None, startLine=None, isStrict=None, encoding=None, delimiter=None, endLine=None)</a></code></p>
<p class="firstline">Import more rows into a table.</p>
<p class="toc_element">
+ <code><a href="#importTable">importTable(name, media_body=None, encoding=None, delimiter=None)</a></code></p>
+<p class="firstline">Import a new table.</p>
+<p class="toc_element">
<code><a href="#insert">insert(body)</a></code></p>
<p class="firstline">Creates a new table.</p>
<p class="toc_element">
@@ -209,6 +212,46 @@
</div>
<div class="method">
+ <code class="details" id="importTable">importTable(name, media_body=None, encoding=None, delimiter=None)</code>
+ <pre>Import a new table.
+
+Args:
+ name: string, The name to be assigned to the new table. (required)
+ media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
+ encoding: string, The encoding of the content. Default is UTF-8. Use 'auto-detect' if you are unsure of the encoding.
+ delimiter: string, The delimiter used to separate cell values. This can only consist of a single character. Default is ','.
+
+Returns:
+ An object of the form:
+
+ { # Represents a table. Specifies the name, whether it is exportable, description, attribution, and attribution link.
+ "kind": "fusiontables#table", # Type name: a template for an individual table.
+ "attribution": "A String", # Optional attribution assigned to the table.
+ "description": "A String", # Optional description assigned to the table.
+ "isExportable": True or False, # Variable for whether table is exportable.
+ "baseTableIds": [ # Optional base table identifier if this table is a view or merged table.
+ "A String",
+ ],
+ "attributionLink": "A String", # Optional link for attribution.
+ "sql": "A String", # Optional sql that encodes the table definition for derived tables.
+ "tableId": "A String", # Encrypted unique alphanumeric identifier for the table.
+ "columns": [ # Columns in the table.
+ { # Specifies the id, name and type of a column in a table.
+ "kind": "fusiontables#column", # Type name: a template for an individual column.
+ "type": "A String", # Required type of the column.
+ "columnId": 42, # Identifier for the column.
+ "name": "A String", # Required name of the column.
+ "baseColumn": { # Optional identifier of the base column. If present, this column is derived from the specified base column.
+ "tableIndex": 42, # Offset to the entry in the list of base tables in the table definition.
+ "columnId": 42, # The id of the column in the base table from which this column is derived.
+ },
+ },
+ ],
+ "name": "A String", # Name assigned to a table.
+ }</pre>
+</div>
+
+<div class="method">
<code class="details" id="insert">insert(body)</code>
<pre>Creates a new table.
diff --git a/docs/dyn/gamesManagement_v1management.achievements.html b/docs/dyn/gamesManagement_v1management.achievements.html
new file mode 100644
index 0000000..37a46c3
--- /dev/null
+++ b/docs/dyn/gamesManagement_v1management.achievements.html
@@ -0,0 +1,132 @@
+<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="gamesManagement_v1management.html">Google Play Game Services Management API</a> . <a href="gamesManagement_v1management.achievements.html">achievements</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#reset">reset(achievementId)</a></code></p>
+<p class="firstline">Resets the achievement with the given ID. This method is only accessible to whitelisted tester accounts for your application.</p>
+<p class="toc_element">
+ <code><a href="#resetAll">resetAll()</a></code></p>
+<p class="firstline">Resets all achievements for the currently authenticated player for your application. This method is only accessible to whitelisted tester accounts for your application.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="reset">reset(achievementId)</code>
+ <pre>Resets the achievement with the given ID. This method is only accessible to whitelisted tester accounts for your application.
+
+Args:
+ achievementId: string, The ID of the achievement used by this method. (required)
+
+Returns:
+ An object of the form:
+
+ { # This is a JSON template for an achievement reset response.
+ "definitionId": "A String", # The ID of an achievement for which player state has been updated.
+ "kind": "gamesManagement#achievementResetResponse", # Uniquely identifies the type of this resource. Value is always the fixed string gamesManagement#achievementResetResponse.
+ "updateOccurred": True or False, # Flag to indicate if the requested update actually occurred.
+ "currentState": "A String", # The current state of the achievement. This is the same as the initial state of the achievement.
+ # Possible values are:
+ # - "HIDDEN"- Achievement is hidden.
+ # - "REVEALED" - Achievement is revealed.
+ # - "UNLOCKED" - Achievement is unlocked.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="resetAll">resetAll()</code>
+ <pre>Resets all achievements for the currently authenticated player for your application. This method is only accessible to whitelisted tester accounts for your application.
+
+Args:
+
+Returns:
+ An object of the form:
+
+ { # This is a JSON template for achievement reset all response.
+ "kind": "gamesManagement#achievementResetAllResponse", # Uniquely identifies the type of this resource. Value is always the fixed string gamesManagement#achievementResetAllResponse.
+ "results": [ # The achievement reset results.
+ { # This is a JSON template for an achievement reset response.
+ "definitionId": "A String", # The ID of an achievement for which player state has been updated.
+ "kind": "gamesManagement#achievementResetResponse", # Uniquely identifies the type of this resource. Value is always the fixed string gamesManagement#achievementResetResponse.
+ "updateOccurred": True or False, # Flag to indicate if the requested update actually occurred.
+ "currentState": "A String", # The current state of the achievement. This is the same as the initial state of the achievement.
+ # Possible values are:
+ # - "HIDDEN"- Achievement is hidden.
+ # - "REVEALED" - Achievement is revealed.
+ # - "UNLOCKED" - Achievement is unlocked.
+ },
+ ],
+ }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/gamesManagement_v1management.applications.html b/docs/dyn/gamesManagement_v1management.applications.html
new file mode 100644
index 0000000..e9f58bb
--- /dev/null
+++ b/docs/dyn/gamesManagement_v1management.applications.html
@@ -0,0 +1,128 @@
+<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="gamesManagement_v1management.html">Google Play Game Services Management API</a> . <a href="gamesManagement_v1management.applications.html">applications</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#listHidden">listHidden(applicationId, pageToken=None, maxResults=None)</a></code></p>
+<p class="firstline">Get the list of players hidden from the given application. This method is only available to user accounts for your developer console.</p>
+<p class="toc_element">
+ <code><a href="#listHidden_next">listHidden_next(previous_request, previous_response)</a></code></p>
+<p class="firstline">Retrieves the next page of results.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="listHidden">listHidden(applicationId, pageToken=None, maxResults=None)</code>
+ <pre>Get the list of players hidden from the given application. This method is only available to user accounts for your developer console.
+
+Args:
+ applicationId: string, The application being requested. (required)
+ pageToken: string, The token returned by the previous request.
+ maxResults: integer, The maximum number of player resources to return in the response, used for paging. For any response, the actual number of player resources returned may be less than the specified maxResults.
+
+Returns:
+ An object of the form:
+
+ { # This is a JSON template for a list of hidden players.
+ "nextPageToken": "A String", # The pagination token for the next page of results.
+ "items": [ # The players.
+ { # This is a JSON template for the HiddenPlayer resource.
+ "player": { # This is a JSON template for a Player resource. # The player information.
+ "playerId": "A String", # The ID of the player.
+ "kind": "gamesManagement#player", # Uniquely identifies the type of this resource. Value is always the fixed string gamesManagement#player.
+ "avatarImageUrl": "A String", # The base URL for the image that represents the player.
+ "displayName": "A String", # The name to display for the player.
+ },
+ "kind": "gamesManagement#hiddenPlayer", # Uniquely identifies the type of this resource. Value is always the fixed string gamesManagement#hiddenPlayer.
+ "hiddenTimeMillis": "A String", # The time this player was hidden.
+ },
+ ],
+ "kind": "gamesManagement#hiddenPlayerList", # Uniquely identifies the type of this resource. Value is always the fixed string gamesManagement#hiddenPlayerList.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="listHidden_next">listHidden_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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/gamesManagement_v1management.html b/docs/dyn/gamesManagement_v1management.html
new file mode 100644
index 0000000..ffd5a85
--- /dev/null
+++ b/docs/dyn/gamesManagement_v1management.html
@@ -0,0 +1,102 @@
+<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="gamesManagement_v1management.html">Google Play Game Services Management API</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="gamesManagement_v1management.achievements.html">achievements()</a></code>
+</p>
+<p class="firstline">Returns the achievements Resource.</p>
+
+<p class="toc_element">
+ <code><a href="gamesManagement_v1management.applications.html">applications()</a></code>
+</p>
+<p class="firstline">Returns the applications Resource.</p>
+
+<p class="toc_element">
+ <code><a href="gamesManagement_v1management.players.html">players()</a></code>
+</p>
+<p class="firstline">Returns the players Resource.</p>
+
+<p class="toc_element">
+ <code><a href="gamesManagement_v1management.rooms.html">rooms()</a></code>
+</p>
+<p class="firstline">Returns the rooms Resource.</p>
+
+<p class="toc_element">
+ <code><a href="gamesManagement_v1management.scores.html">scores()</a></code>
+</p>
+<p class="firstline">Returns the scores Resource.</p>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/gamesManagement_v1management.players.html b/docs/dyn/gamesManagement_v1management.players.html
new file mode 100644
index 0000000..01976b6
--- /dev/null
+++ b/docs/dyn/gamesManagement_v1management.players.html
@@ -0,0 +1,104 @@
+<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="gamesManagement_v1management.html">Google Play Game Services Management API</a> . <a href="gamesManagement_v1management.players.html">players</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#hide">hide(applicationId, playerId)</a></code></p>
+<p class="firstline">Hide the given player's leaderboard scores from the given application. This method is only available to user accounts for your developer console.</p>
+<p class="toc_element">
+ <code><a href="#unhide">unhide(applicationId, playerId)</a></code></p>
+<p class="firstline">Unhide the given player's leaderboard scores from the given application. This method is only available to user accounts for your developer console.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="hide">hide(applicationId, playerId)</code>
+ <pre>Hide the given player's leaderboard scores from the given application. This method is only available to user accounts for your developer console.
+
+Args:
+ applicationId: string, The application being requested. (required)
+ playerId: string, A player ID. A value of me may be used in place of the authenticated player's ID. (required)
+</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="unhide">unhide(applicationId, playerId)</code>
+ <pre>Unhide the given player's leaderboard scores from the given application. This method is only available to user accounts for your developer console.
+
+Args:
+ applicationId: string, The application being requested. (required)
+ playerId: string, A player ID. A value of me may be used in place of the authenticated player's ID. (required)
+</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/gamesManagement_v1management.rooms.html b/docs/dyn/gamesManagement_v1management.rooms.html
new file mode 100644
index 0000000..1670f3f
--- /dev/null
+++ b/docs/dyn/gamesManagement_v1management.rooms.html
@@ -0,0 +1,89 @@
+<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="gamesManagement_v1management.html">Google Play Game Services Management API</a> . <a href="gamesManagement_v1management.rooms.html">rooms</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#reset">reset()</a></code></p>
+<p class="firstline">Reset all rooms for the currently authenticated player for your application. This method is only accessible to whitelisted tester accounts for your application.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="reset">reset()</code>
+ <pre>Reset all rooms for the currently authenticated player for your application. This method is only accessible to whitelisted tester accounts for your application.
+
+Args:
+</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/gamesManagement_v1management.scores.html b/docs/dyn/gamesManagement_v1management.scores.html
new file mode 100644
index 0000000..82272e4
--- /dev/null
+++ b/docs/dyn/gamesManagement_v1management.scores.html
@@ -0,0 +1,103 @@
+<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="gamesManagement_v1management.html">Google Play Game Services Management API</a> . <a href="gamesManagement_v1management.scores.html">scores</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#reset">reset(leaderboardId)</a></code></p>
+<p class="firstline">Reset scores for the specified leaderboard, resetting the leaderboard to empty. This method is only accessible to whitelisted tester accounts for your application.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="reset">reset(leaderboardId)</code>
+ <pre>Reset scores for the specified leaderboard, resetting the leaderboard to empty. This method is only accessible to whitelisted tester accounts for your application.
+
+Args:
+ leaderboardId: string, The ID of the leaderboard. (required)
+
+Returns:
+ An object of the form:
+
+ { # This is a JSON template for a list of reset leaderboard entry resources.
+ "kind": "gamesManagement#playerScoreResetResponse", # Uniquely identifies the type of this resource. Value is always the fixed string gamesManagement#playerScoreResetResponse.
+ "resetScoreTimeSpans": [ # The time spans of the updated score.
+ # Possible values are:
+ # - "ALL_TIME" - The score is an all-time score.
+ # - "WEEKLY" - The score is a weekly score.
+ # - "DAILY" - The score is a daily score.
+ "A String",
+ ],
+ }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/games_v1.achievementDefinitions.html b/docs/dyn/games_v1.achievementDefinitions.html
new file mode 100644
index 0000000..141de39
--- /dev/null
+++ b/docs/dyn/games_v1.achievementDefinitions.html
@@ -0,0 +1,139 @@
+<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="games_v1.html">Google Play Game Services API</a> . <a href="games_v1.achievementDefinitions.html">achievementDefinitions</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#list">list(pageToken=None, language=None, maxResults=None)</a></code></p>
+<p class="firstline">Lists all the achievement definitions for your application.</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>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="list">list(pageToken=None, language=None, maxResults=None)</code>
+ <pre>Lists all the achievement definitions for your application.
+
+Args:
+ pageToken: string, The token returned by the previous request.
+ language: string, The preferred language to use for strings returned by this method.
+ maxResults: integer, The maximum number of achievement resources to return in the response, used for paging. For any response, the actual number of achievement resources returned may be less than the specified maxResults.
+
+Returns:
+ An object of the form:
+
+ { # This is a JSON template for a list of achievement definition objects.
+ "nextPageToken": "A String", # Token corresponding to the next page of results.
+ "items": [ # The achievement definitions.
+ { # This is a JSON template for an achievement definition object.
+ "totalSteps": 42, # The total steps for an incremental achievement.
+ "achievementType": "A String", # The type of the achievement.
+ # Possible values are:
+ # - "STANDARD" - Achievement is either locked or unlocked.
+ # - "INCREMENTAL" - Achievement is incremental.
+ "description": "A String", # The description of the achievement.
+ "revealedIconUrl": "A String", # The image URL for the revealed achievement icon.
+ "formattedTotalSteps": "A String", # The total steps for an incremental achievement as a string.
+ "kind": "games#achievementDefinition", # Uniquely identifies the type of this resource. Value is always the fixed string games#achievementDefinition.
+ "initialState": "A String", # The initial state of the achievement.
+ # Possible values are:
+ # - "HIDDEN" - Achievement is hidden.
+ # - "REVEALED" - Achievement is revealed.
+ # - "UNLOCKED" - Achievement is unlocked.
+ "isRevealedIconUrlDefault": True or False, # Indicates whether the revealed icon image being returned is a default image, or is provided by the game.
+ "unlockedIconUrl": "A String", # The image URL for the unlocked achievement icon.
+ "id": "A String", # The ID of the achievement.
+ "isUnlockedIconUrlDefault": True or False, # Indicates whether the unlocked icon image being returned is a default image, or is game-provided.
+ "name": "A String", # The name of the achievement.
+ },
+ ],
+ "kind": "games#achievementDefinitionsListResponse", # Uniquely identifies the type of this resource. Value is always the fixed string games#achievementDefinitionsListResponse.
+ }</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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/games_v1.achievements.html b/docs/dyn/games_v1.achievements.html
new file mode 100644
index 0000000..ead3690
--- /dev/null
+++ b/docs/dyn/games_v1.achievements.html
@@ -0,0 +1,200 @@
+<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="games_v1.html">Google Play Game Services API</a> . <a href="games_v1.achievements.html">achievements</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#increment">increment(achievementId, stepsToIncrement, requestId=None)</a></code></p>
+<p class="firstline">Increments the steps of the achievement with the given ID for the currently authenticated player.</p>
+<p class="toc_element">
+ <code><a href="#list">list(playerId, language=None, pageToken=None, state=None, maxResults=None)</a></code></p>
+<p class="firstline">Lists the progress for all your application's achievements for the currently authenticated player.</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="#reveal">reveal(achievementId)</a></code></p>
+<p class="firstline">Sets the state of the achievement with the given ID to REVEALED for the currently authenticated player.</p>
+<p class="toc_element">
+ <code><a href="#unlock">unlock(achievementId)</a></code></p>
+<p class="firstline">Unlocks this achievement for the currently authenticated player.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="increment">increment(achievementId, stepsToIncrement, requestId=None)</code>
+ <pre>Increments the steps of the achievement with the given ID for the currently authenticated player.
+
+Args:
+ achievementId: string, The ID of the achievement used by this method. (required)
+ stepsToIncrement: integer, The number of steps to increment. (required)
+ requestId: string, A randomly generated numeric ID for each request specified by the caller. This number is used at the server to ensure that the increment is performed correctly across retries.
+
+Returns:
+ An object of the form:
+
+ { # This is a JSON template for an achievement increment response
+ "currentSteps": 42, # The current steps recorded for this incremental achievement.
+ "newlyUnlocked": True or False, # Whether the the current steps for the achievement has reached the number of steps required to unlock.
+ "kind": "games#achievementIncrementResponse", # Uniquely identifies the type of this resource. Value is always the fixed string games#achievementIncrementResponse.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="list">list(playerId, language=None, pageToken=None, state=None, maxResults=None)</code>
+ <pre>Lists the progress for all your application's achievements for the currently authenticated player.
+
+Args:
+ playerId: string, A player ID. A value of me may be used in place of the authenticated player's ID. (required)
+ language: string, The preferred language to use for strings returned by this method.
+ pageToken: string, The token returned by the previous request.
+ state: string, Tells the server to return only achievements with the specified state. If this parameter isn't specified, all achievements are returned.
+ Allowed values
+ ALL - List all achievements. This is the default.
+ HIDDEN - List only hidden achievements.
+ REVEALED - List only revealed achievements.
+ UNLOCKED - List only unlocked achievements.
+ maxResults: integer, The maximum number of achievement resources to return in the response, used for paging. For any response, the actual number of achievement resources returned may be less than the specified maxResults.
+
+Returns:
+ An object of the form:
+
+ { # This is a JSON template for a list of achievement objects.
+ "nextPageToken": "A String", # Token corresponding to the next page of results.
+ "items": [ # The achievements.
+ { # This is a JSON template for an achievement object.
+ "achievementState": "A String", # The state of the achievement.
+ # Possible values are:
+ # - "HIDDEN" - Achievement is hidden.
+ # - "REVEALED" - Achievement is revealed.
+ # - "UNLOCKED" - Achievement is unlocked.
+ "kind": "games#playerAchievement", # Uniquely identifies the type of this resource. Value is always the fixed string games#playerAchievement.
+ "lastUpdatedTimestamp": "A String", # The timestamp of the last modification to this achievement's state.
+ "currentSteps": 42, # The current steps for an incremental achievement.
+ "formattedCurrentStepsString": "A String", # The current steps for an incremental achievement as a string.
+ "id": "A String", # The ID of the achievement.
+ },
+ ],
+ "kind": "games#playerAchievementListResponse", # Uniquely identifies the type of this resource. Value is always the fixed string games#playerAchievementListResponse.
+ }</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="reveal">reveal(achievementId)</code>
+ <pre>Sets the state of the achievement with the given ID to REVEALED for the currently authenticated player.
+
+Args:
+ achievementId: string, The ID of the achievement used by this method. (required)
+
+Returns:
+ An object of the form:
+
+ { # This is a JSON template for an achievement reveal response
+ "kind": "games#achievementRevealResponse", # Uniquely identifies the type of this resource. Value is always the fixed string games#achievementRevealResponse.
+ "currentState": "A String", # The current state of the achievement for which a reveal was attempted. This might be UNLOCKED if the achievement was already unlocked.
+ # Possible values are:
+ # - "REVEALED" - Achievement is revealed.
+ # - "UNLOCKED" - Achievement is unlocked.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="unlock">unlock(achievementId)</code>
+ <pre>Unlocks this achievement for the currently authenticated player.
+
+Args:
+ achievementId: string, The ID of the achievement used by this method. (required)
+
+Returns:
+ An object of the form:
+
+ { # This is a JSON template for an achievement unlock response
+ "newlyUnlocked": True or False, # Whether this achievement was newly unlocked (that is, whether the unlock request for the achievement was the first for the player).
+ "kind": "games#achievementUnlockResponse", # Uniquely identifies the type of this resource. Value is always the fixed string games#achievementUnlockResponse.
+ }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/games_v1.applications.html b/docs/dyn/games_v1.applications.html
new file mode 100644
index 0000000..5ae1305
--- /dev/null
+++ b/docs/dyn/games_v1.applications.html
@@ -0,0 +1,168 @@
+<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="games_v1.html">Google Play Game Services API</a> . <a href="games_v1.applications.html">applications</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#get">get(applicationId, language=None, platformType=None)</a></code></p>
+<p class="firstline">Retrieves the metadata of the application with the given ID. If the requested application is not available for the specified platformType, the returned response will not include any instance data.</p>
+<p class="toc_element">
+ <code><a href="#played">played()</a></code></p>
+<p class="firstline">Indicate that the the currently authenticated user is playing your application.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="get">get(applicationId, language=None, platformType=None)</code>
+ <pre>Retrieves the metadata of the application with the given ID. If the requested application is not available for the specified platformType, the returned response will not include any instance data.
+
+Args:
+ applicationId: string, The application being requested. (required)
+ language: string, The preferred language to use for strings returned by this method.
+ platformType: string, Restrict application details returned to the specific platform.
+ Allowed values
+ ANDROID - Retrieve applications that can be played on Android.
+ IOS - Retrieve applications that can be played on iOS.
+ WEB_APP - Retrieve applications that can be played on desktop web.
+
+Returns:
+ An object of the form:
+
+ { # This is a JSON template for the Application resource.
+ "category": { # This is a JSON template for an application category object. # The category of the application.
+ "kind": "games#applicationCategory", # Uniquely identifies the type of this resource. Value is always the fixed string games#applicationCategory.
+ "primary": "A String", # The primary category.
+ "secondary": "A String", # The secondary category.
+ },
+ "kind": "games#application", # Uniquely identifies the type of this resource. Value is always the fixed string games#application.
+ "description": "A String", # The description of the application.
+ "author": "A String", # The author of the application.
+ "lastUpdatedTimestamp": "A String", # The last updated timestamp of the application.
+ "name": "A String", # The name of the application.
+ "instances": [ # The instances of the application.
+ { # This is a JSON template for the Instance resource.
+ "kind": "games#instance", # Uniquely identifies the type of this resource. Value is always the fixed string games#instance.
+ "acquisitionUri": "A String", # URI which shows where a user can acquire this instance.
+ "name": "A String", # Localized display name.
+ "turnBasedPlay": True or False, # Flag to show if this game instance supports turn based play.
+ "webInstance": { # This is a JSON template for the Web details resource. # Platform dependent details for Web.
+ "kind": "games#instanceWebDetails", # Uniquely identifies the type of this resource. Value is always the fixed string games#instanceWebDetails.
+ "launchUrl": "A String", # Launch URL for the game.
+ "preferred": True or False, # Indicates that this instance is the default for new installations.
+ },
+ "androidInstance": { # This is a JSON template for the Android instance details resource. # Platform dependent details for Android.
+ "kind": "games#instanceAndroidDetails", # Uniquely identifies the type of this resource. Value is always the fixed string games#instanceAndroidDetails.
+ "enablePiracyCheck": True or False, # Flag indicating whether the anti-piracy check is enabled.
+ "packageName": "A String", # Android package name which maps to Google Play URL.
+ "preferred": True or False, # Indicates that this instance is the default for new installations.
+ },
+ "iosInstance": { # This is a JSON template for the iOS details resource. # Platform dependent details for iOS.
+ "kind": "games#instanceIosDetails", # Uniquely identifies the type of this resource. Value is always the fixed string games#instanceIosDetails.
+ "supportIphone": True or False, # Flag to indicate if this instance supports iPhone.
+ "preferredForIpad": True or False, # Indicates that this instance is the default for new installations on iPad devices.
+ "itunesAppId": "A String", # iTunes App ID.
+ "bundleIdentifier": "A String", # Bundle identifier.
+ "supportIpad": True or False, # Flag to indicate if this instance supports iPad.
+ "preferredForIphone": True or False, # Indicates that this instance is the default for new installations on iPhone devices.
+ },
+ "platformType": "A String", # The platform type.
+ # Possible values are:
+ # - "ANDROID" - Instance is for Android.
+ # - "IOS" - Instance is for iOS
+ # - "WEB_APP" - Instance is for Web App.
+ "realtimePlay": True or False, # Flag to show if this game instance supports realtime play.
+ },
+ ],
+ "achievement_count": 42, # The number of achievements visible to the currently authenticated player.
+ "leaderboard_count": 42, # The number of leaderboards visible to the currently authenticated player.
+ "id": "A String", # The ID of the application.
+ "assets": [ # The assets of the application.
+ { # This is a JSON template for an image asset object.
+ "url": "A String", # The URL of the asset.
+ "width": 42, # The width of the asset.
+ "kind": "games#imageAsset", # Uniquely identifies the type of this resource. Value is always the fixed string games#imageAsset.
+ "name": "A String", # The name of the asset.
+ "height": 42, # The height of the asset.
+ },
+ ],
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="played">played()</code>
+ <pre>Indicate that the the currently authenticated user is playing your application.
+
+Args:
+</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/games_v1.html b/docs/dyn/games_v1.html
new file mode 100644
index 0000000..efc5279
--- /dev/null
+++ b/docs/dyn/games_v1.html
@@ -0,0 +1,117 @@
+<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="games_v1.html">Google Play Game Services API</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="games_v1.achievementDefinitions.html">achievementDefinitions()</a></code>
+</p>
+<p class="firstline">Returns the achievementDefinitions Resource.</p>
+
+<p class="toc_element">
+ <code><a href="games_v1.achievements.html">achievements()</a></code>
+</p>
+<p class="firstline">Returns the achievements Resource.</p>
+
+<p class="toc_element">
+ <code><a href="games_v1.applications.html">applications()</a></code>
+</p>
+<p class="firstline">Returns the applications Resource.</p>
+
+<p class="toc_element">
+ <code><a href="games_v1.leaderboards.html">leaderboards()</a></code>
+</p>
+<p class="firstline">Returns the leaderboards Resource.</p>
+
+<p class="toc_element">
+ <code><a href="games_v1.players.html">players()</a></code>
+</p>
+<p class="firstline">Returns the players Resource.</p>
+
+<p class="toc_element">
+ <code><a href="games_v1.revisions.html">revisions()</a></code>
+</p>
+<p class="firstline">Returns the revisions Resource.</p>
+
+<p class="toc_element">
+ <code><a href="games_v1.rooms.html">rooms()</a></code>
+</p>
+<p class="firstline">Returns the rooms Resource.</p>
+
+<p class="toc_element">
+ <code><a href="games_v1.scores.html">scores()</a></code>
+</p>
+<p class="firstline">Returns the scores Resource.</p>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/games_v1.leaderboards.html b/docs/dyn/games_v1.leaderboards.html
new file mode 100644
index 0000000..e23f328
--- /dev/null
+++ b/docs/dyn/games_v1.leaderboards.html
@@ -0,0 +1,156 @@
+<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="games_v1.html">Google Play Game Services API</a> . <a href="games_v1.leaderboards.html">leaderboards</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#get">get(leaderboardId, language=None)</a></code></p>
+<p class="firstline">Retrieves the metadata of the leaderboard with the given ID.</p>
+<p class="toc_element">
+ <code><a href="#list">list(pageToken=None, language=None, maxResults=None)</a></code></p>
+<p class="firstline">Lists all the leaderboard metadata for your application.</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>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="get">get(leaderboardId, language=None)</code>
+ <pre>Retrieves the metadata of the leaderboard with the given ID.
+
+Args:
+ leaderboardId: string, The ID of the leaderboard. (required)
+ language: string, The preferred language to use for strings returned by this method.
+
+Returns:
+ An object of the form:
+
+ { # This is a JSON template for the Leaderboard resource.
+ "kind": "games#leaderboard", # Uniquely identifies the type of this resource. Value is always the fixed string games#leaderboard.
+ "isIconUrlDefault": True or False, # Indicates whether the icon image being returned is a default image, or is game-provided.
+ "name": "A String", # The name of the leaderboard.
+ "id": "A String", # The leaderboard ID.
+ "iconUrl": "A String", # The icon for the leaderboard.
+ "order": "A String", # How scores are ordered.
+ # Possible values are:
+ # - "LARGER_IS_BETTER" - Larger values are better; scores are sorted in descending order.
+ # - "SMALLER_IS_BETTER" - Smaller values are better; scores are sorted in ascending order.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="list">list(pageToken=None, language=None, maxResults=None)</code>
+ <pre>Lists all the leaderboard metadata for your application.
+
+Args:
+ pageToken: string, The token returned by the previous request.
+ language: string, The preferred language to use for strings returned by this method.
+ maxResults: integer, The maximum number of leaderboards to return in the response. For any response, the actual number of leaderboards returned may be less than the specified maxResults.
+
+Returns:
+ An object of the form:
+
+ { # This is a JSON template for a list of leaderboard objects.
+ "nextPageToken": "A String", # Token corresponding to the next page of results.
+ "items": [ # The leaderboards.
+ { # This is a JSON template for the Leaderboard resource.
+ "kind": "games#leaderboard", # Uniquely identifies the type of this resource. Value is always the fixed string games#leaderboard.
+ "isIconUrlDefault": True or False, # Indicates whether the icon image being returned is a default image, or is game-provided.
+ "name": "A String", # The name of the leaderboard.
+ "id": "A String", # The leaderboard ID.
+ "iconUrl": "A String", # The icon for the leaderboard.
+ "order": "A String", # How scores are ordered.
+ # Possible values are:
+ # - "LARGER_IS_BETTER" - Larger values are better; scores are sorted in descending order.
+ # - "SMALLER_IS_BETTER" - Smaller values are better; scores are sorted in ascending order.
+ },
+ ],
+ "kind": "games#leaderboardListResponse", # Uniquely identifies the type of this resource. Value is always the fixed string games#leaderboardListResponse.
+ }</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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/games_v1.players.html b/docs/dyn/games_v1.players.html
new file mode 100644
index 0000000..c664ffb
--- /dev/null
+++ b/docs/dyn/games_v1.players.html
@@ -0,0 +1,99 @@
+<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="games_v1.html">Google Play Game Services API</a> . <a href="games_v1.players.html">players</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#get">get(playerId)</a></code></p>
+<p class="firstline">Retrieves the Player resource with the given ID. To retrieve the player for the currently authenticated user, set playerId to me.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="get">get(playerId)</code>
+ <pre>Retrieves the Player resource with the given ID. To retrieve the player for the currently authenticated user, set playerId to me.
+
+Args:
+ playerId: string, A player ID. A value of me may be used in place of the authenticated player's ID. (required)
+
+Returns:
+ An object of the form:
+
+ { # This is a JSON template for a Player resource.
+ "playerId": "A String", # The ID of the player.
+ "kind": "games#player", # Uniquely identifies the type of this resource. Value is always the fixed string games#player.
+ "avatarImageUrl": "A String", # The base URL for the image that represents the player.
+ "displayName": "A String", # The name to display for the player.
+ }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/games_v1.revisions.html b/docs/dyn/games_v1.revisions.html
new file mode 100644
index 0000000..b4191cc
--- /dev/null
+++ b/docs/dyn/games_v1.revisions.html
@@ -0,0 +1,101 @@
+<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="games_v1.html">Google Play Game Services API</a> . <a href="games_v1.revisions.html">revisions</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#check">check(clientRevision)</a></code></p>
+<p class="firstline">Checks whether the games client is out of date.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="check">check(clientRevision)</code>
+ <pre>Checks whether the games client is out of date.
+
+Args:
+ clientRevision: string, The revision of the client SDK used by your application. (required)
+
+Returns:
+ An object of the form:
+
+ { # This is a JSON template for the result of checking a revision.
+ "kind": "games#revisionCheckResponse", # Uniquely identifies the type of this resource. Value is always the fixed string games#revisionCheckResponse.
+ "revisionStatus": "A String", # The result of the revision check.
+ # Possible values are:
+ # - "OK" - The revision being used is current.
+ # - "DEPRECATED" - There is currently a newer version available, but the revision being used still works.
+ # - "INVALID" - The revision being used is not supported in any released version.
+ }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/games_v1.rooms.html b/docs/dyn/games_v1.rooms.html
new file mode 100644
index 0000000..8dfb6c7
--- /dev/null
+++ b/docs/dyn/games_v1.rooms.html
@@ -0,0 +1,887 @@
+<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="games_v1.html">Google Play Game Services API</a> . <a href="games_v1.rooms.html">rooms</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#create">create(body, language=None)</a></code></p>
+<p class="firstline">Create a room. For internal use by the Games SDK only. Calling this method directly is unsupported.</p>
+<p class="toc_element">
+ <code><a href="#decline">decline(roomId)</a></code></p>
+<p class="firstline">Decline an invitation to join a room. For internal use by the Games SDK only. Calling this method directly is unsupported.</p>
+<p class="toc_element">
+ <code><a href="#dismiss">dismiss(roomId)</a></code></p>
+<p class="firstline">Dismiss an invitation to join a room. For internal use by the Games SDK only. Calling this method directly is unsupported.</p>
+<p class="toc_element">
+ <code><a href="#get">get(roomId, language=None)</a></code></p>
+<p class="firstline">Get the data for a room.</p>
+<p class="toc_element">
+ <code><a href="#join">join(roomId, body)</a></code></p>
+<p class="firstline">Join a room. For internal use by the Games SDK only. Calling this method directly is unsupported.</p>
+<p class="toc_element">
+ <code><a href="#leave">leave(roomId, body)</a></code></p>
+<p class="firstline">Leave a room. For internal use by the Games SDK only. Calling this method directly is unsupported.</p>
+<p class="toc_element">
+ <code><a href="#list">list(pageToken=None, language=None, maxResults=None)</a></code></p>
+<p class="firstline">Returns invitations to join rooms.</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="#reportStatus">reportStatus(roomId, body)</a></code></p>
+<p class="firstline">Updates sent by a client reporting the status of peers in a room. For internal use by the Games SDK only. Calling this method directly is unsupported.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="create">create(body, language=None)</code>
+ <pre>Create a room. For internal use by the Games SDK only. Calling this method directly is unsupported.
+
+Args:
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # This is a JSON template for a room creation request.
+ "kind": "games#roomCreateRequest", # Uniquely identifies the type of this resource. Value is always the fixed string games#roomCreateRequest.
+ "autoMatchingCriteria": { # This is a JSON template for a room auto-match criteria object. # Criteria for auto-matching players into this room.
+ "kind": "games#roomAutoMatchingCriteria", # Uniquely identifies the type of this resource. Value is always the fixed string games#roomAutoMatchingCriteria.
+ "minAutoMatchingPlayers": 42, # The minimum number of players that should be added to the room by auto-matching.
+ "exclusiveBitmask": "A String", # A bitmask indicating when auto-matches are valid. When ANDed with other exclusive bitmasks, the result must be zero. Can be used to support exclusive roles within a game.
+ "maxAutoMatchingPlayers": 42, # The maximum number of players that should be added to the room by auto-matching.
+ },
+ "invitedPlayerIds": [ # The player IDs to invite to the room.
+ "A String",
+ ],
+ "variant": 42, # The variant / mode of the application to be played. This can be any integer value, or left blank. You should use a small number of variants to keep the auto-matching pool as large as possible.
+ "capabilities": [ # The capabilities that this client supports for realtime communication.
+ "A String",
+ ],
+ "networkDiagnostics": { # This is a JSON template for network diagnostics reported for a client. # Network diagnostics for the client creating the room.
+ "registrationLatencyMillis": 42, # The amount of time in milliseconds it took for the client to establish a connection with the XMPP server.
+ "kind": "games#networkDiagnostics", # Uniquely identifies the type of this resource. Value is always the fixed string games#networkDiagnostics.
+ "androidNetworkSubtype": 42, # The Android network subtype.
+ "androidNetworkType": 42, # The Android network type.
+ },
+ "clientAddress": { # This is a JSON template for the client address when setting up a room. # Client address for the player creating the room.
+ "kind": "games#roomClientAddress", # Uniquely identifies the type of this resource. Value is always the fixed string games#roomClientAddress.
+ "xmppAddress": "A String", # The XMPP address of the client on the Google Games XMPP network.
+ },
+ }
+
+ language: string, The preferred language to use for strings returned by this method.
+
+Returns:
+ An object of the form:
+
+ { # This is a JSON template for a room resource object.
+ "status": "A String", # The status of the room.
+ # Possible values are:
+ # - "ROOM_INVITING" - One or more players have been invited and not responded.
+ # - "ROOM_AUTO_MATCHING" - One or more slots need to be filled by auto-matching.
+ # - "ROOM_CONNECTING" - Players have joined and are connecting to each other (either before or after auto-matching).
+ # - "ROOM_ACTIVE" - All players have joined and connected to each other.
+ # - "ROOM_DELETED" - The room should no longer be shown on the client. Returned in sync calls when a player joins a room (as a tombstone), or for rooms where all joined participants have left.
+ "kind": "games#room", # Uniquely identifies the type of this resource. Value is always the fixed string games#room.
+ "autoMatchingCriteria": { # This is a JSON template for a room auto-match criteria object. # Criteria for auto-matching players into this room.
+ "kind": "games#roomAutoMatchingCriteria", # Uniquely identifies the type of this resource. Value is always the fixed string games#roomAutoMatchingCriteria.
+ "minAutoMatchingPlayers": 42, # The minimum number of players that should be added to the room by auto-matching.
+ "exclusiveBitmask": "A String", # A bitmask indicating when auto-matches are valid. When ANDed with other exclusive bitmasks, the result must be zero. Can be used to support exclusive roles within a game.
+ "maxAutoMatchingPlayers": 42, # The maximum number of players that should be added to the room by auto-matching.
+ },
+ "creationDetails": { # This is a JSON template for room modification metadata. # Details about the room creation.
+ "kind": "games#roomModification", # Uniquely identifies the type of this resource. Value is always the fixed string games#roomModification.
+ "modifiedTimestampMillis": "A String", # The timestamp at which they modified the room, in milliseconds since the epoch in UTC.
+ "participantId": "A String", # The ID of the participant that modified the room.
+ },
+ "description": "A String", # This short description is generated by our servers and worded relative to the player requesting the room. It is intended to be displayed when the room is shown in a list (that is, an invitation to a room.)
+ "roomId": "A String", # Globally unique ID for a room.
+ "autoMatchingStatus": { # This is a JSON template for status of room automatching that is in progress. # Auto-matching status for this room. Not set if the room is not currently in the automatching status.
+ "kind": "games#roomAutoMatchStatus", # Uniquely identifies the type of this resource. Value is always the fixed string games#roomAutoMatchStatus.
+ "waitEstimateSeconds": 42, # An estimate for the amount of time that automatching is expected to take to complete.
+ },
+ "participants": [ # The participants involved in the room, along with their statuses. Includes participants who have left or declined invitations.
+ { # This is a JSON template for a participant in a room.
+ "status": "A String", # The status of the participant with respect to the room.
+ # Possible values are:
+ # - "PARTICIPANT_INVITED" - The participant has been invited to join the room, but has not yet responded.
+ # - "PARTICIPANT_JOINED" - The participant has joined the room (either after creating it or accepting an invitation.)
+ # - "PARTICIPANT_DECLINED" - The participant declined an invitation to join the room.
+ # - "PARTICIPANT_LEFT" - The participant joined the room and then left it.
+ "kind": "games#roomParticipant", # Uniquely identifies the type of this resource. Value is always the fixed string games#roomParticipant.
+ "autoMatchedPlayer": { # This is a JSON template for an anonymous player # Information about a player that has been auto-matched against the requesting player. (Either player or autoMatchedPlayer will be set.)
+ "kind": "games#anonymousPlayer", # Uniquely identifies the type of this resource. Value is always the fixed string games#anonymousPlayer.
+ "avatarImageUrl": "A String", # The base URL for the image to display for the anonymous player.
+ "displayName": "A String", # The name to display for the anonymous player.
+ },
+ "leaveReason": "A String", # The reason the participant left the room; populated if the participant status is PARTICIPANT_LEFT.
+ # Possible values are:
+ # - "PLAYER_LEFT" - The player explicitly chose to leave the room.
+ # - "GAME_LEFT" - The game chose to remove the player from the room.
+ # - "ABANDONED" - The player switched to another application and abandoned the room.
+ # - "PEER_CONNECTION_FAILURE" - The client was unable to establish or maintain a connection to other peer(s) in the room.
+ # - "SERVER_ERROR" - The client received an error response when it tried to communicate with the server.
+ # - "TIMEOUT" - The client timed out while waiting for players to join and connect.
+ # - "PRESENCE_FAILURE" - The client's XMPP connection ended abruptly.
+ "capabilities": [ # The capabilities which can be used when communicating with this participant.
+ "A String",
+ ],
+ "player": { # This is a JSON template for a Player resource. # Information about the player. Not populated if this player was auto-matched against the requesting player. (Either player or autoMatchedPlayer will be set.)
+ "playerId": "A String", # The ID of the player.
+ "kind": "games#player", # Uniquely identifies the type of this resource. Value is always the fixed string games#player.
+ "avatarImageUrl": "A String", # The base URL for the image that represents the player.
+ "displayName": "A String", # The name to display for the player.
+ },
+ "clientAddress": { # This is a JSON template for the client address when setting up a room. # Client address for the participant.
+ "kind": "games#roomClientAddress", # Uniquely identifies the type of this resource. Value is always the fixed string games#roomClientAddress.
+ "xmppAddress": "A String", # The XMPP address of the client on the Google Games XMPP network.
+ },
+ "connected": True or False, # True if this participant is in the fully connected set of peers in the room.
+ "id": "A String", # An identifier for the participant in the scope of the room. Cannot be used to identify a player across rooms or in other contexts.
+ },
+ ],
+ "roomStatusVersion": 42, # The version of the room status: an increasing counter, used by the client to ignore out-of-order updates to room status.
+ "variant": 42, # The variant / mode of the application being played; can be any integer value, or left blank.
+ "lastUpdateDetails": { # This is a JSON template for room modification metadata. # Details about the last update to the room.
+ "kind": "games#roomModification", # Uniquely identifies the type of this resource. Value is always the fixed string games#roomModification.
+ "modifiedTimestampMillis": "A String", # The timestamp at which they modified the room, in milliseconds since the epoch in UTC.
+ "participantId": "A String", # The ID of the participant that modified the room.
+ },
+ "applicationId": "A String", # The ID of the application being played.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="decline">decline(roomId)</code>
+ <pre>Decline an invitation to join a room. For internal use by the Games SDK only. Calling this method directly is unsupported.
+
+Args:
+ roomId: string, The ID of the room. (required)
+
+Returns:
+ An object of the form:
+
+ { # This is a JSON template for a room resource object.
+ "status": "A String", # The status of the room.
+ # Possible values are:
+ # - "ROOM_INVITING" - One or more players have been invited and not responded.
+ # - "ROOM_AUTO_MATCHING" - One or more slots need to be filled by auto-matching.
+ # - "ROOM_CONNECTING" - Players have joined and are connecting to each other (either before or after auto-matching).
+ # - "ROOM_ACTIVE" - All players have joined and connected to each other.
+ # - "ROOM_DELETED" - The room should no longer be shown on the client. Returned in sync calls when a player joins a room (as a tombstone), or for rooms where all joined participants have left.
+ "kind": "games#room", # Uniquely identifies the type of this resource. Value is always the fixed string games#room.
+ "autoMatchingCriteria": { # This is a JSON template for a room auto-match criteria object. # Criteria for auto-matching players into this room.
+ "kind": "games#roomAutoMatchingCriteria", # Uniquely identifies the type of this resource. Value is always the fixed string games#roomAutoMatchingCriteria.
+ "minAutoMatchingPlayers": 42, # The minimum number of players that should be added to the room by auto-matching.
+ "exclusiveBitmask": "A String", # A bitmask indicating when auto-matches are valid. When ANDed with other exclusive bitmasks, the result must be zero. Can be used to support exclusive roles within a game.
+ "maxAutoMatchingPlayers": 42, # The maximum number of players that should be added to the room by auto-matching.
+ },
+ "creationDetails": { # This is a JSON template for room modification metadata. # Details about the room creation.
+ "kind": "games#roomModification", # Uniquely identifies the type of this resource. Value is always the fixed string games#roomModification.
+ "modifiedTimestampMillis": "A String", # The timestamp at which they modified the room, in milliseconds since the epoch in UTC.
+ "participantId": "A String", # The ID of the participant that modified the room.
+ },
+ "description": "A String", # This short description is generated by our servers and worded relative to the player requesting the room. It is intended to be displayed when the room is shown in a list (that is, an invitation to a room.)
+ "roomId": "A String", # Globally unique ID for a room.
+ "autoMatchingStatus": { # This is a JSON template for status of room automatching that is in progress. # Auto-matching status for this room. Not set if the room is not currently in the automatching status.
+ "kind": "games#roomAutoMatchStatus", # Uniquely identifies the type of this resource. Value is always the fixed string games#roomAutoMatchStatus.
+ "waitEstimateSeconds": 42, # An estimate for the amount of time that automatching is expected to take to complete.
+ },
+ "participants": [ # The participants involved in the room, along with their statuses. Includes participants who have left or declined invitations.
+ { # This is a JSON template for a participant in a room.
+ "status": "A String", # The status of the participant with respect to the room.
+ # Possible values are:
+ # - "PARTICIPANT_INVITED" - The participant has been invited to join the room, but has not yet responded.
+ # - "PARTICIPANT_JOINED" - The participant has joined the room (either after creating it or accepting an invitation.)
+ # - "PARTICIPANT_DECLINED" - The participant declined an invitation to join the room.
+ # - "PARTICIPANT_LEFT" - The participant joined the room and then left it.
+ "kind": "games#roomParticipant", # Uniquely identifies the type of this resource. Value is always the fixed string games#roomParticipant.
+ "autoMatchedPlayer": { # This is a JSON template for an anonymous player # Information about a player that has been auto-matched against the requesting player. (Either player or autoMatchedPlayer will be set.)
+ "kind": "games#anonymousPlayer", # Uniquely identifies the type of this resource. Value is always the fixed string games#anonymousPlayer.
+ "avatarImageUrl": "A String", # The base URL for the image to display for the anonymous player.
+ "displayName": "A String", # The name to display for the anonymous player.
+ },
+ "leaveReason": "A String", # The reason the participant left the room; populated if the participant status is PARTICIPANT_LEFT.
+ # Possible values are:
+ # - "PLAYER_LEFT" - The player explicitly chose to leave the room.
+ # - "GAME_LEFT" - The game chose to remove the player from the room.
+ # - "ABANDONED" - The player switched to another application and abandoned the room.
+ # - "PEER_CONNECTION_FAILURE" - The client was unable to establish or maintain a connection to other peer(s) in the room.
+ # - "SERVER_ERROR" - The client received an error response when it tried to communicate with the server.
+ # - "TIMEOUT" - The client timed out while waiting for players to join and connect.
+ # - "PRESENCE_FAILURE" - The client's XMPP connection ended abruptly.
+ "capabilities": [ # The capabilities which can be used when communicating with this participant.
+ "A String",
+ ],
+ "player": { # This is a JSON template for a Player resource. # Information about the player. Not populated if this player was auto-matched against the requesting player. (Either player or autoMatchedPlayer will be set.)
+ "playerId": "A String", # The ID of the player.
+ "kind": "games#player", # Uniquely identifies the type of this resource. Value is always the fixed string games#player.
+ "avatarImageUrl": "A String", # The base URL for the image that represents the player.
+ "displayName": "A String", # The name to display for the player.
+ },
+ "clientAddress": { # This is a JSON template for the client address when setting up a room. # Client address for the participant.
+ "kind": "games#roomClientAddress", # Uniquely identifies the type of this resource. Value is always the fixed string games#roomClientAddress.
+ "xmppAddress": "A String", # The XMPP address of the client on the Google Games XMPP network.
+ },
+ "connected": True or False, # True if this participant is in the fully connected set of peers in the room.
+ "id": "A String", # An identifier for the participant in the scope of the room. Cannot be used to identify a player across rooms or in other contexts.
+ },
+ ],
+ "roomStatusVersion": 42, # The version of the room status: an increasing counter, used by the client to ignore out-of-order updates to room status.
+ "variant": 42, # The variant / mode of the application being played; can be any integer value, or left blank.
+ "lastUpdateDetails": { # This is a JSON template for room modification metadata. # Details about the last update to the room.
+ "kind": "games#roomModification", # Uniquely identifies the type of this resource. Value is always the fixed string games#roomModification.
+ "modifiedTimestampMillis": "A String", # The timestamp at which they modified the room, in milliseconds since the epoch in UTC.
+ "participantId": "A String", # The ID of the participant that modified the room.
+ },
+ "applicationId": "A String", # The ID of the application being played.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="dismiss">dismiss(roomId)</code>
+ <pre>Dismiss an invitation to join a room. For internal use by the Games SDK only. Calling this method directly is unsupported.
+
+Args:
+ roomId: string, The ID of the room. (required)
+</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="get">get(roomId, language=None)</code>
+ <pre>Get the data for a room.
+
+Args:
+ roomId: string, The ID of the room. (required)
+ language: string, Specify the preferred language to use to format room info.
+
+Returns:
+ An object of the form:
+
+ { # This is a JSON template for a room resource object.
+ "status": "A String", # The status of the room.
+ # Possible values are:
+ # - "ROOM_INVITING" - One or more players have been invited and not responded.
+ # - "ROOM_AUTO_MATCHING" - One or more slots need to be filled by auto-matching.
+ # - "ROOM_CONNECTING" - Players have joined and are connecting to each other (either before or after auto-matching).
+ # - "ROOM_ACTIVE" - All players have joined and connected to each other.
+ # - "ROOM_DELETED" - The room should no longer be shown on the client. Returned in sync calls when a player joins a room (as a tombstone), or for rooms where all joined participants have left.
+ "kind": "games#room", # Uniquely identifies the type of this resource. Value is always the fixed string games#room.
+ "autoMatchingCriteria": { # This is a JSON template for a room auto-match criteria object. # Criteria for auto-matching players into this room.
+ "kind": "games#roomAutoMatchingCriteria", # Uniquely identifies the type of this resource. Value is always the fixed string games#roomAutoMatchingCriteria.
+ "minAutoMatchingPlayers": 42, # The minimum number of players that should be added to the room by auto-matching.
+ "exclusiveBitmask": "A String", # A bitmask indicating when auto-matches are valid. When ANDed with other exclusive bitmasks, the result must be zero. Can be used to support exclusive roles within a game.
+ "maxAutoMatchingPlayers": 42, # The maximum number of players that should be added to the room by auto-matching.
+ },
+ "creationDetails": { # This is a JSON template for room modification metadata. # Details about the room creation.
+ "kind": "games#roomModification", # Uniquely identifies the type of this resource. Value is always the fixed string games#roomModification.
+ "modifiedTimestampMillis": "A String", # The timestamp at which they modified the room, in milliseconds since the epoch in UTC.
+ "participantId": "A String", # The ID of the participant that modified the room.
+ },
+ "description": "A String", # This short description is generated by our servers and worded relative to the player requesting the room. It is intended to be displayed when the room is shown in a list (that is, an invitation to a room.)
+ "roomId": "A String", # Globally unique ID for a room.
+ "autoMatchingStatus": { # This is a JSON template for status of room automatching that is in progress. # Auto-matching status for this room. Not set if the room is not currently in the automatching status.
+ "kind": "games#roomAutoMatchStatus", # Uniquely identifies the type of this resource. Value is always the fixed string games#roomAutoMatchStatus.
+ "waitEstimateSeconds": 42, # An estimate for the amount of time that automatching is expected to take to complete.
+ },
+ "participants": [ # The participants involved in the room, along with their statuses. Includes participants who have left or declined invitations.
+ { # This is a JSON template for a participant in a room.
+ "status": "A String", # The status of the participant with respect to the room.
+ # Possible values are:
+ # - "PARTICIPANT_INVITED" - The participant has been invited to join the room, but has not yet responded.
+ # - "PARTICIPANT_JOINED" - The participant has joined the room (either after creating it or accepting an invitation.)
+ # - "PARTICIPANT_DECLINED" - The participant declined an invitation to join the room.
+ # - "PARTICIPANT_LEFT" - The participant joined the room and then left it.
+ "kind": "games#roomParticipant", # Uniquely identifies the type of this resource. Value is always the fixed string games#roomParticipant.
+ "autoMatchedPlayer": { # This is a JSON template for an anonymous player # Information about a player that has been auto-matched against the requesting player. (Either player or autoMatchedPlayer will be set.)
+ "kind": "games#anonymousPlayer", # Uniquely identifies the type of this resource. Value is always the fixed string games#anonymousPlayer.
+ "avatarImageUrl": "A String", # The base URL for the image to display for the anonymous player.
+ "displayName": "A String", # The name to display for the anonymous player.
+ },
+ "leaveReason": "A String", # The reason the participant left the room; populated if the participant status is PARTICIPANT_LEFT.
+ # Possible values are:
+ # - "PLAYER_LEFT" - The player explicitly chose to leave the room.
+ # - "GAME_LEFT" - The game chose to remove the player from the room.
+ # - "ABANDONED" - The player switched to another application and abandoned the room.
+ # - "PEER_CONNECTION_FAILURE" - The client was unable to establish or maintain a connection to other peer(s) in the room.
+ # - "SERVER_ERROR" - The client received an error response when it tried to communicate with the server.
+ # - "TIMEOUT" - The client timed out while waiting for players to join and connect.
+ # - "PRESENCE_FAILURE" - The client's XMPP connection ended abruptly.
+ "capabilities": [ # The capabilities which can be used when communicating with this participant.
+ "A String",
+ ],
+ "player": { # This is a JSON template for a Player resource. # Information about the player. Not populated if this player was auto-matched against the requesting player. (Either player or autoMatchedPlayer will be set.)
+ "playerId": "A String", # The ID of the player.
+ "kind": "games#player", # Uniquely identifies the type of this resource. Value is always the fixed string games#player.
+ "avatarImageUrl": "A String", # The base URL for the image that represents the player.
+ "displayName": "A String", # The name to display for the player.
+ },
+ "clientAddress": { # This is a JSON template for the client address when setting up a room. # Client address for the participant.
+ "kind": "games#roomClientAddress", # Uniquely identifies the type of this resource. Value is always the fixed string games#roomClientAddress.
+ "xmppAddress": "A String", # The XMPP address of the client on the Google Games XMPP network.
+ },
+ "connected": True or False, # True if this participant is in the fully connected set of peers in the room.
+ "id": "A String", # An identifier for the participant in the scope of the room. Cannot be used to identify a player across rooms or in other contexts.
+ },
+ ],
+ "roomStatusVersion": 42, # The version of the room status: an increasing counter, used by the client to ignore out-of-order updates to room status.
+ "variant": 42, # The variant / mode of the application being played; can be any integer value, or left blank.
+ "lastUpdateDetails": { # This is a JSON template for room modification metadata. # Details about the last update to the room.
+ "kind": "games#roomModification", # Uniquely identifies the type of this resource. Value is always the fixed string games#roomModification.
+ "modifiedTimestampMillis": "A String", # The timestamp at which they modified the room, in milliseconds since the epoch in UTC.
+ "participantId": "A String", # The ID of the participant that modified the room.
+ },
+ "applicationId": "A String", # The ID of the application being played.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="join">join(roomId, body)</code>
+ <pre>Join a room. For internal use by the Games SDK only. Calling this method directly is unsupported.
+
+Args:
+ roomId: string, The ID of the room. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # This is a JSON template for a join room request.
+ "networkDiagnostics": { # This is a JSON template for network diagnostics reported for a client. # Network diagnostics for the client joining the room.
+ "registrationLatencyMillis": 42, # The amount of time in milliseconds it took for the client to establish a connection with the XMPP server.
+ "kind": "games#networkDiagnostics", # Uniquely identifies the type of this resource. Value is always the fixed string games#networkDiagnostics.
+ "androidNetworkSubtype": 42, # The Android network subtype.
+ "androidNetworkType": 42, # The Android network type.
+ },
+ "clientAddress": { # This is a JSON template for the client address when setting up a room. # Client address for the player joining the room.
+ "kind": "games#roomClientAddress", # Uniquely identifies the type of this resource. Value is always the fixed string games#roomClientAddress.
+ "xmppAddress": "A String", # The XMPP address of the client on the Google Games XMPP network.
+ },
+ "kind": "games#roomJoinRequest", # Uniquely identifies the type of this resource. Value is always the fixed string games#roomJoinRequest.
+ "capabilities": [ # The capabilities that this client supports for realtime communication.
+ "A String",
+ ],
+ }
+
+
+Returns:
+ An object of the form:
+
+ { # This is a JSON template for a room resource object.
+ "status": "A String", # The status of the room.
+ # Possible values are:
+ # - "ROOM_INVITING" - One or more players have been invited and not responded.
+ # - "ROOM_AUTO_MATCHING" - One or more slots need to be filled by auto-matching.
+ # - "ROOM_CONNECTING" - Players have joined and are connecting to each other (either before or after auto-matching).
+ # - "ROOM_ACTIVE" - All players have joined and connected to each other.
+ # - "ROOM_DELETED" - The room should no longer be shown on the client. Returned in sync calls when a player joins a room (as a tombstone), or for rooms where all joined participants have left.
+ "kind": "games#room", # Uniquely identifies the type of this resource. Value is always the fixed string games#room.
+ "autoMatchingCriteria": { # This is a JSON template for a room auto-match criteria object. # Criteria for auto-matching players into this room.
+ "kind": "games#roomAutoMatchingCriteria", # Uniquely identifies the type of this resource. Value is always the fixed string games#roomAutoMatchingCriteria.
+ "minAutoMatchingPlayers": 42, # The minimum number of players that should be added to the room by auto-matching.
+ "exclusiveBitmask": "A String", # A bitmask indicating when auto-matches are valid. When ANDed with other exclusive bitmasks, the result must be zero. Can be used to support exclusive roles within a game.
+ "maxAutoMatchingPlayers": 42, # The maximum number of players that should be added to the room by auto-matching.
+ },
+ "creationDetails": { # This is a JSON template for room modification metadata. # Details about the room creation.
+ "kind": "games#roomModification", # Uniquely identifies the type of this resource. Value is always the fixed string games#roomModification.
+ "modifiedTimestampMillis": "A String", # The timestamp at which they modified the room, in milliseconds since the epoch in UTC.
+ "participantId": "A String", # The ID of the participant that modified the room.
+ },
+ "description": "A String", # This short description is generated by our servers and worded relative to the player requesting the room. It is intended to be displayed when the room is shown in a list (that is, an invitation to a room.)
+ "roomId": "A String", # Globally unique ID for a room.
+ "autoMatchingStatus": { # This is a JSON template for status of room automatching that is in progress. # Auto-matching status for this room. Not set if the room is not currently in the automatching status.
+ "kind": "games#roomAutoMatchStatus", # Uniquely identifies the type of this resource. Value is always the fixed string games#roomAutoMatchStatus.
+ "waitEstimateSeconds": 42, # An estimate for the amount of time that automatching is expected to take to complete.
+ },
+ "participants": [ # The participants involved in the room, along with their statuses. Includes participants who have left or declined invitations.
+ { # This is a JSON template for a participant in a room.
+ "status": "A String", # The status of the participant with respect to the room.
+ # Possible values are:
+ # - "PARTICIPANT_INVITED" - The participant has been invited to join the room, but has not yet responded.
+ # - "PARTICIPANT_JOINED" - The participant has joined the room (either after creating it or accepting an invitation.)
+ # - "PARTICIPANT_DECLINED" - The participant declined an invitation to join the room.
+ # - "PARTICIPANT_LEFT" - The participant joined the room and then left it.
+ "kind": "games#roomParticipant", # Uniquely identifies the type of this resource. Value is always the fixed string games#roomParticipant.
+ "autoMatchedPlayer": { # This is a JSON template for an anonymous player # Information about a player that has been auto-matched against the requesting player. (Either player or autoMatchedPlayer will be set.)
+ "kind": "games#anonymousPlayer", # Uniquely identifies the type of this resource. Value is always the fixed string games#anonymousPlayer.
+ "avatarImageUrl": "A String", # The base URL for the image to display for the anonymous player.
+ "displayName": "A String", # The name to display for the anonymous player.
+ },
+ "leaveReason": "A String", # The reason the participant left the room; populated if the participant status is PARTICIPANT_LEFT.
+ # Possible values are:
+ # - "PLAYER_LEFT" - The player explicitly chose to leave the room.
+ # - "GAME_LEFT" - The game chose to remove the player from the room.
+ # - "ABANDONED" - The player switched to another application and abandoned the room.
+ # - "PEER_CONNECTION_FAILURE" - The client was unable to establish or maintain a connection to other peer(s) in the room.
+ # - "SERVER_ERROR" - The client received an error response when it tried to communicate with the server.
+ # - "TIMEOUT" - The client timed out while waiting for players to join and connect.
+ # - "PRESENCE_FAILURE" - The client's XMPP connection ended abruptly.
+ "capabilities": [ # The capabilities which can be used when communicating with this participant.
+ "A String",
+ ],
+ "player": { # This is a JSON template for a Player resource. # Information about the player. Not populated if this player was auto-matched against the requesting player. (Either player or autoMatchedPlayer will be set.)
+ "playerId": "A String", # The ID of the player.
+ "kind": "games#player", # Uniquely identifies the type of this resource. Value is always the fixed string games#player.
+ "avatarImageUrl": "A String", # The base URL for the image that represents the player.
+ "displayName": "A String", # The name to display for the player.
+ },
+ "clientAddress": { # This is a JSON template for the client address when setting up a room. # Client address for the participant.
+ "kind": "games#roomClientAddress", # Uniquely identifies the type of this resource. Value is always the fixed string games#roomClientAddress.
+ "xmppAddress": "A String", # The XMPP address of the client on the Google Games XMPP network.
+ },
+ "connected": True or False, # True if this participant is in the fully connected set of peers in the room.
+ "id": "A String", # An identifier for the participant in the scope of the room. Cannot be used to identify a player across rooms or in other contexts.
+ },
+ ],
+ "roomStatusVersion": 42, # The version of the room status: an increasing counter, used by the client to ignore out-of-order updates to room status.
+ "variant": 42, # The variant / mode of the application being played; can be any integer value, or left blank.
+ "lastUpdateDetails": { # This is a JSON template for room modification metadata. # Details about the last update to the room.
+ "kind": "games#roomModification", # Uniquely identifies the type of this resource. Value is always the fixed string games#roomModification.
+ "modifiedTimestampMillis": "A String", # The timestamp at which they modified the room, in milliseconds since the epoch in UTC.
+ "participantId": "A String", # The ID of the participant that modified the room.
+ },
+ "applicationId": "A String", # The ID of the application being played.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="leave">leave(roomId, body)</code>
+ <pre>Leave a room. For internal use by the Games SDK only. Calling this method directly is unsupported.
+
+Args:
+ roomId: string, The ID of the room. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # This is a JSON template for a leave room request.
+ "kind": "games#roomLeaveRequest", # Uniquely identifies the type of this resource. Value is always the fixed string games#roomLeaveRequest.
+ "reason": "A String", # Reason for leaving the match.
+ # Possible values are:
+ # - "PLAYER_LEFT" - The player chose to leave the room..
+ # - "GAME_LEFT" - The game chose to remove the player from the room.
+ # - "REALTIME_ABANDONED" - The player switched to another application and abandoned the room.
+ # - "REALTIME_PEER_CONNECTION_FAILURE" - The client was unable to establish a connection to other peer(s).
+ # - "REALTIME_SERVER_CONNECTION_FAILURE" - The client was unable to communicate with the server.
+ # - "REALTIME_SERVER_ERROR" - The client received an error response when it tried to communicate with the server.
+ # - "REALTIME_TIMEOUT" - The client timed out while waiting for a room.
+ "leaveDiagnostics": { # This is a JSON template for room leave diagnostics. # Diagnostics for a player leaving the room.
+ "kind": "games#roomLeaveDiagnostics", # Uniquely identifies the type of this resource. Value is always the fixed string games#roomLeaveDiagnostics.
+ "peerSession": [ # Diagnostics about all peer sessions.
+ { # This is a JSON template for peer session diagnostics.
+ "unreliableChannel": { # This is a JSON template for peer channel diagnostics. # Unreliable channel diagnostics.
+ "bytesReceived": { # This is a JSON template for aggregate stats. # Number of bytes received.
+ "count": "A String", # The number of messages sent between a pair of peers.
+ "max": "A String", # The maximum amount.
+ "kind": "games#aggregateStats", # Uniquely identifies the type of this resource. Value is always the fixed string games#aggregateStats.
+ "sum": "A String", # The total number of bytes sent for messages between a pair of peers.
+ "min": "A String", # The minimum amount.
+ },
+ "kind": "games#peerChannelDiagnostics", # Uniquely identifies the type of this resource. Value is always the fixed string games#peerChannelDiagnostics.
+ "bytesSent": { # This is a JSON template for aggregate stats. # Number of bytes sent.
+ "count": "A String", # The number of messages sent between a pair of peers.
+ "max": "A String", # The maximum amount.
+ "kind": "games#aggregateStats", # Uniquely identifies the type of this resource. Value is always the fixed string games#aggregateStats.
+ "sum": "A String", # The total number of bytes sent for messages between a pair of peers.
+ "min": "A String", # The minimum amount.
+ },
+ "numSendFailures": 42, # Number of send failures.
+ "numMessagesLost": 42, # Number of messages lost.
+ "numMessagesReceived": 42, # Number of messages received.
+ "numMessagesSent": 42, # Number of messages sent.
+ "roundtripLatencyMillis": { # This is a JSON template for aggregate stats. # Roundtrip latency stats in milliseconds.
+ "count": "A String", # The number of messages sent between a pair of peers.
+ "max": "A String", # The maximum amount.
+ "kind": "games#aggregateStats", # Uniquely identifies the type of this resource. Value is always the fixed string games#aggregateStats.
+ "sum": "A String", # The total number of bytes sent for messages between a pair of peers.
+ "min": "A String", # The minimum amount.
+ },
+ },
+ "kind": "games#peerSessionDiagnostics", # Uniquely identifies the type of this resource. Value is always the fixed string games#peerSessionDiagnostics.
+ "reliableChannel": { # This is a JSON template for peer channel diagnostics. # Reliable channel diagnostics.
+ "bytesReceived": { # This is a JSON template for aggregate stats. # Number of bytes received.
+ "count": "A String", # The number of messages sent between a pair of peers.
+ "max": "A String", # The maximum amount.
+ "kind": "games#aggregateStats", # Uniquely identifies the type of this resource. Value is always the fixed string games#aggregateStats.
+ "sum": "A String", # The total number of bytes sent for messages between a pair of peers.
+ "min": "A String", # The minimum amount.
+ },
+ "kind": "games#peerChannelDiagnostics", # Uniquely identifies the type of this resource. Value is always the fixed string games#peerChannelDiagnostics.
+ "bytesSent": { # This is a JSON template for aggregate stats. # Number of bytes sent.
+ "count": "A String", # The number of messages sent between a pair of peers.
+ "max": "A String", # The maximum amount.
+ "kind": "games#aggregateStats", # Uniquely identifies the type of this resource. Value is always the fixed string games#aggregateStats.
+ "sum": "A String", # The total number of bytes sent for messages between a pair of peers.
+ "min": "A String", # The minimum amount.
+ },
+ "numSendFailures": 42, # Number of send failures.
+ "numMessagesLost": 42, # Number of messages lost.
+ "numMessagesReceived": 42, # Number of messages received.
+ "numMessagesSent": 42, # Number of messages sent.
+ "roundtripLatencyMillis": { # This is a JSON template for aggregate stats. # Roundtrip latency stats in milliseconds.
+ "count": "A String", # The number of messages sent between a pair of peers.
+ "max": "A String", # The maximum amount.
+ "kind": "games#aggregateStats", # Uniquely identifies the type of this resource. Value is always the fixed string games#aggregateStats.
+ "sum": "A String", # The total number of bytes sent for messages between a pair of peers.
+ "min": "A String", # The minimum amount.
+ },
+ },
+ "connectedTimestampMillis": "A String", # Connected time in milliseconds.
+ "participantId": "A String", # The participant ID of the peer.
+ },
+ ],
+ "androidNetworkSubtype": 42, # Android network subtype. http://developer.android.com/reference/android/net/NetworkInfo.html#getSubtype()
+ "socketsUsed": True or False, # Whether or not sockets were used.
+ "androidNetworkType": 42, # Android network type. http://developer.android.com/reference/android/net/NetworkInfo.html#getType()
+ },
+ }
+
+
+Returns:
+ An object of the form:
+
+ { # This is a JSON template for a room resource object.
+ "status": "A String", # The status of the room.
+ # Possible values are:
+ # - "ROOM_INVITING" - One or more players have been invited and not responded.
+ # - "ROOM_AUTO_MATCHING" - One or more slots need to be filled by auto-matching.
+ # - "ROOM_CONNECTING" - Players have joined and are connecting to each other (either before or after auto-matching).
+ # - "ROOM_ACTIVE" - All players have joined and connected to each other.
+ # - "ROOM_DELETED" - The room should no longer be shown on the client. Returned in sync calls when a player joins a room (as a tombstone), or for rooms where all joined participants have left.
+ "kind": "games#room", # Uniquely identifies the type of this resource. Value is always the fixed string games#room.
+ "autoMatchingCriteria": { # This is a JSON template for a room auto-match criteria object. # Criteria for auto-matching players into this room.
+ "kind": "games#roomAutoMatchingCriteria", # Uniquely identifies the type of this resource. Value is always the fixed string games#roomAutoMatchingCriteria.
+ "minAutoMatchingPlayers": 42, # The minimum number of players that should be added to the room by auto-matching.
+ "exclusiveBitmask": "A String", # A bitmask indicating when auto-matches are valid. When ANDed with other exclusive bitmasks, the result must be zero. Can be used to support exclusive roles within a game.
+ "maxAutoMatchingPlayers": 42, # The maximum number of players that should be added to the room by auto-matching.
+ },
+ "creationDetails": { # This is a JSON template for room modification metadata. # Details about the room creation.
+ "kind": "games#roomModification", # Uniquely identifies the type of this resource. Value is always the fixed string games#roomModification.
+ "modifiedTimestampMillis": "A String", # The timestamp at which they modified the room, in milliseconds since the epoch in UTC.
+ "participantId": "A String", # The ID of the participant that modified the room.
+ },
+ "description": "A String", # This short description is generated by our servers and worded relative to the player requesting the room. It is intended to be displayed when the room is shown in a list (that is, an invitation to a room.)
+ "roomId": "A String", # Globally unique ID for a room.
+ "autoMatchingStatus": { # This is a JSON template for status of room automatching that is in progress. # Auto-matching status for this room. Not set if the room is not currently in the automatching status.
+ "kind": "games#roomAutoMatchStatus", # Uniquely identifies the type of this resource. Value is always the fixed string games#roomAutoMatchStatus.
+ "waitEstimateSeconds": 42, # An estimate for the amount of time that automatching is expected to take to complete.
+ },
+ "participants": [ # The participants involved in the room, along with their statuses. Includes participants who have left or declined invitations.
+ { # This is a JSON template for a participant in a room.
+ "status": "A String", # The status of the participant with respect to the room.
+ # Possible values are:
+ # - "PARTICIPANT_INVITED" - The participant has been invited to join the room, but has not yet responded.
+ # - "PARTICIPANT_JOINED" - The participant has joined the room (either after creating it or accepting an invitation.)
+ # - "PARTICIPANT_DECLINED" - The participant declined an invitation to join the room.
+ # - "PARTICIPANT_LEFT" - The participant joined the room and then left it.
+ "kind": "games#roomParticipant", # Uniquely identifies the type of this resource. Value is always the fixed string games#roomParticipant.
+ "autoMatchedPlayer": { # This is a JSON template for an anonymous player # Information about a player that has been auto-matched against the requesting player. (Either player or autoMatchedPlayer will be set.)
+ "kind": "games#anonymousPlayer", # Uniquely identifies the type of this resource. Value is always the fixed string games#anonymousPlayer.
+ "avatarImageUrl": "A String", # The base URL for the image to display for the anonymous player.
+ "displayName": "A String", # The name to display for the anonymous player.
+ },
+ "leaveReason": "A String", # The reason the participant left the room; populated if the participant status is PARTICIPANT_LEFT.
+ # Possible values are:
+ # - "PLAYER_LEFT" - The player explicitly chose to leave the room.
+ # - "GAME_LEFT" - The game chose to remove the player from the room.
+ # - "ABANDONED" - The player switched to another application and abandoned the room.
+ # - "PEER_CONNECTION_FAILURE" - The client was unable to establish or maintain a connection to other peer(s) in the room.
+ # - "SERVER_ERROR" - The client received an error response when it tried to communicate with the server.
+ # - "TIMEOUT" - The client timed out while waiting for players to join and connect.
+ # - "PRESENCE_FAILURE" - The client's XMPP connection ended abruptly.
+ "capabilities": [ # The capabilities which can be used when communicating with this participant.
+ "A String",
+ ],
+ "player": { # This is a JSON template for a Player resource. # Information about the player. Not populated if this player was auto-matched against the requesting player. (Either player or autoMatchedPlayer will be set.)
+ "playerId": "A String", # The ID of the player.
+ "kind": "games#player", # Uniquely identifies the type of this resource. Value is always the fixed string games#player.
+ "avatarImageUrl": "A String", # The base URL for the image that represents the player.
+ "displayName": "A String", # The name to display for the player.
+ },
+ "clientAddress": { # This is a JSON template for the client address when setting up a room. # Client address for the participant.
+ "kind": "games#roomClientAddress", # Uniquely identifies the type of this resource. Value is always the fixed string games#roomClientAddress.
+ "xmppAddress": "A String", # The XMPP address of the client on the Google Games XMPP network.
+ },
+ "connected": True or False, # True if this participant is in the fully connected set of peers in the room.
+ "id": "A String", # An identifier for the participant in the scope of the room. Cannot be used to identify a player across rooms or in other contexts.
+ },
+ ],
+ "roomStatusVersion": 42, # The version of the room status: an increasing counter, used by the client to ignore out-of-order updates to room status.
+ "variant": 42, # The variant / mode of the application being played; can be any integer value, or left blank.
+ "lastUpdateDetails": { # This is a JSON template for room modification metadata. # Details about the last update to the room.
+ "kind": "games#roomModification", # Uniquely identifies the type of this resource. Value is always the fixed string games#roomModification.
+ "modifiedTimestampMillis": "A String", # The timestamp at which they modified the room, in milliseconds since the epoch in UTC.
+ "participantId": "A String", # The ID of the participant that modified the room.
+ },
+ "applicationId": "A String", # The ID of the application being played.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="list">list(pageToken=None, language=None, maxResults=None)</code>
+ <pre>Returns invitations to join rooms.
+
+Args:
+ pageToken: string, The token returned by the previous request.
+ language: string, The preferred language to use for strings returned by this method.
+ maxResults: integer, The maximum number of rooms to return in the response, used for paging. For any response, the actual number of rooms to return may be less than the specified maxResults.
+
+Returns:
+ An object of the form:
+
+ { # This is a JSON template for a list of rooms.
+ "nextPageToken": "A String", # The pagination token for the next page of results.
+ "items": [ # The rooms.
+ { # This is a JSON template for a room resource object.
+ "status": "A String", # The status of the room.
+ # Possible values are:
+ # - "ROOM_INVITING" - One or more players have been invited and not responded.
+ # - "ROOM_AUTO_MATCHING" - One or more slots need to be filled by auto-matching.
+ # - "ROOM_CONNECTING" - Players have joined and are connecting to each other (either before or after auto-matching).
+ # - "ROOM_ACTIVE" - All players have joined and connected to each other.
+ # - "ROOM_DELETED" - The room should no longer be shown on the client. Returned in sync calls when a player joins a room (as a tombstone), or for rooms where all joined participants have left.
+ "kind": "games#room", # Uniquely identifies the type of this resource. Value is always the fixed string games#room.
+ "autoMatchingCriteria": { # This is a JSON template for a room auto-match criteria object. # Criteria for auto-matching players into this room.
+ "kind": "games#roomAutoMatchingCriteria", # Uniquely identifies the type of this resource. Value is always the fixed string games#roomAutoMatchingCriteria.
+ "minAutoMatchingPlayers": 42, # The minimum number of players that should be added to the room by auto-matching.
+ "exclusiveBitmask": "A String", # A bitmask indicating when auto-matches are valid. When ANDed with other exclusive bitmasks, the result must be zero. Can be used to support exclusive roles within a game.
+ "maxAutoMatchingPlayers": 42, # The maximum number of players that should be added to the room by auto-matching.
+ },
+ "creationDetails": { # This is a JSON template for room modification metadata. # Details about the room creation.
+ "kind": "games#roomModification", # Uniquely identifies the type of this resource. Value is always the fixed string games#roomModification.
+ "modifiedTimestampMillis": "A String", # The timestamp at which they modified the room, in milliseconds since the epoch in UTC.
+ "participantId": "A String", # The ID of the participant that modified the room.
+ },
+ "description": "A String", # This short description is generated by our servers and worded relative to the player requesting the room. It is intended to be displayed when the room is shown in a list (that is, an invitation to a room.)
+ "roomId": "A String", # Globally unique ID for a room.
+ "autoMatchingStatus": { # This is a JSON template for status of room automatching that is in progress. # Auto-matching status for this room. Not set if the room is not currently in the automatching status.
+ "kind": "games#roomAutoMatchStatus", # Uniquely identifies the type of this resource. Value is always the fixed string games#roomAutoMatchStatus.
+ "waitEstimateSeconds": 42, # An estimate for the amount of time that automatching is expected to take to complete.
+ },
+ "participants": [ # The participants involved in the room, along with their statuses. Includes participants who have left or declined invitations.
+ { # This is a JSON template for a participant in a room.
+ "status": "A String", # The status of the participant with respect to the room.
+ # Possible values are:
+ # - "PARTICIPANT_INVITED" - The participant has been invited to join the room, but has not yet responded.
+ # - "PARTICIPANT_JOINED" - The participant has joined the room (either after creating it or accepting an invitation.)
+ # - "PARTICIPANT_DECLINED" - The participant declined an invitation to join the room.
+ # - "PARTICIPANT_LEFT" - The participant joined the room and then left it.
+ "kind": "games#roomParticipant", # Uniquely identifies the type of this resource. Value is always the fixed string games#roomParticipant.
+ "autoMatchedPlayer": { # This is a JSON template for an anonymous player # Information about a player that has been auto-matched against the requesting player. (Either player or autoMatchedPlayer will be set.)
+ "kind": "games#anonymousPlayer", # Uniquely identifies the type of this resource. Value is always the fixed string games#anonymousPlayer.
+ "avatarImageUrl": "A String", # The base URL for the image to display for the anonymous player.
+ "displayName": "A String", # The name to display for the anonymous player.
+ },
+ "leaveReason": "A String", # The reason the participant left the room; populated if the participant status is PARTICIPANT_LEFT.
+ # Possible values are:
+ # - "PLAYER_LEFT" - The player explicitly chose to leave the room.
+ # - "GAME_LEFT" - The game chose to remove the player from the room.
+ # - "ABANDONED" - The player switched to another application and abandoned the room.
+ # - "PEER_CONNECTION_FAILURE" - The client was unable to establish or maintain a connection to other peer(s) in the room.
+ # - "SERVER_ERROR" - The client received an error response when it tried to communicate with the server.
+ # - "TIMEOUT" - The client timed out while waiting for players to join and connect.
+ # - "PRESENCE_FAILURE" - The client's XMPP connection ended abruptly.
+ "capabilities": [ # The capabilities which can be used when communicating with this participant.
+ "A String",
+ ],
+ "player": { # This is a JSON template for a Player resource. # Information about the player. Not populated if this player was auto-matched against the requesting player. (Either player or autoMatchedPlayer will be set.)
+ "playerId": "A String", # The ID of the player.
+ "kind": "games#player", # Uniquely identifies the type of this resource. Value is always the fixed string games#player.
+ "avatarImageUrl": "A String", # The base URL for the image that represents the player.
+ "displayName": "A String", # The name to display for the player.
+ },
+ "clientAddress": { # This is a JSON template for the client address when setting up a room. # Client address for the participant.
+ "kind": "games#roomClientAddress", # Uniquely identifies the type of this resource. Value is always the fixed string games#roomClientAddress.
+ "xmppAddress": "A String", # The XMPP address of the client on the Google Games XMPP network.
+ },
+ "connected": True or False, # True if this participant is in the fully connected set of peers in the room.
+ "id": "A String", # An identifier for the participant in the scope of the room. Cannot be used to identify a player across rooms or in other contexts.
+ },
+ ],
+ "roomStatusVersion": 42, # The version of the room status: an increasing counter, used by the client to ignore out-of-order updates to room status.
+ "variant": 42, # The variant / mode of the application being played; can be any integer value, or left blank.
+ "lastUpdateDetails": { # This is a JSON template for room modification metadata. # Details about the last update to the room.
+ "kind": "games#roomModification", # Uniquely identifies the type of this resource. Value is always the fixed string games#roomModification.
+ "modifiedTimestampMillis": "A String", # The timestamp at which they modified the room, in milliseconds since the epoch in UTC.
+ "participantId": "A String", # The ID of the participant that modified the room.
+ },
+ "applicationId": "A String", # The ID of the application being played.
+ },
+ ],
+ "kind": "games#roomList", # Uniquely identifies the type of this resource. Value is always the fixed string games#roomList.
+ }</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="reportStatus">reportStatus(roomId, body)</code>
+ <pre>Updates sent by a client reporting the status of peers in a room. For internal use by the Games SDK only. Calling this method directly is unsupported.
+
+Args:
+ roomId: string, The ID of the room. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # This is a JSON template for an update on the status of peers in a room.
+ "kind": "games#roomP2PStatuses", # Uniquely identifies the type of this resource. Value is always the fixed string games#roomP2PStatuses.
+ "updates": [ # The updates for the peers.
+ { # This is a JSON template for an update on the status of a peer in a room.
+ "status": "A String", # The status of the peer in the room.
+ # Possible values are:
+ # - "CONNECTION_ESTABLISHED" - The client established a P2P connection with the peer.
+ # - "CONNECTION_FAILED" - The client failed to establish directed presence with the peer.
+ "kind": "games#roomP2PStatus", # Uniquely identifies the type of this resource. Value is always the fixed string games#roomP2PStatus.
+ "participantId": "A String", # The ID of the participant.
+ "unreliableRoundtripLatencyMillis": 42, # The amount of time in milliseconds it took to send packets back and forth on the unreliable channel with this peer.
+ "connectionSetupLatencyMillis": 42, # The amount of time in milliseconds it took to establish connections with this peer.
+ "error": "A String", # The error code in event of a failure.
+ # Possible values are:
+ # - "P2P_FAILED" - The client failed to establish a P2P connection with the peer.
+ # - "PRESENCE_FAILED" - The client failed to register to receive P2P connections.
+ # - "RELAY_SERVER_FAILED" - The client received an error when trying to use the relay server to establish a P2P connection with the peer.
+ "error_reason": "A String", # More detailed diagnostic message returned in event of a failure.
+ },
+ ],
+ }
+
+
+Returns:
+ An object of the form:
+
+ { # This is a JSON template for the status of a room that the player has joined.
+ "status": "A String", # The status of the room.
+ # Possible values are:
+ # - "ROOM_INVITING" - One or more players have been invited and not responded.
+ # - "ROOM_AUTO_MATCHING" - One or more slots need to be filled by auto-matching.
+ # - "ROOM_CONNECTING" - Players have joined are connecting to each other (either before or after auto-matching).
+ # - "ROOM_ACTIVE" - All players have joined and connected to each other.
+ # - "ROOM_DELETED" - All joined players have left.
+ "kind": "games#roomStatus", # Uniquely identifies the type of this resource. Value is always the fixed string games#roomStatus.
+ "autoMatchingStatus": { # This is a JSON template for status of room automatching that is in progress. # Auto-matching status for this room. Not set if the room is not currently in the automatching queue.
+ "kind": "games#roomAutoMatchStatus", # Uniquely identifies the type of this resource. Value is always the fixed string games#roomAutoMatchStatus.
+ "waitEstimateSeconds": 42, # An estimate for the amount of time that automatching is expected to take to complete.
+ },
+ "participants": [ # The participants involved in the room, along with their statuses. Includes participants who have left or declined invitations.
+ { # This is a JSON template for a participant in a room.
+ "status": "A String", # The status of the participant with respect to the room.
+ # Possible values are:
+ # - "PARTICIPANT_INVITED" - The participant has been invited to join the room, but has not yet responded.
+ # - "PARTICIPANT_JOINED" - The participant has joined the room (either after creating it or accepting an invitation.)
+ # - "PARTICIPANT_DECLINED" - The participant declined an invitation to join the room.
+ # - "PARTICIPANT_LEFT" - The participant joined the room and then left it.
+ "kind": "games#roomParticipant", # Uniquely identifies the type of this resource. Value is always the fixed string games#roomParticipant.
+ "autoMatchedPlayer": { # This is a JSON template for an anonymous player # Information about a player that has been auto-matched against the requesting player. (Either player or autoMatchedPlayer will be set.)
+ "kind": "games#anonymousPlayer", # Uniquely identifies the type of this resource. Value is always the fixed string games#anonymousPlayer.
+ "avatarImageUrl": "A String", # The base URL for the image to display for the anonymous player.
+ "displayName": "A String", # The name to display for the anonymous player.
+ },
+ "leaveReason": "A String", # The reason the participant left the room; populated if the participant status is PARTICIPANT_LEFT.
+ # Possible values are:
+ # - "PLAYER_LEFT" - The player explicitly chose to leave the room.
+ # - "GAME_LEFT" - The game chose to remove the player from the room.
+ # - "ABANDONED" - The player switched to another application and abandoned the room.
+ # - "PEER_CONNECTION_FAILURE" - The client was unable to establish or maintain a connection to other peer(s) in the room.
+ # - "SERVER_ERROR" - The client received an error response when it tried to communicate with the server.
+ # - "TIMEOUT" - The client timed out while waiting for players to join and connect.
+ # - "PRESENCE_FAILURE" - The client's XMPP connection ended abruptly.
+ "capabilities": [ # The capabilities which can be used when communicating with this participant.
+ "A String",
+ ],
+ "player": { # This is a JSON template for a Player resource. # Information about the player. Not populated if this player was auto-matched against the requesting player. (Either player or autoMatchedPlayer will be set.)
+ "playerId": "A String", # The ID of the player.
+ "kind": "games#player", # Uniquely identifies the type of this resource. Value is always the fixed string games#player.
+ "avatarImageUrl": "A String", # The base URL for the image that represents the player.
+ "displayName": "A String", # The name to display for the player.
+ },
+ "clientAddress": { # This is a JSON template for the client address when setting up a room. # Client address for the participant.
+ "kind": "games#roomClientAddress", # Uniquely identifies the type of this resource. Value is always the fixed string games#roomClientAddress.
+ "xmppAddress": "A String", # The XMPP address of the client on the Google Games XMPP network.
+ },
+ "connected": True or False, # True if this participant is in the fully connected set of peers in the room.
+ "id": "A String", # An identifier for the participant in the scope of the room. Cannot be used to identify a player across rooms or in other contexts.
+ },
+ ],
+ "statusVersion": 42, # The version of the status for the room: an increasing counter, used by the client to ignore out-of-order updates to room status.
+ "roomId": "A String", # Globally unique ID for a room.
+ }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/games_v1.scores.html b/docs/dyn/games_v1.scores.html
new file mode 100644
index 0000000..702ab36
--- /dev/null
+++ b/docs/dyn/games_v1.scores.html
@@ -0,0 +1,438 @@
+<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="games_v1.html">Google Play Game Services API</a> . <a href="games_v1.scores.html">scores</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#get">get(playerId, leaderboardId, timeSpan, includeRankType=None, language=None, maxResults=None, pageToken=None)</a></code></p>
+<p class="firstline">Get high scores and optionally, ranks in leaderboards for the currently authenticated player. For a specific time span, leaderboardId can be set to ALL to retrieve data for all leaderboards in a given time span.</p>
+<p class="toc_element">
+ <code><a href="#get_next">get_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="#list">list(leaderboardId, collection, timeSpan, language=None, maxResults=None, pageToken=None)</a></code></p>
+<p class="firstline">Lists the scores in a leaderboard, starting from the top.</p>
+<p class="toc_element">
+ <code><a href="#listWindow">listWindow(leaderboardId, collection, timeSpan, language=None, returnTopIfAbsent=None, resultsAbove=None, maxResults=None, pageToken=None)</a></code></p>
+<p class="firstline">Lists the scores in a leaderboard around (and including) a player's score.</p>
+<p class="toc_element">
+ <code><a href="#listWindow_next">listWindow_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="#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="#submit">submit(leaderboardId, score, language=None)</a></code></p>
+<p class="firstline">Submits a score to the specified leaderboard.</p>
+<p class="toc_element">
+ <code><a href="#submitMultiple">submitMultiple(body, language=None)</a></code></p>
+<p class="firstline">Submits multiple scores to leaderboards.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="get">get(playerId, leaderboardId, timeSpan, includeRankType=None, language=None, maxResults=None, pageToken=None)</code>
+ <pre>Get high scores and optionally, ranks in leaderboards for the currently authenticated player. For a specific time span, leaderboardId can be set to ALL to retrieve data for all leaderboards in a given time span.
+
+Args:
+ playerId: string, A player ID. A value of me may be used in place of the authenticated player's ID. (required)
+ leaderboardId: string, The ID of the leaderboard. (required)
+ timeSpan: string, The time span for the scores and ranks you're requesting. (required)
+ Allowed values
+ ALL - Get the high scores for all time spans. If this is used, maxResults values will be ignored.
+ ALL_TIME - Get the all time high score.
+ DAILY - List the top scores for the current day.
+ WEEKLY - List the top scores for the current week.
+ includeRankType: string, The types of ranks to return. If the parameter is omitted, no ranks will be returned.
+ Allowed values
+ ALL - Retrieve public and social ranks.
+ PUBLIC - Retrieve public ranks, if the player is sharing their gameplay activity publicly.
+ SOCIAL - Retrieve the social rank.
+ language: string, The preferred language to use for strings returned by this method.
+ maxResults: integer, The maximum number of leaderboard scores to return in the response. For any response, the actual number of leaderboard scores returned may be less than the specified maxResults.
+ pageToken: string, The token returned by the previous request.
+
+Returns:
+ An object of the form:
+
+ { # This is a JSON template for a list of player leaderboard scores.
+ "nextPageToken": "A String", # The pagination token for the next page of results.
+ "items": [ # The leaderboard scores.
+ { # This is a JSON template for a player leaderboard score object.
+ "writeTimestamp": "A String", # The timestamp at which this score was recorded, in milliseconds since the epoch in UTC.
+ "kind": "games#playerLeaderboardScore", # Uniquely identifies the type of this resource. Value is always the fixed string games#playerLeaderboardScore.
+ "publicRank": { # This is a JSON template for a score rank in a leaderboard. # The public rank of the score in this leaderboard. This object will not be present if the user is not sharing their scores publicly.
+ "numScores": "A String", # The number of scores in the leaderboard.
+ "kind": "games#leaderboardScoreRank", # Uniquely identifies the type of this resource. Value is always the fixed string games#leaderboardScoreRank.
+ "formattedRank": "A String", # The rank in the leaderboard as a string.
+ "rank": "A String", # The rank in the leaderboard.
+ "formattedNumScores": "A String", # The number of scores in the leaderboard as a string.
+ },
+ "timeSpan": "A String", # The time span of this score.
+ # Possible values are:
+ # - "ALL_TIME" - The score is an all-time score.
+ # - "WEEKLY" - The score is a weekly score.
+ # - "DAILY" - The score is a daily score.
+ "scoreString": "A String", # The formatted value of this score.
+ "leaderboard_id": "A String", # The ID of the leaderboard this score is in.
+ "scoreValue": "A String", # The numerical value of this score.
+ "socialRank": { # This is a JSON template for a score rank in a leaderboard. # The social rank of the score in this leaderboard.
+ "numScores": "A String", # The number of scores in the leaderboard.
+ "kind": "games#leaderboardScoreRank", # Uniquely identifies the type of this resource. Value is always the fixed string games#leaderboardScoreRank.
+ "formattedRank": "A String", # The rank in the leaderboard as a string.
+ "rank": "A String", # The rank in the leaderboard.
+ "formattedNumScores": "A String", # The number of scores in the leaderboard as a string.
+ },
+ },
+ ],
+ "kind": "games#playerLeaderboardScoreListResponse", # Uniquely identifies the type of this resource. Value is always the fixed string games#playerLeaderboardScoreListResponse.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="get_next">get_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="list">list(leaderboardId, collection, timeSpan, language=None, maxResults=None, pageToken=None)</code>
+ <pre>Lists the scores in a leaderboard, starting from the top.
+
+Args:
+ leaderboardId: string, The ID of the leaderboard. (required)
+ collection: string, The collection of scores you're requesting. (required)
+ Allowed values
+ PUBLIC - List all scores in the public leaderboard.
+ SOCIAL - List only social scores.
+ timeSpan: string, The time span for the scores and ranks you're requesting. (required)
+ Allowed values
+ ALL_TIME - List the all-time top scores.
+ DAILY - List the top scores for the current day.
+ WEEKLY - List the top scores for the current week.
+ language: string, The preferred language to use for strings returned by this method.
+ maxResults: integer, The maximum number of leaderboard scores to return in the response. For any response, the actual number of leaderboard scores returned may be less than the specified maxResults.
+ pageToken: string, The token returned by the previous request.
+
+Returns:
+ An object of the form:
+
+ { # This is a JSON template for a ListScores response.
+ "nextPageToken": "A String", # The pagination token for the next page of results.
+ "kind": "games#leaderboardScores", # Uniquely identifies the type of this resource. Value is always the fixed string games#leaderboardScores.
+ "numScores": "A String", # The total number of scores in the leaderboard.
+ "items": [ # The scores in the leaderboard.
+ { # This is a JSON template for the Leaderboard Entry resource.
+ "kind": "games#leaderboardEntry", # Uniquely identifies the type of this resource. Value is always the fixed string games#leaderboardEntry.
+ "scoreValue": "A String", # The numerical value of this score.
+ "timeSpan": "A String", # The time span of this high score.
+ # Possible values are:
+ # - "ALL_TIME" - The score is an all-time high score.
+ # - "WEEKLY" - The score is a weekly high score.
+ # - "DAILY" - The score is a daily high score.
+ "formattedScore": "A String", # The localized string for the numerical value of this score.
+ "player": { # This is a JSON template for a Player resource. # The player who holds this score.
+ "playerId": "A String", # The ID of the player.
+ "kind": "games#player", # Uniquely identifies the type of this resource. Value is always the fixed string games#player.
+ "avatarImageUrl": "A String", # The base URL for the image that represents the player.
+ "displayName": "A String", # The name to display for the player.
+ },
+ "formattedScoreRank": "A String", # The localized string for the rank of this score for this leaderboard.
+ "scoreRank": "A String", # The rank of this score for this leaderboard.
+ "writeTimestampMillis": "A String", # The timestamp at which this score was recorded, in milliseconds since the epoch in UTC.
+ },
+ ],
+ "playerScore": { # This is a JSON template for the Leaderboard Entry resource. # The score of the requesting player on the leaderboard. The player's score may appear both here and in the list of scores above. If you are viewing a public leaderboard and the player is not sharing their gameplay information publicly, the scoreRank and formattedScoreRank values will not be present.
+ "kind": "games#leaderboardEntry", # Uniquely identifies the type of this resource. Value is always the fixed string games#leaderboardEntry.
+ "scoreValue": "A String", # The numerical value of this score.
+ "timeSpan": "A String", # The time span of this high score.
+ # Possible values are:
+ # - "ALL_TIME" - The score is an all-time high score.
+ # - "WEEKLY" - The score is a weekly high score.
+ # - "DAILY" - The score is a daily high score.
+ "formattedScore": "A String", # The localized string for the numerical value of this score.
+ "player": { # This is a JSON template for a Player resource. # The player who holds this score.
+ "playerId": "A String", # The ID of the player.
+ "kind": "games#player", # Uniquely identifies the type of this resource. Value is always the fixed string games#player.
+ "avatarImageUrl": "A String", # The base URL for the image that represents the player.
+ "displayName": "A String", # The name to display for the player.
+ },
+ "formattedScoreRank": "A String", # The localized string for the rank of this score for this leaderboard.
+ "scoreRank": "A String", # The rank of this score for this leaderboard.
+ "writeTimestampMillis": "A String", # The timestamp at which this score was recorded, in milliseconds since the epoch in UTC.
+ },
+ "prevPageToken": "A String", # The pagination token for the previous page of results.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="listWindow">listWindow(leaderboardId, collection, timeSpan, language=None, returnTopIfAbsent=None, resultsAbove=None, maxResults=None, pageToken=None)</code>
+ <pre>Lists the scores in a leaderboard around (and including) a player's score.
+
+Args:
+ leaderboardId: string, The ID of the leaderboard. (required)
+ collection: string, The collection of scores you're requesting. (required)
+ Allowed values
+ PUBLIC - List all scores in the public leaderboard.
+ SOCIAL - List only social scores.
+ timeSpan: string, The time span for the scores and ranks you're requesting. (required)
+ Allowed values
+ ALL_TIME - List the all-time top scores.
+ DAILY - List the top scores for the current day.
+ WEEKLY - List the top scores for the current week.
+ language: string, The preferred language to use for strings returned by this method.
+ returnTopIfAbsent: boolean, True if the top scores should be returned when the player is not in the leaderboard. Defaults to true.
+ resultsAbove: integer, The preferred number of scores to return above the player's score. More scores may be returned if the player is at the bottom of the leaderboard; fewer may be returned if the player is at the top. Must be less than or equal to maxResults.
+ maxResults: integer, The maximum number of leaderboard scores to return in the response. For any response, the actual number of leaderboard scores returned may be less than the specified maxResults.
+ pageToken: string, The token returned by the previous request.
+
+Returns:
+ An object of the form:
+
+ { # This is a JSON template for a ListScores response.
+ "nextPageToken": "A String", # The pagination token for the next page of results.
+ "kind": "games#leaderboardScores", # Uniquely identifies the type of this resource. Value is always the fixed string games#leaderboardScores.
+ "numScores": "A String", # The total number of scores in the leaderboard.
+ "items": [ # The scores in the leaderboard.
+ { # This is a JSON template for the Leaderboard Entry resource.
+ "kind": "games#leaderboardEntry", # Uniquely identifies the type of this resource. Value is always the fixed string games#leaderboardEntry.
+ "scoreValue": "A String", # The numerical value of this score.
+ "timeSpan": "A String", # The time span of this high score.
+ # Possible values are:
+ # - "ALL_TIME" - The score is an all-time high score.
+ # - "WEEKLY" - The score is a weekly high score.
+ # - "DAILY" - The score is a daily high score.
+ "formattedScore": "A String", # The localized string for the numerical value of this score.
+ "player": { # This is a JSON template for a Player resource. # The player who holds this score.
+ "playerId": "A String", # The ID of the player.
+ "kind": "games#player", # Uniquely identifies the type of this resource. Value is always the fixed string games#player.
+ "avatarImageUrl": "A String", # The base URL for the image that represents the player.
+ "displayName": "A String", # The name to display for the player.
+ },
+ "formattedScoreRank": "A String", # The localized string for the rank of this score for this leaderboard.
+ "scoreRank": "A String", # The rank of this score for this leaderboard.
+ "writeTimestampMillis": "A String", # The timestamp at which this score was recorded, in milliseconds since the epoch in UTC.
+ },
+ ],
+ "playerScore": { # This is a JSON template for the Leaderboard Entry resource. # The score of the requesting player on the leaderboard. The player's score may appear both here and in the list of scores above. If you are viewing a public leaderboard and the player is not sharing their gameplay information publicly, the scoreRank and formattedScoreRank values will not be present.
+ "kind": "games#leaderboardEntry", # Uniquely identifies the type of this resource. Value is always the fixed string games#leaderboardEntry.
+ "scoreValue": "A String", # The numerical value of this score.
+ "timeSpan": "A String", # The time span of this high score.
+ # Possible values are:
+ # - "ALL_TIME" - The score is an all-time high score.
+ # - "WEEKLY" - The score is a weekly high score.
+ # - "DAILY" - The score is a daily high score.
+ "formattedScore": "A String", # The localized string for the numerical value of this score.
+ "player": { # This is a JSON template for a Player resource. # The player who holds this score.
+ "playerId": "A String", # The ID of the player.
+ "kind": "games#player", # Uniquely identifies the type of this resource. Value is always the fixed string games#player.
+ "avatarImageUrl": "A String", # The base URL for the image that represents the player.
+ "displayName": "A String", # The name to display for the player.
+ },
+ "formattedScoreRank": "A String", # The localized string for the rank of this score for this leaderboard.
+ "scoreRank": "A String", # The rank of this score for this leaderboard.
+ "writeTimestampMillis": "A String", # The timestamp at which this score was recorded, in milliseconds since the epoch in UTC.
+ },
+ "prevPageToken": "A String", # The pagination token for the previous page of results.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="listWindow_next">listWindow_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="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="submit">submit(leaderboardId, score, language=None)</code>
+ <pre>Submits a score to the specified leaderboard.
+
+Args:
+ leaderboardId: string, The ID of the leaderboard. (required)
+ score: string, The score you're submitting. The submitted score is ignored if it is worse than a previously submitted score, where worse depends on the leaderboard sort order. The meaning of the score value depends on the leaderboard format type. For fixed-point, the score represents the raw value. For time, the score represents elapsed time in milliseconds. For currency, the score represents a value in micro units. (required)
+ language: string, The preferred language to use for strings returned by this method.
+
+Returns:
+ An object of the form:
+
+ { # This is a JSON template for a list of leaderboard entry resources.
+ "kind": "games#playerScoreResponse", # Uniquely identifies the type of this resource. Value is always the fixed string games#playerScoreResponse.
+ "leaderboardId": "A String", # The leaderboard ID that this score was submitted to.
+ "formattedScore": "A String", # The formatted value of the submitted score.
+ "beatenScoreTimeSpans": [ # The time spans where the submitted score is better than the existing score for that time span.
+ # Possible values are:
+ # - "ALL_TIME" - The score is an all-time score.
+ # - "WEEKLY" - The score is a weekly score.
+ # - "DAILY" - The score is a daily score.
+ "A String",
+ ],
+ "unbeatenScores": [ # The scores in time spans that have not been beaten. As an example, the submitted score may be better than the player's DAILY score, but not better than the player's scores for the WEEKLY or ALL_TIME time spans.
+ { # This is a JSON template for a player score.
+ "kind": "games#playerScore", # Uniquely identifies the type of this resource. Value is always the fixed string games#playerScore.
+ "score": "A String", # The numerical value for this player score.
+ "formattedScore": "A String", # The formatted score for this player score.
+ "timeSpan": "A String", # The time span for this player score.
+ # Possible values are:
+ # - "ALL_TIME" - The score is an all-time score.
+ # - "WEEKLY" - The score is a weekly score.
+ # - "DAILY" - The score is a daily score.
+ },
+ ],
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="submitMultiple">submitMultiple(body, language=None)</code>
+ <pre>Submits multiple scores to leaderboards.
+
+Args:
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # This is a JSON template for a list of score submission requests
+ "kind": "games#playerScoreSubmissionList", # Uniquely identifies the type of this resource. Value is always the fixed string games#playerScoreSubmissionList.
+ "scores": [ # The score submissions.
+ { # This is a JSON template for a request to submit a score to leaderboards.
+ "kind": "games#scoreSubmission", # Uniquely identifies the type of this resource. Value is always the fixed string games#scoreSubmission.
+ "leaderboardId": "A String", # The leaderboard this score is being submitted to.
+ "score": "A String", # The new score being submitted.
+ },
+ ],
+ }
+
+ language: string, The preferred language to use for strings returned by this method.
+
+Returns:
+ An object of the form:
+
+ { # This is a JSON template for a list of score submission statuses.
+ "submittedScores": [ # The score submissions statuses.
+ { # This is a JSON template for a list of leaderboard entry resources.
+ "kind": "games#playerScoreResponse", # Uniquely identifies the type of this resource. Value is always the fixed string games#playerScoreResponse.
+ "leaderboardId": "A String", # The leaderboard ID that this score was submitted to.
+ "formattedScore": "A String", # The formatted value of the submitted score.
+ "beatenScoreTimeSpans": [ # The time spans where the submitted score is better than the existing score for that time span.
+ # Possible values are:
+ # - "ALL_TIME" - The score is an all-time score.
+ # - "WEEKLY" - The score is a weekly score.
+ # - "DAILY" - The score is a daily score.
+ "A String",
+ ],
+ "unbeatenScores": [ # The scores in time spans that have not been beaten. As an example, the submitted score may be better than the player's DAILY score, but not better than the player's scores for the WEEKLY or ALL_TIME time spans.
+ { # This is a JSON template for a player score.
+ "kind": "games#playerScore", # Uniquely identifies the type of this resource. Value is always the fixed string games#playerScore.
+ "score": "A String", # The numerical value for this player score.
+ "formattedScore": "A String", # The formatted score for this player score.
+ "timeSpan": "A String", # The time span for this player score.
+ # Possible values are:
+ # - "ALL_TIME" - The score is an all-time score.
+ # - "WEEKLY" - The score is a weekly score.
+ # - "DAILY" - The score is a daily score.
+ },
+ ],
+ },
+ ],
+ "kind": "games#playerScoreListResponse", # Uniquely identifies the type of this resource. Value is always the fixed string games#playerScoreListResponse.
+ }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/identitytoolkit_v3.html b/docs/dyn/identitytoolkit_v3.html
new file mode 100644
index 0000000..5922397
--- /dev/null
+++ b/docs/dyn/identitytoolkit_v3.html
@@ -0,0 +1,82 @@
+<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="identitytoolkit_v3.html">Google Identity Toolkit API</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="identitytoolkit_v3.relyingparty.html">relyingparty()</a></code>
+</p>
+<p class="firstline">Returns the relyingparty Resource.</p>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/identitytoolkit_v3.relyingparty.html b/docs/dyn/identitytoolkit_v3.relyingparty.html
new file mode 100644
index 0000000..45f8db6
--- /dev/null
+++ b/docs/dyn/identitytoolkit_v3.relyingparty.html
@@ -0,0 +1,412 @@
+<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="identitytoolkit_v3.html">Google Identity Toolkit API</a> . <a href="identitytoolkit_v3.relyingparty.html">relyingparty</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#createAuthUri">createAuthUri(body)</a></code></p>
+<p class="firstline">Creates the URI used by the IdP to authenticate the user.</p>
+<p class="toc_element">
+ <code><a href="#deleteAccount">deleteAccount(body)</a></code></p>
+<p class="firstline">Delete user account.</p>
+<p class="toc_element">
+ <code><a href="#getAccountInfo">getAccountInfo(body)</a></code></p>
+<p class="firstline">Returns the account info.</p>
+<p class="toc_element">
+ <code><a href="#getOobConfirmationCode">getOobConfirmationCode(body)</a></code></p>
+<p class="firstline">Get a code for user action confirmation.</p>
+<p class="toc_element">
+ <code><a href="#resetPassword">resetPassword(body)</a></code></p>
+<p class="firstline">Set account info for a user.</p>
+<p class="toc_element">
+ <code><a href="#setAccountInfo">setAccountInfo(body)</a></code></p>
+<p class="firstline">Set account info for a user.</p>
+<p class="toc_element">
+ <code><a href="#uploadAccount">uploadAccount(body)</a></code></p>
+<p class="firstline">Batch upload existing user accounts.</p>
+<p class="toc_element">
+ <code><a href="#verifyAssertion">verifyAssertion(body)</a></code></p>
+<p class="firstline">Verifies the assertion returned by the IdP.</p>
+<p class="toc_element">
+ <code><a href="#verifyPassword">verifyPassword(body)</a></code></p>
+<p class="firstline">Verifies the user entered password.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="createAuthUri">createAuthUri(body)</code>
+ <pre>Creates the URI used by the IdP to authenticate the user.
+
+Args:
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # Request to get the IDP authentication URL.
+ "openidRealm": "A String", # Optional realm for OpenID protocol. The sub string "scheme://domain:port" of the param "continueUri" is used if this is not set.
+ "clientId": "A String", # The relying party OAuth client ID.
+ "providerId": "A String", # The IdP ID. For white listed IdPs it's a short domain name e.g. google.com, aol.com, live.net and yahoo.com. For other OpenID IdPs it's the OP identifier.
+ "context": "A String", # The opaque value used by the client to maintain context info between the authentication request and the IDP callback.
+ "continueUri": "A String", # The URI to which the IDP redirects the user after the federated login flow.
+ "identifier": "A String", # The email or federated ID of the user.
+ }
+
+
+Returns:
+ An object of the form:
+
+ { # Response of creating the IDP authentication URL.
+ "kind": "identitytoolkit#CreateAuthUriResponse", # The fixed string identitytoolkit#CreateAuthUriResponse".
+ "providers": [ # Existing IDP's for the user.
+ "A String",
+ ],
+ "registered": True or False, # Whether the user is registered if the identifier is an email.
+ "authUri": "A String", # The URI used by the IDP to authenticate the user.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="deleteAccount">deleteAccount(body)</code>
+ <pre>Delete user account.
+
+Args:
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # Request to delete account.
+ "localId": "A String", # The local ID of the user.
+ }
+
+
+Returns:
+ An object of the form:
+
+ { # Respone of deleting account.
+ "kind": "identitytoolkit#DeleteAccountResponse", # The fixed string "identitytoolkit#DeleteAccountResponse".
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="getAccountInfo">getAccountInfo(body)</code>
+ <pre>Returns the account info.
+
+Args:
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # Request to get the account information.
+ "idToken": "A String", # The GITKit token of the authenticated user.
+ "email": [ # The list of emails of the users to inquiry.
+ "A String",
+ ],
+ "localId": [ # The list of local ID's of the users to inquiry.
+ "A String",
+ ],
+ }
+
+
+Returns:
+ An object of the form:
+
+ { # Response of getting account information.
+ "kind": "identitytoolkit#GetAccountInfoResponse", # The fixed string "identitytoolkit#GetAccountInfoResponse".
+ "users": [ # The info of the users.
+ {
+ "displayName": "A String", # The name of the user.
+ "localId": "A String", # The local ID of the user.
+ "language": "A String", # The language of the user.
+ "photoUrl": "A String", # The URL of the user profile photo.
+ "dateOfBirth": "A String", # The user's date of birth.
+ "version": 42, # Version of the user's password.
+ "providerUserInfo": [ # The IDP of the user.
+ {
+ "providerId": "A String", # The IdP ID. For white listed IdPs it's a short domain name, e.g., google.com, aol.com, live.net and yahoo.com. For other OpenID IdPs it's the OP identifier.
+ "displayName": "A String", # The user's display name at the IDP.
+ "photoUrl": "A String", # The user's photo url at the IDP.
+ },
+ ],
+ "timeZone": "A String", # The time zone of the user.
+ "passwordUpdatedAt": "A String", # The timestamp when the password was last updated.
+ "password": "A String", # The user's hashed password.
+ "salt": "A String", # The user's password salt.
+ "email": "A String", # The email returned by the IdP. NOTE: The federated login user may not own the email.
+ },
+ ],
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="getOobConfirmationCode">getOobConfirmationCode(body)</code>
+ <pre>Get a code for user action confirmation.
+
+Args:
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # Request of getting a code for user confirmation (reset password, change email etc.)
+ "kind": "identitytoolkit#relyingparty", # The fixed string "identitytoolkit#relyingparty".
+ "requestType": "A String", # The request type.
+ "idToken": "A String", # The user's Gitkit login token for email change.
+ "challenge": "A String", # The recaptcha challenge presented to the user.
+ "newEmail": "A String", # The new email if the code is for email change.
+ "userIp": "A String", # The IP address of the user.
+ "email": "A String", # The email of the user.
+ "captchaResp": "A String", # The recaptcha response from the user.
+ }
+
+
+Returns:
+ An object of the form:
+
+ { # Response of getting a code for user confirmation (reset password, change email etc.).
+ "kind": "identitytoolkit#GetOobConfirmationCodeResponse", # The fixed string "identitytoolkit#GetOobConfirmationCodeResponse".
+ "oobCode": "A String", # The code to be send to the user.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="resetPassword">resetPassword(body)</code>
+ <pre>Set account info for a user.
+
+Args:
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # Request to reset the password.
+ "newPassword": "A String", # The new password inputted by the user.
+ "oldPassword": "A String", # The old password inputted by the user.
+ "oobCode": "A String", # The confirmation code.
+ "email": "A String", # The email address of the user.
+ }
+
+
+Returns:
+ An object of the form:
+
+ { # Response of resetting the password.
+ "kind": "identitytoolkit#ResetPasswordResponse", # The fixed string "identitytoolkit#ResetPasswordResponse".
+ "email": "A String", # The user's email.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="setAccountInfo">setAccountInfo(body)</code>
+ <pre>Set account info for a user.
+
+Args:
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # Request to set the account information.
+ "oobCode": "A String", # The out-of-band code of the change email request.
+ "localId": "A String", # The local ID of the user.
+ "upgradeToFederatedLogin": True or False, # Mark the user to upgrade to federated login.
+ "emailVerified": True or False, # Mark the email as verified or not.
+ "provider": [ # The associated IDPs of the user.
+ "A String",
+ ],
+ "idToken": "A String", # The GITKit token of the authenticated user.
+ "displayName": "A String", # The name of the user.
+ "password": "A String", # The new password of the user.
+ "email": "A String", # The email of the user.
+ }
+
+
+Returns:
+ An object of the form:
+
+ { # Respone of setting the account information.
+ "kind": "identitytoolkit#SetAccountInfoResponse", # The fixed string "identitytoolkit#SetAccountInfoResponse".
+ "displayName": "A String", # The name of the user.
+ "email": "A String", # The email of the user.
+ "provider": [ # The associated IDPs of the user.
+ "A String",
+ ],
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="uploadAccount">uploadAccount(body)</code>
+ <pre>Batch upload existing user accounts.
+
+Args:
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # Request to upload user account in batch.
+ "hashAlgorithm": "A String",
+ "signerKey": "A String",
+ "memoryCost": 42,
+ "saltSeparator": "A String",
+ "userAccount": [ # The account info to be stored.
+ { # Template for an individual account info.
+ "kind": "identitytoolkit#userinfo", # Identifies this object as a user info.
+ "password": "A String", # password
+ "salt": "A String", # salt
+ "email": "A String", # email
+ "localId": "A String", # user's id at the site
+ },
+ ],
+ "rounds": 42,
+ }
+
+
+Returns:
+ An object of the form:
+
+ { # Respone of uploading accounts in batch.
+ "kind": "identitytoolkit#UploadAccountResponse", # The fixed string "identitytoolkit#UploadAccountResponse".
+ "error": [ # The error encountered while processing the account info.
+ {
+ "index": 42, # The index of the malformed account, starting from 0.
+ "message": "A String", # Detailed error message for the account info.
+ },
+ ],
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="verifyAssertion">verifyAssertion(body)</code>
+ <pre>Verifies the assertion returned by the IdP.
+
+Args:
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # Request to verify the IDP assertion.
+ "requestUri": "A String", # The URI to which the IDP redirects the user back. It may contain federated login result params added by the IDP.
+ "postBody": "A String", # The post body if the request is a HTTP POST.
+ "pendingIdToken": "A String", # The GITKit token for the non-trusted IDP pending to be confirmed by the user.
+ }
+
+
+Returns:
+ An object of the form:
+
+ { # Response of verifying the IDP assertion.
+ "federatedId": "A String", # The unique ID identifies the IdP account.
+ "localId": "A String", # The RP local ID if it's already been mapped to the IdP account identified by the federated ID.
+ "photoUrl": "A String", # The URI of the public accessible profiel picture.
+ "inputEmail": "A String", # It's the identifier param in the createAuthUri request if the identifier is an email. It can be used to check whether the user input email is different from the asserted email.
+ "verifiedProvider": [ # When action is 'map', contains the idps which can be used for confirmation.
+ "A String",
+ ],
+ "originalEmail": "A String", # The original email stored in the mapping storage. It's returned when the federated ID is associated to a different email.
+ "dateOfBirth": "A String", # The birth date of the IdP account.
+ "nickName": "A String", # The nick name of the user.
+ "email": "A String", # The email returned by the IdP. NOTE: The federated login user may not own the email.
+ "idToken": "A String", # The ID token.
+ "fullName": "A String", # The full name of the user.
+ "kind": "identitytoolkit#VerifyAssertionResponse", # The fixed string "identitytoolkit#VerifyAssertionResponse".
+ "displayName": "A String", # The display name of the user.
+ "firstName": "A String", # The first name of the user.
+ "language": "A String", # The language preference of the user.
+ "emailVerified": True or False, # The value is true if the IDP is also the email provider. It means the user owns the email.
+ "oauthScope": "A String", # The scope for the OpenID OAuth extension.
+ "oauthRequestToken": "A String", # The user approved request token for the OpenID OAuth extension.
+ "providerId": "A String", # The IdP ID. For white listed IdPs it's a short domain name e.g. google.com, aol.com, live.net and yahoo.com. If the "providerId" param is set to OpenID OP identifer other than the whilte listed IdPs the OP identifier is returned. If the "identifier" param is federated ID in the createAuthUri request. The domain part of the federated ID is returned.
+ "context": "A String", # The opaque value used by the client to maintain context info between the authentication request and the IDP callback.
+ "lastName": "A String", # The last name of the user.
+ "action": "A String", # The action code.
+ "timeZone": "A String", # The timezone of the user.
+ "emailRecycled": True or False, # It's true if the email is recycled.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="verifyPassword">verifyPassword(body)</code>
+ <pre>Verifies the user entered password.
+
+Args:
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # Request to verify the password.
+ "password": "A String", # The password inputed by the user.
+ "email": "A String", # The email of the user.
+ "pendingIdToken": "A String", # The GITKit token for the non-trusted IDP, which is to be confirmed by the user.
+ }
+
+
+Returns:
+ An object of the form:
+
+ { # Request of verifying the password.
+ "kind": "identitytoolkit#VerifyPasswordResponse", # The fixed string "identitytoolkit#VerifyPasswordResponse".
+ "displayName": "A String", # The name of the user.
+ "localId": "A String", # The RP local ID if it's already been mapped to the IdP account identified by the federated ID.
+ "idToken": "A String", # The GITKit token for authenticated user.
+ "registered": True or False, # Whether the email is registered.
+ "email": "A String", # The email returned by the IdP. NOTE: The federated login user may not own the email.
+ }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/mirror_v1.contacts.html b/docs/dyn/mirror_v1.contacts.html
new file mode 100644
index 0000000..dc73645
--- /dev/null
+++ b/docs/dyn/mirror_v1.contacts.html
@@ -0,0 +1,316 @@
+<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="mirror_v1.html">Google Mirror API</a> . <a href="mirror_v1.contacts.html">contacts</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#delete">delete(id)</a></code></p>
+<p class="firstline">Deletes a contact.</p>
+<p class="toc_element">
+ <code><a href="#get">get(id)</a></code></p>
+<p class="firstline">Gets a single contact by ID.</p>
+<p class="toc_element">
+ <code><a href="#insert">insert(body)</a></code></p>
+<p class="firstline">Inserts a new contact.</p>
+<p class="toc_element">
+ <code><a href="#list">list()</a></code></p>
+<p class="firstline">Retrieves a list of contacts for the authenticated user.</p>
+<p class="toc_element">
+ <code><a href="#patch">patch(id, body)</a></code></p>
+<p class="firstline">Updates a contact in place. This method supports patch semantics.</p>
+<p class="toc_element">
+ <code><a href="#update">update(id, body)</a></code></p>
+<p class="firstline">Updates a contact in place.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="delete">delete(id)</code>
+ <pre>Deletes a contact.
+
+Args:
+ id: string, The ID of the contact. (required)
+</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="get">get(id)</code>
+ <pre>Gets a single contact by ID.
+
+Args:
+ id: string, The ID of the contact. (required)
+
+Returns:
+ An object of the form:
+
+ { # A person or group that can be used as a creator or a contact.
+ "kind": "mirror#contact", # The type of resource. This is always mirror#contact.
+ "displayName": "A String", # The name to display for this contact.
+ "acceptTypes": [ # A list of MIME types that a contact supports. The contact will be shown to the user if any of its acceptTypes matches any of the types of the attachments on the item. If no acceptTypes are given, the contact will be shown for all items.
+ "A String",
+ ],
+ "type": "A String", # The type for this contact. This is used for sorting in UIs. Allowed values are:
+ # - INDIVIDUAL - Represents a single person. This is the default.
+ # - GROUP - Represents more than a single person.
+ "priority": 42, # Priority for the contact to determine ordering in a list of contacts. Contacts with higher priorities will be shown before ones with lower priorities.
+ "source": "A String", # The ID of the application that created this contact. This is populated by the API
+ "phoneNumber": "A String", # Primary phone number for the contact. This can be a fully-qualified number, with country calling code and area code, or a local number.
+ "imageUrls": [ # Set of image URLs to display for a contact. Most contacts will have a single image, but a "group" contact may include up to 8 image URLs and they will be resized and cropped into a mosaic on the client.
+ "A String",
+ ],
+ "id": "A String", # An ID for this contact. This is generated by the application and is treated as an opaque token.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="insert">insert(body)</code>
+ <pre>Inserts a new contact.
+
+Args:
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # A person or group that can be used as a creator or a contact.
+ "kind": "mirror#contact", # The type of resource. This is always mirror#contact.
+ "displayName": "A String", # The name to display for this contact.
+ "acceptTypes": [ # A list of MIME types that a contact supports. The contact will be shown to the user if any of its acceptTypes matches any of the types of the attachments on the item. If no acceptTypes are given, the contact will be shown for all items.
+ "A String",
+ ],
+ "type": "A String", # The type for this contact. This is used for sorting in UIs. Allowed values are:
+ # - INDIVIDUAL - Represents a single person. This is the default.
+ # - GROUP - Represents more than a single person.
+ "priority": 42, # Priority for the contact to determine ordering in a list of contacts. Contacts with higher priorities will be shown before ones with lower priorities.
+ "source": "A String", # The ID of the application that created this contact. This is populated by the API
+ "phoneNumber": "A String", # Primary phone number for the contact. This can be a fully-qualified number, with country calling code and area code, or a local number.
+ "imageUrls": [ # Set of image URLs to display for a contact. Most contacts will have a single image, but a "group" contact may include up to 8 image URLs and they will be resized and cropped into a mosaic on the client.
+ "A String",
+ ],
+ "id": "A String", # An ID for this contact. This is generated by the application and is treated as an opaque token.
+ }
+
+
+Returns:
+ An object of the form:
+
+ { # A person or group that can be used as a creator or a contact.
+ "kind": "mirror#contact", # The type of resource. This is always mirror#contact.
+ "displayName": "A String", # The name to display for this contact.
+ "acceptTypes": [ # A list of MIME types that a contact supports. The contact will be shown to the user if any of its acceptTypes matches any of the types of the attachments on the item. If no acceptTypes are given, the contact will be shown for all items.
+ "A String",
+ ],
+ "type": "A String", # The type for this contact. This is used for sorting in UIs. Allowed values are:
+ # - INDIVIDUAL - Represents a single person. This is the default.
+ # - GROUP - Represents more than a single person.
+ "priority": 42, # Priority for the contact to determine ordering in a list of contacts. Contacts with higher priorities will be shown before ones with lower priorities.
+ "source": "A String", # The ID of the application that created this contact. This is populated by the API
+ "phoneNumber": "A String", # Primary phone number for the contact. This can be a fully-qualified number, with country calling code and area code, or a local number.
+ "imageUrls": [ # Set of image URLs to display for a contact. Most contacts will have a single image, but a "group" contact may include up to 8 image URLs and they will be resized and cropped into a mosaic on the client.
+ "A String",
+ ],
+ "id": "A String", # An ID for this contact. This is generated by the application and is treated as an opaque token.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="list">list()</code>
+ <pre>Retrieves a list of contacts for the authenticated user.
+
+Args:
+
+Returns:
+ An object of the form:
+
+ { # A list of Contacts representing contacts. This is the response from the server to GET requests on the contacts collection.
+ "items": [ # Contact list.
+ { # A person or group that can be used as a creator or a contact.
+ "kind": "mirror#contact", # The type of resource. This is always mirror#contact.
+ "displayName": "A String", # The name to display for this contact.
+ "acceptTypes": [ # A list of MIME types that a contact supports. The contact will be shown to the user if any of its acceptTypes matches any of the types of the attachments on the item. If no acceptTypes are given, the contact will be shown for all items.
+ "A String",
+ ],
+ "type": "A String", # The type for this contact. This is used for sorting in UIs. Allowed values are:
+ # - INDIVIDUAL - Represents a single person. This is the default.
+ # - GROUP - Represents more than a single person.
+ "priority": 42, # Priority for the contact to determine ordering in a list of contacts. Contacts with higher priorities will be shown before ones with lower priorities.
+ "source": "A String", # The ID of the application that created this contact. This is populated by the API
+ "phoneNumber": "A String", # Primary phone number for the contact. This can be a fully-qualified number, with country calling code and area code, or a local number.
+ "imageUrls": [ # Set of image URLs to display for a contact. Most contacts will have a single image, but a "group" contact may include up to 8 image URLs and they will be resized and cropped into a mosaic on the client.
+ "A String",
+ ],
+ "id": "A String", # An ID for this contact. This is generated by the application and is treated as an opaque token.
+ },
+ ],
+ "kind": "mirror#contacts", # The type of resource. This is always mirror#contacts.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="patch">patch(id, body)</code>
+ <pre>Updates a contact in place. This method supports patch semantics.
+
+Args:
+ id: string, The ID of the contact. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # A person or group that can be used as a creator or a contact.
+ "kind": "mirror#contact", # The type of resource. This is always mirror#contact.
+ "displayName": "A String", # The name to display for this contact.
+ "acceptTypes": [ # A list of MIME types that a contact supports. The contact will be shown to the user if any of its acceptTypes matches any of the types of the attachments on the item. If no acceptTypes are given, the contact will be shown for all items.
+ "A String",
+ ],
+ "type": "A String", # The type for this contact. This is used for sorting in UIs. Allowed values are:
+ # - INDIVIDUAL - Represents a single person. This is the default.
+ # - GROUP - Represents more than a single person.
+ "priority": 42, # Priority for the contact to determine ordering in a list of contacts. Contacts with higher priorities will be shown before ones with lower priorities.
+ "source": "A String", # The ID of the application that created this contact. This is populated by the API
+ "phoneNumber": "A String", # Primary phone number for the contact. This can be a fully-qualified number, with country calling code and area code, or a local number.
+ "imageUrls": [ # Set of image URLs to display for a contact. Most contacts will have a single image, but a "group" contact may include up to 8 image URLs and they will be resized and cropped into a mosaic on the client.
+ "A String",
+ ],
+ "id": "A String", # An ID for this contact. This is generated by the application and is treated as an opaque token.
+ }
+
+
+Returns:
+ An object of the form:
+
+ { # A person or group that can be used as a creator or a contact.
+ "kind": "mirror#contact", # The type of resource. This is always mirror#contact.
+ "displayName": "A String", # The name to display for this contact.
+ "acceptTypes": [ # A list of MIME types that a contact supports. The contact will be shown to the user if any of its acceptTypes matches any of the types of the attachments on the item. If no acceptTypes are given, the contact will be shown for all items.
+ "A String",
+ ],
+ "type": "A String", # The type for this contact. This is used for sorting in UIs. Allowed values are:
+ # - INDIVIDUAL - Represents a single person. This is the default.
+ # - GROUP - Represents more than a single person.
+ "priority": 42, # Priority for the contact to determine ordering in a list of contacts. Contacts with higher priorities will be shown before ones with lower priorities.
+ "source": "A String", # The ID of the application that created this contact. This is populated by the API
+ "phoneNumber": "A String", # Primary phone number for the contact. This can be a fully-qualified number, with country calling code and area code, or a local number.
+ "imageUrls": [ # Set of image URLs to display for a contact. Most contacts will have a single image, but a "group" contact may include up to 8 image URLs and they will be resized and cropped into a mosaic on the client.
+ "A String",
+ ],
+ "id": "A String", # An ID for this contact. This is generated by the application and is treated as an opaque token.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="update">update(id, body)</code>
+ <pre>Updates a contact in place.
+
+Args:
+ id: string, The ID of the contact. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # A person or group that can be used as a creator or a contact.
+ "kind": "mirror#contact", # The type of resource. This is always mirror#contact.
+ "displayName": "A String", # The name to display for this contact.
+ "acceptTypes": [ # A list of MIME types that a contact supports. The contact will be shown to the user if any of its acceptTypes matches any of the types of the attachments on the item. If no acceptTypes are given, the contact will be shown for all items.
+ "A String",
+ ],
+ "type": "A String", # The type for this contact. This is used for sorting in UIs. Allowed values are:
+ # - INDIVIDUAL - Represents a single person. This is the default.
+ # - GROUP - Represents more than a single person.
+ "priority": 42, # Priority for the contact to determine ordering in a list of contacts. Contacts with higher priorities will be shown before ones with lower priorities.
+ "source": "A String", # The ID of the application that created this contact. This is populated by the API
+ "phoneNumber": "A String", # Primary phone number for the contact. This can be a fully-qualified number, with country calling code and area code, or a local number.
+ "imageUrls": [ # Set of image URLs to display for a contact. Most contacts will have a single image, but a "group" contact may include up to 8 image URLs and they will be resized and cropped into a mosaic on the client.
+ "A String",
+ ],
+ "id": "A String", # An ID for this contact. This is generated by the application and is treated as an opaque token.
+ }
+
+
+Returns:
+ An object of the form:
+
+ { # A person or group that can be used as a creator or a contact.
+ "kind": "mirror#contact", # The type of resource. This is always mirror#contact.
+ "displayName": "A String", # The name to display for this contact.
+ "acceptTypes": [ # A list of MIME types that a contact supports. The contact will be shown to the user if any of its acceptTypes matches any of the types of the attachments on the item. If no acceptTypes are given, the contact will be shown for all items.
+ "A String",
+ ],
+ "type": "A String", # The type for this contact. This is used for sorting in UIs. Allowed values are:
+ # - INDIVIDUAL - Represents a single person. This is the default.
+ # - GROUP - Represents more than a single person.
+ "priority": 42, # Priority for the contact to determine ordering in a list of contacts. Contacts with higher priorities will be shown before ones with lower priorities.
+ "source": "A String", # The ID of the application that created this contact. This is populated by the API
+ "phoneNumber": "A String", # Primary phone number for the contact. This can be a fully-qualified number, with country calling code and area code, or a local number.
+ "imageUrls": [ # Set of image URLs to display for a contact. Most contacts will have a single image, but a "group" contact may include up to 8 image URLs and they will be resized and cropped into a mosaic on the client.
+ "A String",
+ ],
+ "id": "A String", # An ID for this contact. This is generated by the application and is treated as an opaque token.
+ }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/mirror_v1.html b/docs/dyn/mirror_v1.html
new file mode 100644
index 0000000..487a745
--- /dev/null
+++ b/docs/dyn/mirror_v1.html
@@ -0,0 +1,97 @@
+<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="mirror_v1.html">Google Mirror API</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="mirror_v1.contacts.html">contacts()</a></code>
+</p>
+<p class="firstline">Returns the contacts Resource.</p>
+
+<p class="toc_element">
+ <code><a href="mirror_v1.locations.html">locations()</a></code>
+</p>
+<p class="firstline">Returns the locations Resource.</p>
+
+<p class="toc_element">
+ <code><a href="mirror_v1.subscriptions.html">subscriptions()</a></code>
+</p>
+<p class="firstline">Returns the subscriptions Resource.</p>
+
+<p class="toc_element">
+ <code><a href="mirror_v1.timeline.html">timeline()</a></code>
+</p>
+<p class="firstline">Returns the timeline Resource.</p>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/mirror_v1.locations.html b/docs/dyn/mirror_v1.locations.html
new file mode 100644
index 0000000..f43929e
--- /dev/null
+++ b/docs/dyn/mirror_v1.locations.html
@@ -0,0 +1,132 @@
+<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="mirror_v1.html">Google Mirror API</a> . <a href="mirror_v1.locations.html">locations</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#get">get(id)</a></code></p>
+<p class="firstline">Gets a single location by ID.</p>
+<p class="toc_element">
+ <code><a href="#list">list()</a></code></p>
+<p class="firstline">Retrieves a list of locations for the user.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="get">get(id)</code>
+ <pre>Gets a single location by ID.
+
+Args:
+ id: string, The ID of the location or latest for the last known location. (required)
+
+Returns:
+ An object of the form:
+
+ { # A geographic location that can be associated with a timeline item.
+ "kind": "mirror#location", # The type of resource. This is always mirror#location.
+ "displayName": "A String", # The name to be displayed. This may be a business name or a user-defined place, such as "Home".
+ "timestamp": "A String", # The time at which this location was captured, formatted according to RFC 3339.
+ "longitude": 3.14, # The longitude, in degrees.
+ "address": "A String", # The full address of the location.
+ "latitude": 3.14, # The latitude, in degrees.
+ "id": "A String", # The ID of the location.
+ "accuracy": 3.14, # The accuracy of the location fix in meters.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="list">list()</code>
+ <pre>Retrieves a list of locations for the user.
+
+Args:
+
+Returns:
+ An object of the form:
+
+ { # A list of Locations. This is the response from the server to GET requests on the locations collection.
+ "items": [ # The list of locations.
+ { # A geographic location that can be associated with a timeline item.
+ "kind": "mirror#location", # The type of resource. This is always mirror#location.
+ "displayName": "A String", # The name to be displayed. This may be a business name or a user-defined place, such as "Home".
+ "timestamp": "A String", # The time at which this location was captured, formatted according to RFC 3339.
+ "longitude": 3.14, # The longitude, in degrees.
+ "address": "A String", # The full address of the location.
+ "latitude": 3.14, # The latitude, in degrees.
+ "id": "A String", # The ID of the location.
+ "accuracy": 3.14, # The accuracy of the location fix in meters.
+ },
+ ],
+ "kind": "mirror#locationsList", # The type of resource. This is always mirror#locationsList.
+ }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/mirror_v1.subscriptions.html b/docs/dyn/mirror_v1.subscriptions.html
new file mode 100644
index 0000000..56ade50
--- /dev/null
+++ b/docs/dyn/mirror_v1.subscriptions.html
@@ -0,0 +1,346 @@
+<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="mirror_v1.html">Google Mirror API</a> . <a href="mirror_v1.subscriptions.html">subscriptions</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#delete">delete(id)</a></code></p>
+<p class="firstline">Deletes a subscription.</p>
+<p class="toc_element">
+ <code><a href="#insert">insert(body)</a></code></p>
+<p class="firstline">Creates a new subscription.</p>
+<p class="toc_element">
+ <code><a href="#list">list()</a></code></p>
+<p class="firstline">Retrieves a list of subscriptions for the authenticated user and service.</p>
+<p class="toc_element">
+ <code><a href="#update">update(id, body)</a></code></p>
+<p class="firstline">Updates an existing subscription in place.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="delete">delete(id)</code>
+ <pre>Deletes a subscription.
+
+Args:
+ id: string, The ID of the subscription. (required)
+</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="insert">insert(body)</code>
+ <pre>Creates a new subscription.
+
+Args:
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # A subscription to events on a collection.
+ "kind": "mirror#subscription", # The type of resource. This is always mirror#subscription.
+ "notification": { # A notification delivered by the API. # Container object for notifications. This is not populated in the Subscription resource.
+ "itemId": "A String", # The ID of the item that generated the notification.
+ "collection": "A String", # The collection that generated the notification.
+ "verifyToken": "A String", # The secret verify token provided by the service when it subscribed for notifications.
+ "userToken": "A String", # The user token provided by the service when it subscribed for notifications.
+ "userActions": [ # A list of actions taken by the user that triggered the notification.
+ { # Represents an action taken by the user that triggered a notification.
+ "type": "A String", # The type of action. The value of this can be:
+ # - SHARE - the user shared an item.
+ # - REPLY - the user replied to an item.
+ # - REPLY_ALL - the user replied to all recipients of an item.
+ # - CUSTOM - the user selected a custom menu item on the timeline item.
+ # - DELETE - the user deleted the item.
+ # - PIN - the user pinned the item.
+ # - UNPIN - the user unpinned the item. In the future, additional types may be added. UserActions with unrecognized types should be ignored.
+ "payload": "A String", # An optional payload for the action.
+ #
+ # For actions of type CUSTOM, this is the ID of the custom menu item that was selected.
+ },
+ ],
+ "operation": "A String", # The type of operation that generated the notification.
+ },
+ "updated": "A String", # The time at which this subscription was last modified, formatted according to RFC 3339.
+ "collection": "A String", # The collection to subscribe to. Allowed values are:
+ # - timeline - Changes in the timeline including insertion, deletion, and updates.
+ # - locations - Location updates.
+ "verifyToken": "A String", # A secret token sent to the subscriber in notifications so that it can verify that the notification was generated by Google.
+ "userToken": "A String", # An opaque token sent to the subscriber in notifications so that it can determine the ID of the user.
+ "operation": [ # A list of operations that should be subscribed to. An empty list indicates that all operations on the collection should be subscribed to. Allowed values are:
+ # - UPDATE - The item has been updated.
+ # - INSERT - A new item has been inserted.
+ # - DELETE - The item has been deleted.
+ # - MENU_ACTION - A custom menu item has been triggered by the user.
+ "A String",
+ ],
+ "id": "A String", # The ID of the subscription.
+ "callbackUrl": "A String", # The URL where notifications should be delivered (must start with https://).
+ }
+
+
+Returns:
+ An object of the form:
+
+ { # A subscription to events on a collection.
+ "kind": "mirror#subscription", # The type of resource. This is always mirror#subscription.
+ "notification": { # A notification delivered by the API. # Container object for notifications. This is not populated in the Subscription resource.
+ "itemId": "A String", # The ID of the item that generated the notification.
+ "collection": "A String", # The collection that generated the notification.
+ "verifyToken": "A String", # The secret verify token provided by the service when it subscribed for notifications.
+ "userToken": "A String", # The user token provided by the service when it subscribed for notifications.
+ "userActions": [ # A list of actions taken by the user that triggered the notification.
+ { # Represents an action taken by the user that triggered a notification.
+ "type": "A String", # The type of action. The value of this can be:
+ # - SHARE - the user shared an item.
+ # - REPLY - the user replied to an item.
+ # - REPLY_ALL - the user replied to all recipients of an item.
+ # - CUSTOM - the user selected a custom menu item on the timeline item.
+ # - DELETE - the user deleted the item.
+ # - PIN - the user pinned the item.
+ # - UNPIN - the user unpinned the item. In the future, additional types may be added. UserActions with unrecognized types should be ignored.
+ "payload": "A String", # An optional payload for the action.
+ #
+ # For actions of type CUSTOM, this is the ID of the custom menu item that was selected.
+ },
+ ],
+ "operation": "A String", # The type of operation that generated the notification.
+ },
+ "updated": "A String", # The time at which this subscription was last modified, formatted according to RFC 3339.
+ "collection": "A String", # The collection to subscribe to. Allowed values are:
+ # - timeline - Changes in the timeline including insertion, deletion, and updates.
+ # - locations - Location updates.
+ "verifyToken": "A String", # A secret token sent to the subscriber in notifications so that it can verify that the notification was generated by Google.
+ "userToken": "A String", # An opaque token sent to the subscriber in notifications so that it can determine the ID of the user.
+ "operation": [ # A list of operations that should be subscribed to. An empty list indicates that all operations on the collection should be subscribed to. Allowed values are:
+ # - UPDATE - The item has been updated.
+ # - INSERT - A new item has been inserted.
+ # - DELETE - The item has been deleted.
+ # - MENU_ACTION - A custom menu item has been triggered by the user.
+ "A String",
+ ],
+ "id": "A String", # The ID of the subscription.
+ "callbackUrl": "A String", # The URL where notifications should be delivered (must start with https://).
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="list">list()</code>
+ <pre>Retrieves a list of subscriptions for the authenticated user and service.
+
+Args:
+
+Returns:
+ An object of the form:
+
+ { # A list of Subscriptions. This is the response from the server to GET requests on the subscription collection.
+ "items": [ # The list of subscriptions.
+ { # A subscription to events on a collection.
+ "kind": "mirror#subscription", # The type of resource. This is always mirror#subscription.
+ "notification": { # A notification delivered by the API. # Container object for notifications. This is not populated in the Subscription resource.
+ "itemId": "A String", # The ID of the item that generated the notification.
+ "collection": "A String", # The collection that generated the notification.
+ "verifyToken": "A String", # The secret verify token provided by the service when it subscribed for notifications.
+ "userToken": "A String", # The user token provided by the service when it subscribed for notifications.
+ "userActions": [ # A list of actions taken by the user that triggered the notification.
+ { # Represents an action taken by the user that triggered a notification.
+ "type": "A String", # The type of action. The value of this can be:
+ # - SHARE - the user shared an item.
+ # - REPLY - the user replied to an item.
+ # - REPLY_ALL - the user replied to all recipients of an item.
+ # - CUSTOM - the user selected a custom menu item on the timeline item.
+ # - DELETE - the user deleted the item.
+ # - PIN - the user pinned the item.
+ # - UNPIN - the user unpinned the item. In the future, additional types may be added. UserActions with unrecognized types should be ignored.
+ "payload": "A String", # An optional payload for the action.
+ #
+ # For actions of type CUSTOM, this is the ID of the custom menu item that was selected.
+ },
+ ],
+ "operation": "A String", # The type of operation that generated the notification.
+ },
+ "updated": "A String", # The time at which this subscription was last modified, formatted according to RFC 3339.
+ "collection": "A String", # The collection to subscribe to. Allowed values are:
+ # - timeline - Changes in the timeline including insertion, deletion, and updates.
+ # - locations - Location updates.
+ "verifyToken": "A String", # A secret token sent to the subscriber in notifications so that it can verify that the notification was generated by Google.
+ "userToken": "A String", # An opaque token sent to the subscriber in notifications so that it can determine the ID of the user.
+ "operation": [ # A list of operations that should be subscribed to. An empty list indicates that all operations on the collection should be subscribed to. Allowed values are:
+ # - UPDATE - The item has been updated.
+ # - INSERT - A new item has been inserted.
+ # - DELETE - The item has been deleted.
+ # - MENU_ACTION - A custom menu item has been triggered by the user.
+ "A String",
+ ],
+ "id": "A String", # The ID of the subscription.
+ "callbackUrl": "A String", # The URL where notifications should be delivered (must start with https://).
+ },
+ ],
+ "kind": "mirror#subscriptionsList", # The type of resource. This is always mirror#subscriptionsList.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="update">update(id, body)</code>
+ <pre>Updates an existing subscription in place.
+
+Args:
+ id: string, The ID of the subscription. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # A subscription to events on a collection.
+ "kind": "mirror#subscription", # The type of resource. This is always mirror#subscription.
+ "notification": { # A notification delivered by the API. # Container object for notifications. This is not populated in the Subscription resource.
+ "itemId": "A String", # The ID of the item that generated the notification.
+ "collection": "A String", # The collection that generated the notification.
+ "verifyToken": "A String", # The secret verify token provided by the service when it subscribed for notifications.
+ "userToken": "A String", # The user token provided by the service when it subscribed for notifications.
+ "userActions": [ # A list of actions taken by the user that triggered the notification.
+ { # Represents an action taken by the user that triggered a notification.
+ "type": "A String", # The type of action. The value of this can be:
+ # - SHARE - the user shared an item.
+ # - REPLY - the user replied to an item.
+ # - REPLY_ALL - the user replied to all recipients of an item.
+ # - CUSTOM - the user selected a custom menu item on the timeline item.
+ # - DELETE - the user deleted the item.
+ # - PIN - the user pinned the item.
+ # - UNPIN - the user unpinned the item. In the future, additional types may be added. UserActions with unrecognized types should be ignored.
+ "payload": "A String", # An optional payload for the action.
+ #
+ # For actions of type CUSTOM, this is the ID of the custom menu item that was selected.
+ },
+ ],
+ "operation": "A String", # The type of operation that generated the notification.
+ },
+ "updated": "A String", # The time at which this subscription was last modified, formatted according to RFC 3339.
+ "collection": "A String", # The collection to subscribe to. Allowed values are:
+ # - timeline - Changes in the timeline including insertion, deletion, and updates.
+ # - locations - Location updates.
+ "verifyToken": "A String", # A secret token sent to the subscriber in notifications so that it can verify that the notification was generated by Google.
+ "userToken": "A String", # An opaque token sent to the subscriber in notifications so that it can determine the ID of the user.
+ "operation": [ # A list of operations that should be subscribed to. An empty list indicates that all operations on the collection should be subscribed to. Allowed values are:
+ # - UPDATE - The item has been updated.
+ # - INSERT - A new item has been inserted.
+ # - DELETE - The item has been deleted.
+ # - MENU_ACTION - A custom menu item has been triggered by the user.
+ "A String",
+ ],
+ "id": "A String", # The ID of the subscription.
+ "callbackUrl": "A String", # The URL where notifications should be delivered (must start with https://).
+ }
+
+
+Returns:
+ An object of the form:
+
+ { # A subscription to events on a collection.
+ "kind": "mirror#subscription", # The type of resource. This is always mirror#subscription.
+ "notification": { # A notification delivered by the API. # Container object for notifications. This is not populated in the Subscription resource.
+ "itemId": "A String", # The ID of the item that generated the notification.
+ "collection": "A String", # The collection that generated the notification.
+ "verifyToken": "A String", # The secret verify token provided by the service when it subscribed for notifications.
+ "userToken": "A String", # The user token provided by the service when it subscribed for notifications.
+ "userActions": [ # A list of actions taken by the user that triggered the notification.
+ { # Represents an action taken by the user that triggered a notification.
+ "type": "A String", # The type of action. The value of this can be:
+ # - SHARE - the user shared an item.
+ # - REPLY - the user replied to an item.
+ # - REPLY_ALL - the user replied to all recipients of an item.
+ # - CUSTOM - the user selected a custom menu item on the timeline item.
+ # - DELETE - the user deleted the item.
+ # - PIN - the user pinned the item.
+ # - UNPIN - the user unpinned the item. In the future, additional types may be added. UserActions with unrecognized types should be ignored.
+ "payload": "A String", # An optional payload for the action.
+ #
+ # For actions of type CUSTOM, this is the ID of the custom menu item that was selected.
+ },
+ ],
+ "operation": "A String", # The type of operation that generated the notification.
+ },
+ "updated": "A String", # The time at which this subscription was last modified, formatted according to RFC 3339.
+ "collection": "A String", # The collection to subscribe to. Allowed values are:
+ # - timeline - Changes in the timeline including insertion, deletion, and updates.
+ # - locations - Location updates.
+ "verifyToken": "A String", # A secret token sent to the subscriber in notifications so that it can verify that the notification was generated by Google.
+ "userToken": "A String", # An opaque token sent to the subscriber in notifications so that it can determine the ID of the user.
+ "operation": [ # A list of operations that should be subscribed to. An empty list indicates that all operations on the collection should be subscribed to. Allowed values are:
+ # - UPDATE - The item has been updated.
+ # - INSERT - A new item has been inserted.
+ # - DELETE - The item has been deleted.
+ # - MENU_ACTION - A custom menu item has been triggered by the user.
+ "A String",
+ ],
+ "id": "A String", # The ID of the subscription.
+ "callbackUrl": "A String", # The URL where notifications should be delivered (must start with https://).
+ }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/mirror_v1.timeline.attachments.html b/docs/dyn/mirror_v1.timeline.attachments.html
new file mode 100644
index 0000000..4684465
--- /dev/null
+++ b/docs/dyn/mirror_v1.timeline.attachments.html
@@ -0,0 +1,178 @@
+<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="mirror_v1.html">Google Mirror API</a> . <a href="mirror_v1.timeline.html">timeline</a> . <a href="mirror_v1.timeline.attachments.html">attachments</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#delete">delete(itemId, attachmentId)</a></code></p>
+<p class="firstline">Deletes an attachment from a timeline item.</p>
+<p class="toc_element">
+ <code><a href="#get">get(itemId, attachmentId)</a></code></p>
+<p class="firstline">Retrieves an attachment on a timeline item by item ID and attachment ID.</p>
+<p class="toc_element">
+ <code><a href="#get_media">get_media(itemId, attachmentId)</a></code></p>
+<p class="firstline">Retrieves an attachment on a timeline item by item ID and attachment ID.</p>
+<p class="toc_element">
+ <code><a href="#insert">insert(itemId, media_body=None)</a></code></p>
+<p class="firstline">Adds a new attachment to a timeline item.</p>
+<p class="toc_element">
+ <code><a href="#list">list(itemId)</a></code></p>
+<p class="firstline">Returns a list of attachments for a timeline item.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="delete">delete(itemId, attachmentId)</code>
+ <pre>Deletes an attachment from a timeline item.
+
+Args:
+ itemId: string, The ID of the timeline item the attachment belongs to. (required)
+ attachmentId: string, The ID of the attachment. (required)
+</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="get">get(itemId, attachmentId)</code>
+ <pre>Retrieves an attachment on a timeline item by item ID and attachment ID.
+
+Args:
+ itemId: string, The ID of the timeline item the attachment belongs to. (required)
+ attachmentId: string, The ID of the attachment. (required)
+
+Returns:
+ An object of the form:
+
+ { # Represents media content, such as a photo, that can be attached to a timeline item.
+ "contentUrl": "A String", # The URL for the content.
+ "contentType": "A String", # The MIME type of the attachment.
+ "id": "A String", # The ID of the attachment.
+ "isProcessingContent": True or False, # Indicates that the contentUrl is not available because the attachment content is still being processed. If the caller wishes to retrieve the content, it should try again later.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="get_media">get_media(itemId, attachmentId)</code>
+ <pre>Retrieves an attachment on a timeline item by item ID and attachment ID.
+
+Args:
+ itemId: string, The ID of the timeline item the attachment belongs to. (required)
+ attachmentId: string, The ID of the attachment. (required)
+
+Returns:
+ The media object as a string.
+
+ </pre>
+</div>
+
+<div class="method">
+ <code class="details" id="insert">insert(itemId, media_body=None)</code>
+ <pre>Adds a new attachment to a timeline item.
+
+Args:
+ itemId: string, The ID of the timeline item the attachment belongs to. (required)
+ media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
+
+Returns:
+ An object of the form:
+
+ { # Represents media content, such as a photo, that can be attached to a timeline item.
+ "contentUrl": "A String", # The URL for the content.
+ "contentType": "A String", # The MIME type of the attachment.
+ "id": "A String", # The ID of the attachment.
+ "isProcessingContent": True or False, # Indicates that the contentUrl is not available because the attachment content is still being processed. If the caller wishes to retrieve the content, it should try again later.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="list">list(itemId)</code>
+ <pre>Returns a list of attachments for a timeline item.
+
+Args:
+ itemId: string, The ID of the timeline item whose attachments should be listed. (required)
+
+Returns:
+ An object of the form:
+
+ { # A list of Attachments. This is the response from the server to GET requests on the attachments collection.
+ "items": [ # The list of attachments.
+ { # Represents media content, such as a photo, that can be attached to a timeline item.
+ "contentUrl": "A String", # The URL for the content.
+ "contentType": "A String", # The MIME type of the attachment.
+ "id": "A String", # The ID of the attachment.
+ "isProcessingContent": True or False, # Indicates that the contentUrl is not available because the attachment content is still being processed. If the caller wishes to retrieve the content, it should try again later.
+ },
+ ],
+ "kind": "mirror#attachmentsList", # The type of resource. This is always mirror#attachmentsList.
+ }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/mirror_v1.timeline.html b/docs/dyn/mirror_v1.timeline.html
new file mode 100644
index 0000000..9d7d88b
--- /dev/null
+++ b/docs/dyn/mirror_v1.timeline.html
@@ -0,0 +1,1351 @@
+<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="mirror_v1.html">Google Mirror API</a> . <a href="mirror_v1.timeline.html">timeline</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="mirror_v1.timeline.attachments.html">attachments()</a></code>
+</p>
+<p class="firstline">Returns the attachments Resource.</p>
+
+<p class="toc_element">
+ <code><a href="#delete">delete(id)</a></code></p>
+<p class="firstline">Deletes a timeline item.</p>
+<p class="toc_element">
+ <code><a href="#get">get(id)</a></code></p>
+<p class="firstline">Gets a single timeline item by ID.</p>
+<p class="toc_element">
+ <code><a href="#insert">insert(body=None, media_body=None)</a></code></p>
+<p class="firstline">Inserts a new item into the timeline.</p>
+<p class="toc_element">
+ <code><a href="#list">list(orderBy=None, includeDeleted=None, pageToken=None, maxResults=None, pinnedOnly=None, sourceItemId=None, bundleId=None)</a></code></p>
+<p class="firstline">Retrieves a list of timeline items for the authenticated user.</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(id, body)</a></code></p>
+<p class="firstline">Updates a timeline item in place. This method supports patch semantics.</p>
+<p class="toc_element">
+ <code><a href="#update">update(id, body=None, media_body=None)</a></code></p>
+<p class="firstline">Updates a timeline item in place.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="delete">delete(id)</code>
+ <pre>Deletes a timeline item.
+
+Args:
+ id: string, The ID of the timeline item. (required)
+</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="get">get(id)</code>
+ <pre>Gets a single timeline item by ID.
+
+Args:
+ id: string, The ID of the timeline item. (required)
+
+Returns:
+ An object of the form:
+
+ { # Each item in the user's timeline is represented as a TimelineItem JSON structure, described below.
+ "attachments": [ # A list of media attachments associated with this item. As a convenience, you can refer to attachments in your HTML payloads with the attachment or cid scheme. For example:
+ # - attachment: <img src="attachment:attachment_index"> where attachment_index is the 0-based index of this array.
+ # - cid: <img src="cid:attachment_id"> where attachment_id is the ID of the attachment.
+ { # Represents media content, such as a photo, that can be attached to a timeline item.
+ "contentUrl": "A String", # The URL for the content.
+ "contentType": "A String", # The MIME type of the attachment.
+ "id": "A String", # The ID of the attachment.
+ "isProcessingContent": True or False, # Indicates that the contentUrl is not available because the attachment content is still being processed. If the caller wishes to retrieve the content, it should try again later.
+ },
+ ],
+ "displayTime": "A String", # The time that should be displayed when this item is viewed in the timeline, formatted according to RFC 3339. This user's timeline is sorted chronologically on display time, so this will also determine where the item is displayed in the timeline. If not set by the service, the display time defaults to the updated time.
+ "creator": { # A person or group that can be used as a creator or a contact. # The user or group that created this item.
+ "kind": "mirror#contact", # The type of resource. This is always mirror#contact.
+ "displayName": "A String", # The name to display for this contact.
+ "acceptTypes": [ # A list of MIME types that a contact supports. The contact will be shown to the user if any of its acceptTypes matches any of the types of the attachments on the item. If no acceptTypes are given, the contact will be shown for all items.
+ "A String",
+ ],
+ "type": "A String", # The type for this contact. This is used for sorting in UIs. Allowed values are:
+ # - INDIVIDUAL - Represents a single person. This is the default.
+ # - GROUP - Represents more than a single person.
+ "priority": 42, # Priority for the contact to determine ordering in a list of contacts. Contacts with higher priorities will be shown before ones with lower priorities.
+ "source": "A String", # The ID of the application that created this contact. This is populated by the API
+ "phoneNumber": "A String", # Primary phone number for the contact. This can be a fully-qualified number, with country calling code and area code, or a local number.
+ "imageUrls": [ # Set of image URLs to display for a contact. Most contacts will have a single image, but a "group" contact may include up to 8 image URLs and they will be resized and cropped into a mosaic on the client.
+ "A String",
+ ],
+ "id": "A String", # An ID for this contact. This is generated by the application and is treated as an opaque token.
+ },
+ "text": "A String", # Text content of this item.
+ "menuItems": [ # A list of menu items that will be presented to the user when this item is selected in the timeline.
+ { # A custom menu item that can be presented to the user by a timeline item.
+ "action": "A String", # Controls the behavior when the user picks the menu option. Allowed values are:
+ # - CUSTOM - Custom action set by the service. When the user selects this menuItem, the API triggers a notification to your callbackUrl with the userActions.type set to CUSTOM and the userActions.payload set to the ID of this menu item. This is the default value.
+ # - Built-in actions:
+ # - REPLY - Initiate a reply to the timeline item using the voice recording UI. The creator attribute must be set in the timeline item for this menu to be available.
+ # - REPLY_ALL - Same behavior as REPLY. The original timeline item's recipients will be added to the reply item.
+ # - DELETE - Delete the timeline item.
+ # - SHARE - Share the timeline item with the available contacts.
+ # - READ_ALOUD - Read the timeline item's speakableText aloud; if this field is not set, read the text field; if none of those fields are set, this menu item is ignored.
+ # - VOICE_CALL - Initiate a phone call using the timeline item's creator.phone_number attribute as recipient.
+ # - NAVIGATE - Navigate to the timeline item's location.
+ # - TOGGLE_PINNED - Toggle the isPinned state of the timeline item.
+ "removeWhenSelected": True or False, # If set to true on a CUSTOM menu item, that item will be removed from the menu after it is selected.
+ "values": [ # For CUSTOM items, a list of values controlling the appearance of the menu item in each of its states. A value for the DEFAULT state must be provided. If the PENDING or CONFIRMED states are missing, they will not be shown.
+ { # A single value that is part of a MenuItem.
+ "iconUrl": "A String", # URL of an icon to display with the menu item.
+ "state": "A String", # The state that this value applies to. Allowed values are:
+ # - DEFAULT - Default value shown when displayed in the menuItems list.
+ # - PENDING - Value shown when the menuItem has been selected by the user but can still be cancelled.
+ # - CONFIRMED - Value shown when the menuItem has been selected by the user and can no longer be cancelled.
+ "displayName": "A String", # The name to display for the menu item.
+ },
+ ],
+ "id": "A String", # The ID for this menu item. This is generated by the application and is treated as an opaque token.
+ },
+ ],
+ "isBundleCover": True or False, # Whether this item is a bundle cover.
+ #
+ # If an item is marked as a bundle cover, it will be the entry point to the bundle of items that have the same bundleId as that item. It will be shown only on the main timeline — not within the opened bundle.
+ #
+ # On the main timeline, items that are shown are:
+ # - Items that have isBundleCover set to true
+ # - Items that do not have a bundleId In a bundle sub-timeline, items that are shown are:
+ # - Items that have the bundleId in question AND isBundleCover set to false
+ "etag": "A String", # ETag for this item.
+ "id": "A String", # The ID of the timeline item. This is unique within a user's timeline.
+ "isDeleted": True or False, # When true, indicates this item is deleted, and only the ID property is set.
+ "bundleId": "A String", # The bundle ID for this item. Services can specify a bundleId to group many items together. They appear under a single top-level item on the device.
+ "isPinned": True or False, # When true, indicates this item is pinned, which means it's grouped alongside "active" items like navigation and hangouts, on the opposite side of the home screen from historical (non-pinned) timeline items. You can allow the user to toggle the value of this property with the TOGGLE_PINNED built-in menu item.
+ "title": "A String", # The title of this item.
+ "notification": { # Controls how notifications for a timeline item are presented to the user. # Controls how notifications for this item are presented on the device. If this is missing, no notification will be generated.
+ "level": "A String", # Describes how important the notification is. Allowed values are:
+ # - DEFAULT - Notifications of default importance. A chime will be played to alert users.
+ "deliveryTime": "A String", # The time at which the notification should be delivered.
+ },
+ "speakableText": "A String", # The speakable version of the content of this item. Along with the READ_ALOUD menu item, use this field to provide text that would be clearer when read aloud, or to provide extended information to what is displayed visually on Glass.
+ #
+ # Glassware should also specify the speakableType field, which will be spoken before this text in cases where the additional context is useful, for example when the user requests that the item be read aloud following a notification.
+ "html": "A String", # HTML content for this item. If both text and html are provided for an item, the html will be rendered in the timeline.
+ # Allowed HTML elements - You can use these elements in your timeline cards.
+ #
+ # - Headers: h1, h2, h3, h4, h5, h6
+ # - Images: img
+ # - Lists: li, ol, ul
+ # - HTML5 semantics: article, aside, details, figure, figcaption, footer, header, nav, section, summary, time
+ # - Structural: blockquote, br, div, hr, p, span
+ # - Style: b, big, center, em, i, u, s, small, strike, strong, style, sub, sup
+ # - Tables: table, tbody, td, tfoot, th, thead, tr
+ # Blocked HTML elements: These elements and their contents are removed from HTML payloads.
+ #
+ # - Document headers: head, title
+ # - Embeds: audio, embed, object, source, video
+ # - Frames: frame, frameset
+ # - Scripting: applet, script
+ # Other elements: Any elements that aren't listed are removed, but their contents are preserved.
+ "location": { # A geographic location that can be associated with a timeline item. # The geographic location associated with this item.
+ "kind": "mirror#location", # The type of resource. This is always mirror#location.
+ "displayName": "A String", # The name to be displayed. This may be a business name or a user-defined place, such as "Home".
+ "timestamp": "A String", # The time at which this location was captured, formatted according to RFC 3339.
+ "longitude": 3.14, # The longitude, in degrees.
+ "address": "A String", # The full address of the location.
+ "latitude": 3.14, # The latitude, in degrees.
+ "id": "A String", # The ID of the location.
+ "accuracy": 3.14, # The accuracy of the location fix in meters.
+ },
+ "sourceItemId": "A String", # Opaque string you can use to map a timeline item to data in your own service.
+ "inReplyTo": "A String", # If this item was generated as a reply to another item, this field will be set to the ID of the item being replied to. This can be used to attach a reply to the appropriate conversation or post.
+ "updated": "A String", # The time at which this item was last modified, formatted according to RFC 3339.
+ "canonicalUrl": "A String", # A canonical URL pointing to the canonical/high quality version of the data represented by the timeline item.
+ "recipients": [ # A list of users or groups that this item has been shared with.
+ { # A person or group that can be used as a creator or a contact.
+ "kind": "mirror#contact", # The type of resource. This is always mirror#contact.
+ "displayName": "A String", # The name to display for this contact.
+ "acceptTypes": [ # A list of MIME types that a contact supports. The contact will be shown to the user if any of its acceptTypes matches any of the types of the attachments on the item. If no acceptTypes are given, the contact will be shown for all items.
+ "A String",
+ ],
+ "type": "A String", # The type for this contact. This is used for sorting in UIs. Allowed values are:
+ # - INDIVIDUAL - Represents a single person. This is the default.
+ # - GROUP - Represents more than a single person.
+ "priority": 42, # Priority for the contact to determine ordering in a list of contacts. Contacts with higher priorities will be shown before ones with lower priorities.
+ "source": "A String", # The ID of the application that created this contact. This is populated by the API
+ "phoneNumber": "A String", # Primary phone number for the contact. This can be a fully-qualified number, with country calling code and area code, or a local number.
+ "imageUrls": [ # Set of image URLs to display for a contact. Most contacts will have a single image, but a "group" contact may include up to 8 image URLs and they will be resized and cropped into a mosaic on the client.
+ "A String",
+ ],
+ "id": "A String", # An ID for this contact. This is generated by the application and is treated as an opaque token.
+ },
+ ],
+ "kind": "mirror#timelineItem", # The type of resource. This is always mirror#timelineItem.
+ "created": "A String", # The time at which this item was created, formatted according to RFC 3339.
+ "htmlPages": [ # Additional pages of HTML content associated with this item. If this field is specified, the item will be displayed as a bundle, with the html field as the cover. It is an error to specify this field without specifying the html field.
+ "A String",
+ ],
+ "pinScore": 42, # For pinned items, this determines the order in which the item is displayed in the timeline, with a higher score appearing closer to the clock. Note: setting this field is currently not supported.
+ "speakableType": "A String", # A speakable description of the type of this item. This will be announced to the user prior to reading the content of the item in cases where the additional context is useful, for example when the user requests that the item be read aloud following a notification.
+ #
+ # This should be a short, simple noun phrase such as "Email", "Text message", or "Daily Planet News Update".
+ #
+ # Glassware are encouraged to populate this field for every timeline item, even if the item does not contain speakableText or text so that the user can learn the type of the item without looking at the screen.
+ "selfLink": "A String", # A URL that can be used to retrieve this item.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="insert">insert(body=None, media_body=None)</code>
+ <pre>Inserts a new item into the timeline.
+
+Args:
+ body: object, The request body.
+ The object takes the form of:
+
+{ # Each item in the user's timeline is represented as a TimelineItem JSON structure, described below.
+ "attachments": [ # A list of media attachments associated with this item. As a convenience, you can refer to attachments in your HTML payloads with the attachment or cid scheme. For example:
+ # - attachment: <img src="attachment:attachment_index"> where attachment_index is the 0-based index of this array.
+ # - cid: <img src="cid:attachment_id"> where attachment_id is the ID of the attachment.
+ { # Represents media content, such as a photo, that can be attached to a timeline item.
+ "contentUrl": "A String", # The URL for the content.
+ "contentType": "A String", # The MIME type of the attachment.
+ "id": "A String", # The ID of the attachment.
+ "isProcessingContent": True or False, # Indicates that the contentUrl is not available because the attachment content is still being processed. If the caller wishes to retrieve the content, it should try again later.
+ },
+ ],
+ "displayTime": "A String", # The time that should be displayed when this item is viewed in the timeline, formatted according to RFC 3339. This user's timeline is sorted chronologically on display time, so this will also determine where the item is displayed in the timeline. If not set by the service, the display time defaults to the updated time.
+ "creator": { # A person or group that can be used as a creator or a contact. # The user or group that created this item.
+ "kind": "mirror#contact", # The type of resource. This is always mirror#contact.
+ "displayName": "A String", # The name to display for this contact.
+ "acceptTypes": [ # A list of MIME types that a contact supports. The contact will be shown to the user if any of its acceptTypes matches any of the types of the attachments on the item. If no acceptTypes are given, the contact will be shown for all items.
+ "A String",
+ ],
+ "type": "A String", # The type for this contact. This is used for sorting in UIs. Allowed values are:
+ # - INDIVIDUAL - Represents a single person. This is the default.
+ # - GROUP - Represents more than a single person.
+ "priority": 42, # Priority for the contact to determine ordering in a list of contacts. Contacts with higher priorities will be shown before ones with lower priorities.
+ "source": "A String", # The ID of the application that created this contact. This is populated by the API
+ "phoneNumber": "A String", # Primary phone number for the contact. This can be a fully-qualified number, with country calling code and area code, or a local number.
+ "imageUrls": [ # Set of image URLs to display for a contact. Most contacts will have a single image, but a "group" contact may include up to 8 image URLs and they will be resized and cropped into a mosaic on the client.
+ "A String",
+ ],
+ "id": "A String", # An ID for this contact. This is generated by the application and is treated as an opaque token.
+ },
+ "text": "A String", # Text content of this item.
+ "menuItems": [ # A list of menu items that will be presented to the user when this item is selected in the timeline.
+ { # A custom menu item that can be presented to the user by a timeline item.
+ "action": "A String", # Controls the behavior when the user picks the menu option. Allowed values are:
+ # - CUSTOM - Custom action set by the service. When the user selects this menuItem, the API triggers a notification to your callbackUrl with the userActions.type set to CUSTOM and the userActions.payload set to the ID of this menu item. This is the default value.
+ # - Built-in actions:
+ # - REPLY - Initiate a reply to the timeline item using the voice recording UI. The creator attribute must be set in the timeline item for this menu to be available.
+ # - REPLY_ALL - Same behavior as REPLY. The original timeline item's recipients will be added to the reply item.
+ # - DELETE - Delete the timeline item.
+ # - SHARE - Share the timeline item with the available contacts.
+ # - READ_ALOUD - Read the timeline item's speakableText aloud; if this field is not set, read the text field; if none of those fields are set, this menu item is ignored.
+ # - VOICE_CALL - Initiate a phone call using the timeline item's creator.phone_number attribute as recipient.
+ # - NAVIGATE - Navigate to the timeline item's location.
+ # - TOGGLE_PINNED - Toggle the isPinned state of the timeline item.
+ "removeWhenSelected": True or False, # If set to true on a CUSTOM menu item, that item will be removed from the menu after it is selected.
+ "values": [ # For CUSTOM items, a list of values controlling the appearance of the menu item in each of its states. A value for the DEFAULT state must be provided. If the PENDING or CONFIRMED states are missing, they will not be shown.
+ { # A single value that is part of a MenuItem.
+ "iconUrl": "A String", # URL of an icon to display with the menu item.
+ "state": "A String", # The state that this value applies to. Allowed values are:
+ # - DEFAULT - Default value shown when displayed in the menuItems list.
+ # - PENDING - Value shown when the menuItem has been selected by the user but can still be cancelled.
+ # - CONFIRMED - Value shown when the menuItem has been selected by the user and can no longer be cancelled.
+ "displayName": "A String", # The name to display for the menu item.
+ },
+ ],
+ "id": "A String", # The ID for this menu item. This is generated by the application and is treated as an opaque token.
+ },
+ ],
+ "isBundleCover": True or False, # Whether this item is a bundle cover.
+ #
+ # If an item is marked as a bundle cover, it will be the entry point to the bundle of items that have the same bundleId as that item. It will be shown only on the main timeline — not within the opened bundle.
+ #
+ # On the main timeline, items that are shown are:
+ # - Items that have isBundleCover set to true
+ # - Items that do not have a bundleId In a bundle sub-timeline, items that are shown are:
+ # - Items that have the bundleId in question AND isBundleCover set to false
+ "etag": "A String", # ETag for this item.
+ "id": "A String", # The ID of the timeline item. This is unique within a user's timeline.
+ "isDeleted": True or False, # When true, indicates this item is deleted, and only the ID property is set.
+ "bundleId": "A String", # The bundle ID for this item. Services can specify a bundleId to group many items together. They appear under a single top-level item on the device.
+ "isPinned": True or False, # When true, indicates this item is pinned, which means it's grouped alongside "active" items like navigation and hangouts, on the opposite side of the home screen from historical (non-pinned) timeline items. You can allow the user to toggle the value of this property with the TOGGLE_PINNED built-in menu item.
+ "title": "A String", # The title of this item.
+ "notification": { # Controls how notifications for a timeline item are presented to the user. # Controls how notifications for this item are presented on the device. If this is missing, no notification will be generated.
+ "level": "A String", # Describes how important the notification is. Allowed values are:
+ # - DEFAULT - Notifications of default importance. A chime will be played to alert users.
+ "deliveryTime": "A String", # The time at which the notification should be delivered.
+ },
+ "speakableText": "A String", # The speakable version of the content of this item. Along with the READ_ALOUD menu item, use this field to provide text that would be clearer when read aloud, or to provide extended information to what is displayed visually on Glass.
+ #
+ # Glassware should also specify the speakableType field, which will be spoken before this text in cases where the additional context is useful, for example when the user requests that the item be read aloud following a notification.
+ "html": "A String", # HTML content for this item. If both text and html are provided for an item, the html will be rendered in the timeline.
+ # Allowed HTML elements - You can use these elements in your timeline cards.
+ #
+ # - Headers: h1, h2, h3, h4, h5, h6
+ # - Images: img
+ # - Lists: li, ol, ul
+ # - HTML5 semantics: article, aside, details, figure, figcaption, footer, header, nav, section, summary, time
+ # - Structural: blockquote, br, div, hr, p, span
+ # - Style: b, big, center, em, i, u, s, small, strike, strong, style, sub, sup
+ # - Tables: table, tbody, td, tfoot, th, thead, tr
+ # Blocked HTML elements: These elements and their contents are removed from HTML payloads.
+ #
+ # - Document headers: head, title
+ # - Embeds: audio, embed, object, source, video
+ # - Frames: frame, frameset
+ # - Scripting: applet, script
+ # Other elements: Any elements that aren't listed are removed, but their contents are preserved.
+ "location": { # A geographic location that can be associated with a timeline item. # The geographic location associated with this item.
+ "kind": "mirror#location", # The type of resource. This is always mirror#location.
+ "displayName": "A String", # The name to be displayed. This may be a business name or a user-defined place, such as "Home".
+ "timestamp": "A String", # The time at which this location was captured, formatted according to RFC 3339.
+ "longitude": 3.14, # The longitude, in degrees.
+ "address": "A String", # The full address of the location.
+ "latitude": 3.14, # The latitude, in degrees.
+ "id": "A String", # The ID of the location.
+ "accuracy": 3.14, # The accuracy of the location fix in meters.
+ },
+ "sourceItemId": "A String", # Opaque string you can use to map a timeline item to data in your own service.
+ "inReplyTo": "A String", # If this item was generated as a reply to another item, this field will be set to the ID of the item being replied to. This can be used to attach a reply to the appropriate conversation or post.
+ "updated": "A String", # The time at which this item was last modified, formatted according to RFC 3339.
+ "canonicalUrl": "A String", # A canonical URL pointing to the canonical/high quality version of the data represented by the timeline item.
+ "recipients": [ # A list of users or groups that this item has been shared with.
+ { # A person or group that can be used as a creator or a contact.
+ "kind": "mirror#contact", # The type of resource. This is always mirror#contact.
+ "displayName": "A String", # The name to display for this contact.
+ "acceptTypes": [ # A list of MIME types that a contact supports. The contact will be shown to the user if any of its acceptTypes matches any of the types of the attachments on the item. If no acceptTypes are given, the contact will be shown for all items.
+ "A String",
+ ],
+ "type": "A String", # The type for this contact. This is used for sorting in UIs. Allowed values are:
+ # - INDIVIDUAL - Represents a single person. This is the default.
+ # - GROUP - Represents more than a single person.
+ "priority": 42, # Priority for the contact to determine ordering in a list of contacts. Contacts with higher priorities will be shown before ones with lower priorities.
+ "source": "A String", # The ID of the application that created this contact. This is populated by the API
+ "phoneNumber": "A String", # Primary phone number for the contact. This can be a fully-qualified number, with country calling code and area code, or a local number.
+ "imageUrls": [ # Set of image URLs to display for a contact. Most contacts will have a single image, but a "group" contact may include up to 8 image URLs and they will be resized and cropped into a mosaic on the client.
+ "A String",
+ ],
+ "id": "A String", # An ID for this contact. This is generated by the application and is treated as an opaque token.
+ },
+ ],
+ "kind": "mirror#timelineItem", # The type of resource. This is always mirror#timelineItem.
+ "created": "A String", # The time at which this item was created, formatted according to RFC 3339.
+ "htmlPages": [ # Additional pages of HTML content associated with this item. If this field is specified, the item will be displayed as a bundle, with the html field as the cover. It is an error to specify this field without specifying the html field.
+ "A String",
+ ],
+ "pinScore": 42, # For pinned items, this determines the order in which the item is displayed in the timeline, with a higher score appearing closer to the clock. Note: setting this field is currently not supported.
+ "speakableType": "A String", # A speakable description of the type of this item. This will be announced to the user prior to reading the content of the item in cases where the additional context is useful, for example when the user requests that the item be read aloud following a notification.
+ #
+ # This should be a short, simple noun phrase such as "Email", "Text message", or "Daily Planet News Update".
+ #
+ # Glassware are encouraged to populate this field for every timeline item, even if the item does not contain speakableText or text so that the user can learn the type of the item without looking at the screen.
+ "selfLink": "A String", # A URL that can be used to retrieve this item.
+ }
+
+ media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
+
+Returns:
+ An object of the form:
+
+ { # Each item in the user's timeline is represented as a TimelineItem JSON structure, described below.
+ "attachments": [ # A list of media attachments associated with this item. As a convenience, you can refer to attachments in your HTML payloads with the attachment or cid scheme. For example:
+ # - attachment: <img src="attachment:attachment_index"> where attachment_index is the 0-based index of this array.
+ # - cid: <img src="cid:attachment_id"> where attachment_id is the ID of the attachment.
+ { # Represents media content, such as a photo, that can be attached to a timeline item.
+ "contentUrl": "A String", # The URL for the content.
+ "contentType": "A String", # The MIME type of the attachment.
+ "id": "A String", # The ID of the attachment.
+ "isProcessingContent": True or False, # Indicates that the contentUrl is not available because the attachment content is still being processed. If the caller wishes to retrieve the content, it should try again later.
+ },
+ ],
+ "displayTime": "A String", # The time that should be displayed when this item is viewed in the timeline, formatted according to RFC 3339. This user's timeline is sorted chronologically on display time, so this will also determine where the item is displayed in the timeline. If not set by the service, the display time defaults to the updated time.
+ "creator": { # A person or group that can be used as a creator or a contact. # The user or group that created this item.
+ "kind": "mirror#contact", # The type of resource. This is always mirror#contact.
+ "displayName": "A String", # The name to display for this contact.
+ "acceptTypes": [ # A list of MIME types that a contact supports. The contact will be shown to the user if any of its acceptTypes matches any of the types of the attachments on the item. If no acceptTypes are given, the contact will be shown for all items.
+ "A String",
+ ],
+ "type": "A String", # The type for this contact. This is used for sorting in UIs. Allowed values are:
+ # - INDIVIDUAL - Represents a single person. This is the default.
+ # - GROUP - Represents more than a single person.
+ "priority": 42, # Priority for the contact to determine ordering in a list of contacts. Contacts with higher priorities will be shown before ones with lower priorities.
+ "source": "A String", # The ID of the application that created this contact. This is populated by the API
+ "phoneNumber": "A String", # Primary phone number for the contact. This can be a fully-qualified number, with country calling code and area code, or a local number.
+ "imageUrls": [ # Set of image URLs to display for a contact. Most contacts will have a single image, but a "group" contact may include up to 8 image URLs and they will be resized and cropped into a mosaic on the client.
+ "A String",
+ ],
+ "id": "A String", # An ID for this contact. This is generated by the application and is treated as an opaque token.
+ },
+ "text": "A String", # Text content of this item.
+ "menuItems": [ # A list of menu items that will be presented to the user when this item is selected in the timeline.
+ { # A custom menu item that can be presented to the user by a timeline item.
+ "action": "A String", # Controls the behavior when the user picks the menu option. Allowed values are:
+ # - CUSTOM - Custom action set by the service. When the user selects this menuItem, the API triggers a notification to your callbackUrl with the userActions.type set to CUSTOM and the userActions.payload set to the ID of this menu item. This is the default value.
+ # - Built-in actions:
+ # - REPLY - Initiate a reply to the timeline item using the voice recording UI. The creator attribute must be set in the timeline item for this menu to be available.
+ # - REPLY_ALL - Same behavior as REPLY. The original timeline item's recipients will be added to the reply item.
+ # - DELETE - Delete the timeline item.
+ # - SHARE - Share the timeline item with the available contacts.
+ # - READ_ALOUD - Read the timeline item's speakableText aloud; if this field is not set, read the text field; if none of those fields are set, this menu item is ignored.
+ # - VOICE_CALL - Initiate a phone call using the timeline item's creator.phone_number attribute as recipient.
+ # - NAVIGATE - Navigate to the timeline item's location.
+ # - TOGGLE_PINNED - Toggle the isPinned state of the timeline item.
+ "removeWhenSelected": True or False, # If set to true on a CUSTOM menu item, that item will be removed from the menu after it is selected.
+ "values": [ # For CUSTOM items, a list of values controlling the appearance of the menu item in each of its states. A value for the DEFAULT state must be provided. If the PENDING or CONFIRMED states are missing, they will not be shown.
+ { # A single value that is part of a MenuItem.
+ "iconUrl": "A String", # URL of an icon to display with the menu item.
+ "state": "A String", # The state that this value applies to. Allowed values are:
+ # - DEFAULT - Default value shown when displayed in the menuItems list.
+ # - PENDING - Value shown when the menuItem has been selected by the user but can still be cancelled.
+ # - CONFIRMED - Value shown when the menuItem has been selected by the user and can no longer be cancelled.
+ "displayName": "A String", # The name to display for the menu item.
+ },
+ ],
+ "id": "A String", # The ID for this menu item. This is generated by the application and is treated as an opaque token.
+ },
+ ],
+ "isBundleCover": True or False, # Whether this item is a bundle cover.
+ #
+ # If an item is marked as a bundle cover, it will be the entry point to the bundle of items that have the same bundleId as that item. It will be shown only on the main timeline — not within the opened bundle.
+ #
+ # On the main timeline, items that are shown are:
+ # - Items that have isBundleCover set to true
+ # - Items that do not have a bundleId In a bundle sub-timeline, items that are shown are:
+ # - Items that have the bundleId in question AND isBundleCover set to false
+ "etag": "A String", # ETag for this item.
+ "id": "A String", # The ID of the timeline item. This is unique within a user's timeline.
+ "isDeleted": True or False, # When true, indicates this item is deleted, and only the ID property is set.
+ "bundleId": "A String", # The bundle ID for this item. Services can specify a bundleId to group many items together. They appear under a single top-level item on the device.
+ "isPinned": True or False, # When true, indicates this item is pinned, which means it's grouped alongside "active" items like navigation and hangouts, on the opposite side of the home screen from historical (non-pinned) timeline items. You can allow the user to toggle the value of this property with the TOGGLE_PINNED built-in menu item.
+ "title": "A String", # The title of this item.
+ "notification": { # Controls how notifications for a timeline item are presented to the user. # Controls how notifications for this item are presented on the device. If this is missing, no notification will be generated.
+ "level": "A String", # Describes how important the notification is. Allowed values are:
+ # - DEFAULT - Notifications of default importance. A chime will be played to alert users.
+ "deliveryTime": "A String", # The time at which the notification should be delivered.
+ },
+ "speakableText": "A String", # The speakable version of the content of this item. Along with the READ_ALOUD menu item, use this field to provide text that would be clearer when read aloud, or to provide extended information to what is displayed visually on Glass.
+ #
+ # Glassware should also specify the speakableType field, which will be spoken before this text in cases where the additional context is useful, for example when the user requests that the item be read aloud following a notification.
+ "html": "A String", # HTML content for this item. If both text and html are provided for an item, the html will be rendered in the timeline.
+ # Allowed HTML elements - You can use these elements in your timeline cards.
+ #
+ # - Headers: h1, h2, h3, h4, h5, h6
+ # - Images: img
+ # - Lists: li, ol, ul
+ # - HTML5 semantics: article, aside, details, figure, figcaption, footer, header, nav, section, summary, time
+ # - Structural: blockquote, br, div, hr, p, span
+ # - Style: b, big, center, em, i, u, s, small, strike, strong, style, sub, sup
+ # - Tables: table, tbody, td, tfoot, th, thead, tr
+ # Blocked HTML elements: These elements and their contents are removed from HTML payloads.
+ #
+ # - Document headers: head, title
+ # - Embeds: audio, embed, object, source, video
+ # - Frames: frame, frameset
+ # - Scripting: applet, script
+ # Other elements: Any elements that aren't listed are removed, but their contents are preserved.
+ "location": { # A geographic location that can be associated with a timeline item. # The geographic location associated with this item.
+ "kind": "mirror#location", # The type of resource. This is always mirror#location.
+ "displayName": "A String", # The name to be displayed. This may be a business name or a user-defined place, such as "Home".
+ "timestamp": "A String", # The time at which this location was captured, formatted according to RFC 3339.
+ "longitude": 3.14, # The longitude, in degrees.
+ "address": "A String", # The full address of the location.
+ "latitude": 3.14, # The latitude, in degrees.
+ "id": "A String", # The ID of the location.
+ "accuracy": 3.14, # The accuracy of the location fix in meters.
+ },
+ "sourceItemId": "A String", # Opaque string you can use to map a timeline item to data in your own service.
+ "inReplyTo": "A String", # If this item was generated as a reply to another item, this field will be set to the ID of the item being replied to. This can be used to attach a reply to the appropriate conversation or post.
+ "updated": "A String", # The time at which this item was last modified, formatted according to RFC 3339.
+ "canonicalUrl": "A String", # A canonical URL pointing to the canonical/high quality version of the data represented by the timeline item.
+ "recipients": [ # A list of users or groups that this item has been shared with.
+ { # A person or group that can be used as a creator or a contact.
+ "kind": "mirror#contact", # The type of resource. This is always mirror#contact.
+ "displayName": "A String", # The name to display for this contact.
+ "acceptTypes": [ # A list of MIME types that a contact supports. The contact will be shown to the user if any of its acceptTypes matches any of the types of the attachments on the item. If no acceptTypes are given, the contact will be shown for all items.
+ "A String",
+ ],
+ "type": "A String", # The type for this contact. This is used for sorting in UIs. Allowed values are:
+ # - INDIVIDUAL - Represents a single person. This is the default.
+ # - GROUP - Represents more than a single person.
+ "priority": 42, # Priority for the contact to determine ordering in a list of contacts. Contacts with higher priorities will be shown before ones with lower priorities.
+ "source": "A String", # The ID of the application that created this contact. This is populated by the API
+ "phoneNumber": "A String", # Primary phone number for the contact. This can be a fully-qualified number, with country calling code and area code, or a local number.
+ "imageUrls": [ # Set of image URLs to display for a contact. Most contacts will have a single image, but a "group" contact may include up to 8 image URLs and they will be resized and cropped into a mosaic on the client.
+ "A String",
+ ],
+ "id": "A String", # An ID for this contact. This is generated by the application and is treated as an opaque token.
+ },
+ ],
+ "kind": "mirror#timelineItem", # The type of resource. This is always mirror#timelineItem.
+ "created": "A String", # The time at which this item was created, formatted according to RFC 3339.
+ "htmlPages": [ # Additional pages of HTML content associated with this item. If this field is specified, the item will be displayed as a bundle, with the html field as the cover. It is an error to specify this field without specifying the html field.
+ "A String",
+ ],
+ "pinScore": 42, # For pinned items, this determines the order in which the item is displayed in the timeline, with a higher score appearing closer to the clock. Note: setting this field is currently not supported.
+ "speakableType": "A String", # A speakable description of the type of this item. This will be announced to the user prior to reading the content of the item in cases where the additional context is useful, for example when the user requests that the item be read aloud following a notification.
+ #
+ # This should be a short, simple noun phrase such as "Email", "Text message", or "Daily Planet News Update".
+ #
+ # Glassware are encouraged to populate this field for every timeline item, even if the item does not contain speakableText or text so that the user can learn the type of the item without looking at the screen.
+ "selfLink": "A String", # A URL that can be used to retrieve this item.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="list">list(orderBy=None, includeDeleted=None, pageToken=None, maxResults=None, pinnedOnly=None, sourceItemId=None, bundleId=None)</code>
+ <pre>Retrieves a list of timeline items for the authenticated user.
+
+Args:
+ orderBy: string, Controls the order in which timeline items are returned.
+ Allowed values
+ displayTime - Results will be ordered by displayTime (default). This is the same ordering as is used in the timeline on the device.
+ writeTime - Results will be ordered by the time at which they were last written to the data store.
+ includeDeleted: boolean, If true, tombstone records for deleted items will be returned.
+ pageToken: string, Token for the page of results to return.
+ maxResults: integer, The maximum number of items to include in the response, used for paging.
+ pinnedOnly: boolean, If true, only pinned items will be returned.
+ sourceItemId: string, If provided, only items with the given sourceItemId will be returned.
+ bundleId: string, If provided, only items with the given bundleId will be returned.
+
+Returns:
+ An object of the form:
+
+ { # A list of timeline items. This is the response from the server to GET requests on the timeline collection.
+ "nextPageToken": "A String", # The next page token. Provide this as the pageToken parameter in the request to retrieve the next page of results.
+ "items": [ # Items in the timeline.
+ { # Each item in the user's timeline is represented as a TimelineItem JSON structure, described below.
+ "attachments": [ # A list of media attachments associated with this item. As a convenience, you can refer to attachments in your HTML payloads with the attachment or cid scheme. For example:
+ # - attachment: <img src="attachment:attachment_index"> where attachment_index is the 0-based index of this array.
+ # - cid: <img src="cid:attachment_id"> where attachment_id is the ID of the attachment.
+ { # Represents media content, such as a photo, that can be attached to a timeline item.
+ "contentUrl": "A String", # The URL for the content.
+ "contentType": "A String", # The MIME type of the attachment.
+ "id": "A String", # The ID of the attachment.
+ "isProcessingContent": True or False, # Indicates that the contentUrl is not available because the attachment content is still being processed. If the caller wishes to retrieve the content, it should try again later.
+ },
+ ],
+ "displayTime": "A String", # The time that should be displayed when this item is viewed in the timeline, formatted according to RFC 3339. This user's timeline is sorted chronologically on display time, so this will also determine where the item is displayed in the timeline. If not set by the service, the display time defaults to the updated time.
+ "creator": { # A person or group that can be used as a creator or a contact. # The user or group that created this item.
+ "kind": "mirror#contact", # The type of resource. This is always mirror#contact.
+ "displayName": "A String", # The name to display for this contact.
+ "acceptTypes": [ # A list of MIME types that a contact supports. The contact will be shown to the user if any of its acceptTypes matches any of the types of the attachments on the item. If no acceptTypes are given, the contact will be shown for all items.
+ "A String",
+ ],
+ "type": "A String", # The type for this contact. This is used for sorting in UIs. Allowed values are:
+ # - INDIVIDUAL - Represents a single person. This is the default.
+ # - GROUP - Represents more than a single person.
+ "priority": 42, # Priority for the contact to determine ordering in a list of contacts. Contacts with higher priorities will be shown before ones with lower priorities.
+ "source": "A String", # The ID of the application that created this contact. This is populated by the API
+ "phoneNumber": "A String", # Primary phone number for the contact. This can be a fully-qualified number, with country calling code and area code, or a local number.
+ "imageUrls": [ # Set of image URLs to display for a contact. Most contacts will have a single image, but a "group" contact may include up to 8 image URLs and they will be resized and cropped into a mosaic on the client.
+ "A String",
+ ],
+ "id": "A String", # An ID for this contact. This is generated by the application and is treated as an opaque token.
+ },
+ "text": "A String", # Text content of this item.
+ "menuItems": [ # A list of menu items that will be presented to the user when this item is selected in the timeline.
+ { # A custom menu item that can be presented to the user by a timeline item.
+ "action": "A String", # Controls the behavior when the user picks the menu option. Allowed values are:
+ # - CUSTOM - Custom action set by the service. When the user selects this menuItem, the API triggers a notification to your callbackUrl with the userActions.type set to CUSTOM and the userActions.payload set to the ID of this menu item. This is the default value.
+ # - Built-in actions:
+ # - REPLY - Initiate a reply to the timeline item using the voice recording UI. The creator attribute must be set in the timeline item for this menu to be available.
+ # - REPLY_ALL - Same behavior as REPLY. The original timeline item's recipients will be added to the reply item.
+ # - DELETE - Delete the timeline item.
+ # - SHARE - Share the timeline item with the available contacts.
+ # - READ_ALOUD - Read the timeline item's speakableText aloud; if this field is not set, read the text field; if none of those fields are set, this menu item is ignored.
+ # - VOICE_CALL - Initiate a phone call using the timeline item's creator.phone_number attribute as recipient.
+ # - NAVIGATE - Navigate to the timeline item's location.
+ # - TOGGLE_PINNED - Toggle the isPinned state of the timeline item.
+ "removeWhenSelected": True or False, # If set to true on a CUSTOM menu item, that item will be removed from the menu after it is selected.
+ "values": [ # For CUSTOM items, a list of values controlling the appearance of the menu item in each of its states. A value for the DEFAULT state must be provided. If the PENDING or CONFIRMED states are missing, they will not be shown.
+ { # A single value that is part of a MenuItem.
+ "iconUrl": "A String", # URL of an icon to display with the menu item.
+ "state": "A String", # The state that this value applies to. Allowed values are:
+ # - DEFAULT - Default value shown when displayed in the menuItems list.
+ # - PENDING - Value shown when the menuItem has been selected by the user but can still be cancelled.
+ # - CONFIRMED - Value shown when the menuItem has been selected by the user and can no longer be cancelled.
+ "displayName": "A String", # The name to display for the menu item.
+ },
+ ],
+ "id": "A String", # The ID for this menu item. This is generated by the application and is treated as an opaque token.
+ },
+ ],
+ "isBundleCover": True or False, # Whether this item is a bundle cover.
+ #
+ # If an item is marked as a bundle cover, it will be the entry point to the bundle of items that have the same bundleId as that item. It will be shown only on the main timeline — not within the opened bundle.
+ #
+ # On the main timeline, items that are shown are:
+ # - Items that have isBundleCover set to true
+ # - Items that do not have a bundleId In a bundle sub-timeline, items that are shown are:
+ # - Items that have the bundleId in question AND isBundleCover set to false
+ "etag": "A String", # ETag for this item.
+ "id": "A String", # The ID of the timeline item. This is unique within a user's timeline.
+ "isDeleted": True or False, # When true, indicates this item is deleted, and only the ID property is set.
+ "bundleId": "A String", # The bundle ID for this item. Services can specify a bundleId to group many items together. They appear under a single top-level item on the device.
+ "isPinned": True or False, # When true, indicates this item is pinned, which means it's grouped alongside "active" items like navigation and hangouts, on the opposite side of the home screen from historical (non-pinned) timeline items. You can allow the user to toggle the value of this property with the TOGGLE_PINNED built-in menu item.
+ "title": "A String", # The title of this item.
+ "notification": { # Controls how notifications for a timeline item are presented to the user. # Controls how notifications for this item are presented on the device. If this is missing, no notification will be generated.
+ "level": "A String", # Describes how important the notification is. Allowed values are:
+ # - DEFAULT - Notifications of default importance. A chime will be played to alert users.
+ "deliveryTime": "A String", # The time at which the notification should be delivered.
+ },
+ "speakableText": "A String", # The speakable version of the content of this item. Along with the READ_ALOUD menu item, use this field to provide text that would be clearer when read aloud, or to provide extended information to what is displayed visually on Glass.
+ #
+ # Glassware should also specify the speakableType field, which will be spoken before this text in cases where the additional context is useful, for example when the user requests that the item be read aloud following a notification.
+ "html": "A String", # HTML content for this item. If both text and html are provided for an item, the html will be rendered in the timeline.
+ # Allowed HTML elements - You can use these elements in your timeline cards.
+ #
+ # - Headers: h1, h2, h3, h4, h5, h6
+ # - Images: img
+ # - Lists: li, ol, ul
+ # - HTML5 semantics: article, aside, details, figure, figcaption, footer, header, nav, section, summary, time
+ # - Structural: blockquote, br, div, hr, p, span
+ # - Style: b, big, center, em, i, u, s, small, strike, strong, style, sub, sup
+ # - Tables: table, tbody, td, tfoot, th, thead, tr
+ # Blocked HTML elements: These elements and their contents are removed from HTML payloads.
+ #
+ # - Document headers: head, title
+ # - Embeds: audio, embed, object, source, video
+ # - Frames: frame, frameset
+ # - Scripting: applet, script
+ # Other elements: Any elements that aren't listed are removed, but their contents are preserved.
+ "location": { # A geographic location that can be associated with a timeline item. # The geographic location associated with this item.
+ "kind": "mirror#location", # The type of resource. This is always mirror#location.
+ "displayName": "A String", # The name to be displayed. This may be a business name or a user-defined place, such as "Home".
+ "timestamp": "A String", # The time at which this location was captured, formatted according to RFC 3339.
+ "longitude": 3.14, # The longitude, in degrees.
+ "address": "A String", # The full address of the location.
+ "latitude": 3.14, # The latitude, in degrees.
+ "id": "A String", # The ID of the location.
+ "accuracy": 3.14, # The accuracy of the location fix in meters.
+ },
+ "sourceItemId": "A String", # Opaque string you can use to map a timeline item to data in your own service.
+ "inReplyTo": "A String", # If this item was generated as a reply to another item, this field will be set to the ID of the item being replied to. This can be used to attach a reply to the appropriate conversation or post.
+ "updated": "A String", # The time at which this item was last modified, formatted according to RFC 3339.
+ "canonicalUrl": "A String", # A canonical URL pointing to the canonical/high quality version of the data represented by the timeline item.
+ "recipients": [ # A list of users or groups that this item has been shared with.
+ { # A person or group that can be used as a creator or a contact.
+ "kind": "mirror#contact", # The type of resource. This is always mirror#contact.
+ "displayName": "A String", # The name to display for this contact.
+ "acceptTypes": [ # A list of MIME types that a contact supports. The contact will be shown to the user if any of its acceptTypes matches any of the types of the attachments on the item. If no acceptTypes are given, the contact will be shown for all items.
+ "A String",
+ ],
+ "type": "A String", # The type for this contact. This is used for sorting in UIs. Allowed values are:
+ # - INDIVIDUAL - Represents a single person. This is the default.
+ # - GROUP - Represents more than a single person.
+ "priority": 42, # Priority for the contact to determine ordering in a list of contacts. Contacts with higher priorities will be shown before ones with lower priorities.
+ "source": "A String", # The ID of the application that created this contact. This is populated by the API
+ "phoneNumber": "A String", # Primary phone number for the contact. This can be a fully-qualified number, with country calling code and area code, or a local number.
+ "imageUrls": [ # Set of image URLs to display for a contact. Most contacts will have a single image, but a "group" contact may include up to 8 image URLs and they will be resized and cropped into a mosaic on the client.
+ "A String",
+ ],
+ "id": "A String", # An ID for this contact. This is generated by the application and is treated as an opaque token.
+ },
+ ],
+ "kind": "mirror#timelineItem", # The type of resource. This is always mirror#timelineItem.
+ "created": "A String", # The time at which this item was created, formatted according to RFC 3339.
+ "htmlPages": [ # Additional pages of HTML content associated with this item. If this field is specified, the item will be displayed as a bundle, with the html field as the cover. It is an error to specify this field without specifying the html field.
+ "A String",
+ ],
+ "pinScore": 42, # For pinned items, this determines the order in which the item is displayed in the timeline, with a higher score appearing closer to the clock. Note: setting this field is currently not supported.
+ "speakableType": "A String", # A speakable description of the type of this item. This will be announced to the user prior to reading the content of the item in cases where the additional context is useful, for example when the user requests that the item be read aloud following a notification.
+ #
+ # This should be a short, simple noun phrase such as "Email", "Text message", or "Daily Planet News Update".
+ #
+ # Glassware are encouraged to populate this field for every timeline item, even if the item does not contain speakableText or text so that the user can learn the type of the item without looking at the screen.
+ "selfLink": "A String", # A URL that can be used to retrieve this item.
+ },
+ ],
+ "kind": "mirror#timeline", # The type of resource. This is always mirror#timeline.
+ }</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(id, body)</code>
+ <pre>Updates a timeline item in place. This method supports patch semantics.
+
+Args:
+ id: string, The ID of the timeline item. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # Each item in the user's timeline is represented as a TimelineItem JSON structure, described below.
+ "attachments": [ # A list of media attachments associated with this item. As a convenience, you can refer to attachments in your HTML payloads with the attachment or cid scheme. For example:
+ # - attachment: <img src="attachment:attachment_index"> where attachment_index is the 0-based index of this array.
+ # - cid: <img src="cid:attachment_id"> where attachment_id is the ID of the attachment.
+ { # Represents media content, such as a photo, that can be attached to a timeline item.
+ "contentUrl": "A String", # The URL for the content.
+ "contentType": "A String", # The MIME type of the attachment.
+ "id": "A String", # The ID of the attachment.
+ "isProcessingContent": True or False, # Indicates that the contentUrl is not available because the attachment content is still being processed. If the caller wishes to retrieve the content, it should try again later.
+ },
+ ],
+ "displayTime": "A String", # The time that should be displayed when this item is viewed in the timeline, formatted according to RFC 3339. This user's timeline is sorted chronologically on display time, so this will also determine where the item is displayed in the timeline. If not set by the service, the display time defaults to the updated time.
+ "creator": { # A person or group that can be used as a creator or a contact. # The user or group that created this item.
+ "kind": "mirror#contact", # The type of resource. This is always mirror#contact.
+ "displayName": "A String", # The name to display for this contact.
+ "acceptTypes": [ # A list of MIME types that a contact supports. The contact will be shown to the user if any of its acceptTypes matches any of the types of the attachments on the item. If no acceptTypes are given, the contact will be shown for all items.
+ "A String",
+ ],
+ "type": "A String", # The type for this contact. This is used for sorting in UIs. Allowed values are:
+ # - INDIVIDUAL - Represents a single person. This is the default.
+ # - GROUP - Represents more than a single person.
+ "priority": 42, # Priority for the contact to determine ordering in a list of contacts. Contacts with higher priorities will be shown before ones with lower priorities.
+ "source": "A String", # The ID of the application that created this contact. This is populated by the API
+ "phoneNumber": "A String", # Primary phone number for the contact. This can be a fully-qualified number, with country calling code and area code, or a local number.
+ "imageUrls": [ # Set of image URLs to display for a contact. Most contacts will have a single image, but a "group" contact may include up to 8 image URLs and they will be resized and cropped into a mosaic on the client.
+ "A String",
+ ],
+ "id": "A String", # An ID for this contact. This is generated by the application and is treated as an opaque token.
+ },
+ "text": "A String", # Text content of this item.
+ "menuItems": [ # A list of menu items that will be presented to the user when this item is selected in the timeline.
+ { # A custom menu item that can be presented to the user by a timeline item.
+ "action": "A String", # Controls the behavior when the user picks the menu option. Allowed values are:
+ # - CUSTOM - Custom action set by the service. When the user selects this menuItem, the API triggers a notification to your callbackUrl with the userActions.type set to CUSTOM and the userActions.payload set to the ID of this menu item. This is the default value.
+ # - Built-in actions:
+ # - REPLY - Initiate a reply to the timeline item using the voice recording UI. The creator attribute must be set in the timeline item for this menu to be available.
+ # - REPLY_ALL - Same behavior as REPLY. The original timeline item's recipients will be added to the reply item.
+ # - DELETE - Delete the timeline item.
+ # - SHARE - Share the timeline item with the available contacts.
+ # - READ_ALOUD - Read the timeline item's speakableText aloud; if this field is not set, read the text field; if none of those fields are set, this menu item is ignored.
+ # - VOICE_CALL - Initiate a phone call using the timeline item's creator.phone_number attribute as recipient.
+ # - NAVIGATE - Navigate to the timeline item's location.
+ # - TOGGLE_PINNED - Toggle the isPinned state of the timeline item.
+ "removeWhenSelected": True or False, # If set to true on a CUSTOM menu item, that item will be removed from the menu after it is selected.
+ "values": [ # For CUSTOM items, a list of values controlling the appearance of the menu item in each of its states. A value for the DEFAULT state must be provided. If the PENDING or CONFIRMED states are missing, they will not be shown.
+ { # A single value that is part of a MenuItem.
+ "iconUrl": "A String", # URL of an icon to display with the menu item.
+ "state": "A String", # The state that this value applies to. Allowed values are:
+ # - DEFAULT - Default value shown when displayed in the menuItems list.
+ # - PENDING - Value shown when the menuItem has been selected by the user but can still be cancelled.
+ # - CONFIRMED - Value shown when the menuItem has been selected by the user and can no longer be cancelled.
+ "displayName": "A String", # The name to display for the menu item.
+ },
+ ],
+ "id": "A String", # The ID for this menu item. This is generated by the application and is treated as an opaque token.
+ },
+ ],
+ "isBundleCover": True or False, # Whether this item is a bundle cover.
+ #
+ # If an item is marked as a bundle cover, it will be the entry point to the bundle of items that have the same bundleId as that item. It will be shown only on the main timeline — not within the opened bundle.
+ #
+ # On the main timeline, items that are shown are:
+ # - Items that have isBundleCover set to true
+ # - Items that do not have a bundleId In a bundle sub-timeline, items that are shown are:
+ # - Items that have the bundleId in question AND isBundleCover set to false
+ "etag": "A String", # ETag for this item.
+ "id": "A String", # The ID of the timeline item. This is unique within a user's timeline.
+ "isDeleted": True or False, # When true, indicates this item is deleted, and only the ID property is set.
+ "bundleId": "A String", # The bundle ID for this item. Services can specify a bundleId to group many items together. They appear under a single top-level item on the device.
+ "isPinned": True or False, # When true, indicates this item is pinned, which means it's grouped alongside "active" items like navigation and hangouts, on the opposite side of the home screen from historical (non-pinned) timeline items. You can allow the user to toggle the value of this property with the TOGGLE_PINNED built-in menu item.
+ "title": "A String", # The title of this item.
+ "notification": { # Controls how notifications for a timeline item are presented to the user. # Controls how notifications for this item are presented on the device. If this is missing, no notification will be generated.
+ "level": "A String", # Describes how important the notification is. Allowed values are:
+ # - DEFAULT - Notifications of default importance. A chime will be played to alert users.
+ "deliveryTime": "A String", # The time at which the notification should be delivered.
+ },
+ "speakableText": "A String", # The speakable version of the content of this item. Along with the READ_ALOUD menu item, use this field to provide text that would be clearer when read aloud, or to provide extended information to what is displayed visually on Glass.
+ #
+ # Glassware should also specify the speakableType field, which will be spoken before this text in cases where the additional context is useful, for example when the user requests that the item be read aloud following a notification.
+ "html": "A String", # HTML content for this item. If both text and html are provided for an item, the html will be rendered in the timeline.
+ # Allowed HTML elements - You can use these elements in your timeline cards.
+ #
+ # - Headers: h1, h2, h3, h4, h5, h6
+ # - Images: img
+ # - Lists: li, ol, ul
+ # - HTML5 semantics: article, aside, details, figure, figcaption, footer, header, nav, section, summary, time
+ # - Structural: blockquote, br, div, hr, p, span
+ # - Style: b, big, center, em, i, u, s, small, strike, strong, style, sub, sup
+ # - Tables: table, tbody, td, tfoot, th, thead, tr
+ # Blocked HTML elements: These elements and their contents are removed from HTML payloads.
+ #
+ # - Document headers: head, title
+ # - Embeds: audio, embed, object, source, video
+ # - Frames: frame, frameset
+ # - Scripting: applet, script
+ # Other elements: Any elements that aren't listed are removed, but their contents are preserved.
+ "location": { # A geographic location that can be associated with a timeline item. # The geographic location associated with this item.
+ "kind": "mirror#location", # The type of resource. This is always mirror#location.
+ "displayName": "A String", # The name to be displayed. This may be a business name or a user-defined place, such as "Home".
+ "timestamp": "A String", # The time at which this location was captured, formatted according to RFC 3339.
+ "longitude": 3.14, # The longitude, in degrees.
+ "address": "A String", # The full address of the location.
+ "latitude": 3.14, # The latitude, in degrees.
+ "id": "A String", # The ID of the location.
+ "accuracy": 3.14, # The accuracy of the location fix in meters.
+ },
+ "sourceItemId": "A String", # Opaque string you can use to map a timeline item to data in your own service.
+ "inReplyTo": "A String", # If this item was generated as a reply to another item, this field will be set to the ID of the item being replied to. This can be used to attach a reply to the appropriate conversation or post.
+ "updated": "A String", # The time at which this item was last modified, formatted according to RFC 3339.
+ "canonicalUrl": "A String", # A canonical URL pointing to the canonical/high quality version of the data represented by the timeline item.
+ "recipients": [ # A list of users or groups that this item has been shared with.
+ { # A person or group that can be used as a creator or a contact.
+ "kind": "mirror#contact", # The type of resource. This is always mirror#contact.
+ "displayName": "A String", # The name to display for this contact.
+ "acceptTypes": [ # A list of MIME types that a contact supports. The contact will be shown to the user if any of its acceptTypes matches any of the types of the attachments on the item. If no acceptTypes are given, the contact will be shown for all items.
+ "A String",
+ ],
+ "type": "A String", # The type for this contact. This is used for sorting in UIs. Allowed values are:
+ # - INDIVIDUAL - Represents a single person. This is the default.
+ # - GROUP - Represents more than a single person.
+ "priority": 42, # Priority for the contact to determine ordering in a list of contacts. Contacts with higher priorities will be shown before ones with lower priorities.
+ "source": "A String", # The ID of the application that created this contact. This is populated by the API
+ "phoneNumber": "A String", # Primary phone number for the contact. This can be a fully-qualified number, with country calling code and area code, or a local number.
+ "imageUrls": [ # Set of image URLs to display for a contact. Most contacts will have a single image, but a "group" contact may include up to 8 image URLs and they will be resized and cropped into a mosaic on the client.
+ "A String",
+ ],
+ "id": "A String", # An ID for this contact. This is generated by the application and is treated as an opaque token.
+ },
+ ],
+ "kind": "mirror#timelineItem", # The type of resource. This is always mirror#timelineItem.
+ "created": "A String", # The time at which this item was created, formatted according to RFC 3339.
+ "htmlPages": [ # Additional pages of HTML content associated with this item. If this field is specified, the item will be displayed as a bundle, with the html field as the cover. It is an error to specify this field without specifying the html field.
+ "A String",
+ ],
+ "pinScore": 42, # For pinned items, this determines the order in which the item is displayed in the timeline, with a higher score appearing closer to the clock. Note: setting this field is currently not supported.
+ "speakableType": "A String", # A speakable description of the type of this item. This will be announced to the user prior to reading the content of the item in cases where the additional context is useful, for example when the user requests that the item be read aloud following a notification.
+ #
+ # This should be a short, simple noun phrase such as "Email", "Text message", or "Daily Planet News Update".
+ #
+ # Glassware are encouraged to populate this field for every timeline item, even if the item does not contain speakableText or text so that the user can learn the type of the item without looking at the screen.
+ "selfLink": "A String", # A URL that can be used to retrieve this item.
+ }
+
+
+Returns:
+ An object of the form:
+
+ { # Each item in the user's timeline is represented as a TimelineItem JSON structure, described below.
+ "attachments": [ # A list of media attachments associated with this item. As a convenience, you can refer to attachments in your HTML payloads with the attachment or cid scheme. For example:
+ # - attachment: <img src="attachment:attachment_index"> where attachment_index is the 0-based index of this array.
+ # - cid: <img src="cid:attachment_id"> where attachment_id is the ID of the attachment.
+ { # Represents media content, such as a photo, that can be attached to a timeline item.
+ "contentUrl": "A String", # The URL for the content.
+ "contentType": "A String", # The MIME type of the attachment.
+ "id": "A String", # The ID of the attachment.
+ "isProcessingContent": True or False, # Indicates that the contentUrl is not available because the attachment content is still being processed. If the caller wishes to retrieve the content, it should try again later.
+ },
+ ],
+ "displayTime": "A String", # The time that should be displayed when this item is viewed in the timeline, formatted according to RFC 3339. This user's timeline is sorted chronologically on display time, so this will also determine where the item is displayed in the timeline. If not set by the service, the display time defaults to the updated time.
+ "creator": { # A person or group that can be used as a creator or a contact. # The user or group that created this item.
+ "kind": "mirror#contact", # The type of resource. This is always mirror#contact.
+ "displayName": "A String", # The name to display for this contact.
+ "acceptTypes": [ # A list of MIME types that a contact supports. The contact will be shown to the user if any of its acceptTypes matches any of the types of the attachments on the item. If no acceptTypes are given, the contact will be shown for all items.
+ "A String",
+ ],
+ "type": "A String", # The type for this contact. This is used for sorting in UIs. Allowed values are:
+ # - INDIVIDUAL - Represents a single person. This is the default.
+ # - GROUP - Represents more than a single person.
+ "priority": 42, # Priority for the contact to determine ordering in a list of contacts. Contacts with higher priorities will be shown before ones with lower priorities.
+ "source": "A String", # The ID of the application that created this contact. This is populated by the API
+ "phoneNumber": "A String", # Primary phone number for the contact. This can be a fully-qualified number, with country calling code and area code, or a local number.
+ "imageUrls": [ # Set of image URLs to display for a contact. Most contacts will have a single image, but a "group" contact may include up to 8 image URLs and they will be resized and cropped into a mosaic on the client.
+ "A String",
+ ],
+ "id": "A String", # An ID for this contact. This is generated by the application and is treated as an opaque token.
+ },
+ "text": "A String", # Text content of this item.
+ "menuItems": [ # A list of menu items that will be presented to the user when this item is selected in the timeline.
+ { # A custom menu item that can be presented to the user by a timeline item.
+ "action": "A String", # Controls the behavior when the user picks the menu option. Allowed values are:
+ # - CUSTOM - Custom action set by the service. When the user selects this menuItem, the API triggers a notification to your callbackUrl with the userActions.type set to CUSTOM and the userActions.payload set to the ID of this menu item. This is the default value.
+ # - Built-in actions:
+ # - REPLY - Initiate a reply to the timeline item using the voice recording UI. The creator attribute must be set in the timeline item for this menu to be available.
+ # - REPLY_ALL - Same behavior as REPLY. The original timeline item's recipients will be added to the reply item.
+ # - DELETE - Delete the timeline item.
+ # - SHARE - Share the timeline item with the available contacts.
+ # - READ_ALOUD - Read the timeline item's speakableText aloud; if this field is not set, read the text field; if none of those fields are set, this menu item is ignored.
+ # - VOICE_CALL - Initiate a phone call using the timeline item's creator.phone_number attribute as recipient.
+ # - NAVIGATE - Navigate to the timeline item's location.
+ # - TOGGLE_PINNED - Toggle the isPinned state of the timeline item.
+ "removeWhenSelected": True or False, # If set to true on a CUSTOM menu item, that item will be removed from the menu after it is selected.
+ "values": [ # For CUSTOM items, a list of values controlling the appearance of the menu item in each of its states. A value for the DEFAULT state must be provided. If the PENDING or CONFIRMED states are missing, they will not be shown.
+ { # A single value that is part of a MenuItem.
+ "iconUrl": "A String", # URL of an icon to display with the menu item.
+ "state": "A String", # The state that this value applies to. Allowed values are:
+ # - DEFAULT - Default value shown when displayed in the menuItems list.
+ # - PENDING - Value shown when the menuItem has been selected by the user but can still be cancelled.
+ # - CONFIRMED - Value shown when the menuItem has been selected by the user and can no longer be cancelled.
+ "displayName": "A String", # The name to display for the menu item.
+ },
+ ],
+ "id": "A String", # The ID for this menu item. This is generated by the application and is treated as an opaque token.
+ },
+ ],
+ "isBundleCover": True or False, # Whether this item is a bundle cover.
+ #
+ # If an item is marked as a bundle cover, it will be the entry point to the bundle of items that have the same bundleId as that item. It will be shown only on the main timeline — not within the opened bundle.
+ #
+ # On the main timeline, items that are shown are:
+ # - Items that have isBundleCover set to true
+ # - Items that do not have a bundleId In a bundle sub-timeline, items that are shown are:
+ # - Items that have the bundleId in question AND isBundleCover set to false
+ "etag": "A String", # ETag for this item.
+ "id": "A String", # The ID of the timeline item. This is unique within a user's timeline.
+ "isDeleted": True or False, # When true, indicates this item is deleted, and only the ID property is set.
+ "bundleId": "A String", # The bundle ID for this item. Services can specify a bundleId to group many items together. They appear under a single top-level item on the device.
+ "isPinned": True or False, # When true, indicates this item is pinned, which means it's grouped alongside "active" items like navigation and hangouts, on the opposite side of the home screen from historical (non-pinned) timeline items. You can allow the user to toggle the value of this property with the TOGGLE_PINNED built-in menu item.
+ "title": "A String", # The title of this item.
+ "notification": { # Controls how notifications for a timeline item are presented to the user. # Controls how notifications for this item are presented on the device. If this is missing, no notification will be generated.
+ "level": "A String", # Describes how important the notification is. Allowed values are:
+ # - DEFAULT - Notifications of default importance. A chime will be played to alert users.
+ "deliveryTime": "A String", # The time at which the notification should be delivered.
+ },
+ "speakableText": "A String", # The speakable version of the content of this item. Along with the READ_ALOUD menu item, use this field to provide text that would be clearer when read aloud, or to provide extended information to what is displayed visually on Glass.
+ #
+ # Glassware should also specify the speakableType field, which will be spoken before this text in cases where the additional context is useful, for example when the user requests that the item be read aloud following a notification.
+ "html": "A String", # HTML content for this item. If both text and html are provided for an item, the html will be rendered in the timeline.
+ # Allowed HTML elements - You can use these elements in your timeline cards.
+ #
+ # - Headers: h1, h2, h3, h4, h5, h6
+ # - Images: img
+ # - Lists: li, ol, ul
+ # - HTML5 semantics: article, aside, details, figure, figcaption, footer, header, nav, section, summary, time
+ # - Structural: blockquote, br, div, hr, p, span
+ # - Style: b, big, center, em, i, u, s, small, strike, strong, style, sub, sup
+ # - Tables: table, tbody, td, tfoot, th, thead, tr
+ # Blocked HTML elements: These elements and their contents are removed from HTML payloads.
+ #
+ # - Document headers: head, title
+ # - Embeds: audio, embed, object, source, video
+ # - Frames: frame, frameset
+ # - Scripting: applet, script
+ # Other elements: Any elements that aren't listed are removed, but their contents are preserved.
+ "location": { # A geographic location that can be associated with a timeline item. # The geographic location associated with this item.
+ "kind": "mirror#location", # The type of resource. This is always mirror#location.
+ "displayName": "A String", # The name to be displayed. This may be a business name or a user-defined place, such as "Home".
+ "timestamp": "A String", # The time at which this location was captured, formatted according to RFC 3339.
+ "longitude": 3.14, # The longitude, in degrees.
+ "address": "A String", # The full address of the location.
+ "latitude": 3.14, # The latitude, in degrees.
+ "id": "A String", # The ID of the location.
+ "accuracy": 3.14, # The accuracy of the location fix in meters.
+ },
+ "sourceItemId": "A String", # Opaque string you can use to map a timeline item to data in your own service.
+ "inReplyTo": "A String", # If this item was generated as a reply to another item, this field will be set to the ID of the item being replied to. This can be used to attach a reply to the appropriate conversation or post.
+ "updated": "A String", # The time at which this item was last modified, formatted according to RFC 3339.
+ "canonicalUrl": "A String", # A canonical URL pointing to the canonical/high quality version of the data represented by the timeline item.
+ "recipients": [ # A list of users or groups that this item has been shared with.
+ { # A person or group that can be used as a creator or a contact.
+ "kind": "mirror#contact", # The type of resource. This is always mirror#contact.
+ "displayName": "A String", # The name to display for this contact.
+ "acceptTypes": [ # A list of MIME types that a contact supports. The contact will be shown to the user if any of its acceptTypes matches any of the types of the attachments on the item. If no acceptTypes are given, the contact will be shown for all items.
+ "A String",
+ ],
+ "type": "A String", # The type for this contact. This is used for sorting in UIs. Allowed values are:
+ # - INDIVIDUAL - Represents a single person. This is the default.
+ # - GROUP - Represents more than a single person.
+ "priority": 42, # Priority for the contact to determine ordering in a list of contacts. Contacts with higher priorities will be shown before ones with lower priorities.
+ "source": "A String", # The ID of the application that created this contact. This is populated by the API
+ "phoneNumber": "A String", # Primary phone number for the contact. This can be a fully-qualified number, with country calling code and area code, or a local number.
+ "imageUrls": [ # Set of image URLs to display for a contact. Most contacts will have a single image, but a "group" contact may include up to 8 image URLs and they will be resized and cropped into a mosaic on the client.
+ "A String",
+ ],
+ "id": "A String", # An ID for this contact. This is generated by the application and is treated as an opaque token.
+ },
+ ],
+ "kind": "mirror#timelineItem", # The type of resource. This is always mirror#timelineItem.
+ "created": "A String", # The time at which this item was created, formatted according to RFC 3339.
+ "htmlPages": [ # Additional pages of HTML content associated with this item. If this field is specified, the item will be displayed as a bundle, with the html field as the cover. It is an error to specify this field without specifying the html field.
+ "A String",
+ ],
+ "pinScore": 42, # For pinned items, this determines the order in which the item is displayed in the timeline, with a higher score appearing closer to the clock. Note: setting this field is currently not supported.
+ "speakableType": "A String", # A speakable description of the type of this item. This will be announced to the user prior to reading the content of the item in cases where the additional context is useful, for example when the user requests that the item be read aloud following a notification.
+ #
+ # This should be a short, simple noun phrase such as "Email", "Text message", or "Daily Planet News Update".
+ #
+ # Glassware are encouraged to populate this field for every timeline item, even if the item does not contain speakableText or text so that the user can learn the type of the item without looking at the screen.
+ "selfLink": "A String", # A URL that can be used to retrieve this item.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="update">update(id, body=None, media_body=None)</code>
+ <pre>Updates a timeline item in place.
+
+Args:
+ id: string, The ID of the timeline item. (required)
+ body: object, The request body.
+ The object takes the form of:
+
+{ # Each item in the user's timeline is represented as a TimelineItem JSON structure, described below.
+ "attachments": [ # A list of media attachments associated with this item. As a convenience, you can refer to attachments in your HTML payloads with the attachment or cid scheme. For example:
+ # - attachment: <img src="attachment:attachment_index"> where attachment_index is the 0-based index of this array.
+ # - cid: <img src="cid:attachment_id"> where attachment_id is the ID of the attachment.
+ { # Represents media content, such as a photo, that can be attached to a timeline item.
+ "contentUrl": "A String", # The URL for the content.
+ "contentType": "A String", # The MIME type of the attachment.
+ "id": "A String", # The ID of the attachment.
+ "isProcessingContent": True or False, # Indicates that the contentUrl is not available because the attachment content is still being processed. If the caller wishes to retrieve the content, it should try again later.
+ },
+ ],
+ "displayTime": "A String", # The time that should be displayed when this item is viewed in the timeline, formatted according to RFC 3339. This user's timeline is sorted chronologically on display time, so this will also determine where the item is displayed in the timeline. If not set by the service, the display time defaults to the updated time.
+ "creator": { # A person or group that can be used as a creator or a contact. # The user or group that created this item.
+ "kind": "mirror#contact", # The type of resource. This is always mirror#contact.
+ "displayName": "A String", # The name to display for this contact.
+ "acceptTypes": [ # A list of MIME types that a contact supports. The contact will be shown to the user if any of its acceptTypes matches any of the types of the attachments on the item. If no acceptTypes are given, the contact will be shown for all items.
+ "A String",
+ ],
+ "type": "A String", # The type for this contact. This is used for sorting in UIs. Allowed values are:
+ # - INDIVIDUAL - Represents a single person. This is the default.
+ # - GROUP - Represents more than a single person.
+ "priority": 42, # Priority for the contact to determine ordering in a list of contacts. Contacts with higher priorities will be shown before ones with lower priorities.
+ "source": "A String", # The ID of the application that created this contact. This is populated by the API
+ "phoneNumber": "A String", # Primary phone number for the contact. This can be a fully-qualified number, with country calling code and area code, or a local number.
+ "imageUrls": [ # Set of image URLs to display for a contact. Most contacts will have a single image, but a "group" contact may include up to 8 image URLs and they will be resized and cropped into a mosaic on the client.
+ "A String",
+ ],
+ "id": "A String", # An ID for this contact. This is generated by the application and is treated as an opaque token.
+ },
+ "text": "A String", # Text content of this item.
+ "menuItems": [ # A list of menu items that will be presented to the user when this item is selected in the timeline.
+ { # A custom menu item that can be presented to the user by a timeline item.
+ "action": "A String", # Controls the behavior when the user picks the menu option. Allowed values are:
+ # - CUSTOM - Custom action set by the service. When the user selects this menuItem, the API triggers a notification to your callbackUrl with the userActions.type set to CUSTOM and the userActions.payload set to the ID of this menu item. This is the default value.
+ # - Built-in actions:
+ # - REPLY - Initiate a reply to the timeline item using the voice recording UI. The creator attribute must be set in the timeline item for this menu to be available.
+ # - REPLY_ALL - Same behavior as REPLY. The original timeline item's recipients will be added to the reply item.
+ # - DELETE - Delete the timeline item.
+ # - SHARE - Share the timeline item with the available contacts.
+ # - READ_ALOUD - Read the timeline item's speakableText aloud; if this field is not set, read the text field; if none of those fields are set, this menu item is ignored.
+ # - VOICE_CALL - Initiate a phone call using the timeline item's creator.phone_number attribute as recipient.
+ # - NAVIGATE - Navigate to the timeline item's location.
+ # - TOGGLE_PINNED - Toggle the isPinned state of the timeline item.
+ "removeWhenSelected": True or False, # If set to true on a CUSTOM menu item, that item will be removed from the menu after it is selected.
+ "values": [ # For CUSTOM items, a list of values controlling the appearance of the menu item in each of its states. A value for the DEFAULT state must be provided. If the PENDING or CONFIRMED states are missing, they will not be shown.
+ { # A single value that is part of a MenuItem.
+ "iconUrl": "A String", # URL of an icon to display with the menu item.
+ "state": "A String", # The state that this value applies to. Allowed values are:
+ # - DEFAULT - Default value shown when displayed in the menuItems list.
+ # - PENDING - Value shown when the menuItem has been selected by the user but can still be cancelled.
+ # - CONFIRMED - Value shown when the menuItem has been selected by the user and can no longer be cancelled.
+ "displayName": "A String", # The name to display for the menu item.
+ },
+ ],
+ "id": "A String", # The ID for this menu item. This is generated by the application and is treated as an opaque token.
+ },
+ ],
+ "isBundleCover": True or False, # Whether this item is a bundle cover.
+ #
+ # If an item is marked as a bundle cover, it will be the entry point to the bundle of items that have the same bundleId as that item. It will be shown only on the main timeline — not within the opened bundle.
+ #
+ # On the main timeline, items that are shown are:
+ # - Items that have isBundleCover set to true
+ # - Items that do not have a bundleId In a bundle sub-timeline, items that are shown are:
+ # - Items that have the bundleId in question AND isBundleCover set to false
+ "etag": "A String", # ETag for this item.
+ "id": "A String", # The ID of the timeline item. This is unique within a user's timeline.
+ "isDeleted": True or False, # When true, indicates this item is deleted, and only the ID property is set.
+ "bundleId": "A String", # The bundle ID for this item. Services can specify a bundleId to group many items together. They appear under a single top-level item on the device.
+ "isPinned": True or False, # When true, indicates this item is pinned, which means it's grouped alongside "active" items like navigation and hangouts, on the opposite side of the home screen from historical (non-pinned) timeline items. You can allow the user to toggle the value of this property with the TOGGLE_PINNED built-in menu item.
+ "title": "A String", # The title of this item.
+ "notification": { # Controls how notifications for a timeline item are presented to the user. # Controls how notifications for this item are presented on the device. If this is missing, no notification will be generated.
+ "level": "A String", # Describes how important the notification is. Allowed values are:
+ # - DEFAULT - Notifications of default importance. A chime will be played to alert users.
+ "deliveryTime": "A String", # The time at which the notification should be delivered.
+ },
+ "speakableText": "A String", # The speakable version of the content of this item. Along with the READ_ALOUD menu item, use this field to provide text that would be clearer when read aloud, or to provide extended information to what is displayed visually on Glass.
+ #
+ # Glassware should also specify the speakableType field, which will be spoken before this text in cases where the additional context is useful, for example when the user requests that the item be read aloud following a notification.
+ "html": "A String", # HTML content for this item. If both text and html are provided for an item, the html will be rendered in the timeline.
+ # Allowed HTML elements - You can use these elements in your timeline cards.
+ #
+ # - Headers: h1, h2, h3, h4, h5, h6
+ # - Images: img
+ # - Lists: li, ol, ul
+ # - HTML5 semantics: article, aside, details, figure, figcaption, footer, header, nav, section, summary, time
+ # - Structural: blockquote, br, div, hr, p, span
+ # - Style: b, big, center, em, i, u, s, small, strike, strong, style, sub, sup
+ # - Tables: table, tbody, td, tfoot, th, thead, tr
+ # Blocked HTML elements: These elements and their contents are removed from HTML payloads.
+ #
+ # - Document headers: head, title
+ # - Embeds: audio, embed, object, source, video
+ # - Frames: frame, frameset
+ # - Scripting: applet, script
+ # Other elements: Any elements that aren't listed are removed, but their contents are preserved.
+ "location": { # A geographic location that can be associated with a timeline item. # The geographic location associated with this item.
+ "kind": "mirror#location", # The type of resource. This is always mirror#location.
+ "displayName": "A String", # The name to be displayed. This may be a business name or a user-defined place, such as "Home".
+ "timestamp": "A String", # The time at which this location was captured, formatted according to RFC 3339.
+ "longitude": 3.14, # The longitude, in degrees.
+ "address": "A String", # The full address of the location.
+ "latitude": 3.14, # The latitude, in degrees.
+ "id": "A String", # The ID of the location.
+ "accuracy": 3.14, # The accuracy of the location fix in meters.
+ },
+ "sourceItemId": "A String", # Opaque string you can use to map a timeline item to data in your own service.
+ "inReplyTo": "A String", # If this item was generated as a reply to another item, this field will be set to the ID of the item being replied to. This can be used to attach a reply to the appropriate conversation or post.
+ "updated": "A String", # The time at which this item was last modified, formatted according to RFC 3339.
+ "canonicalUrl": "A String", # A canonical URL pointing to the canonical/high quality version of the data represented by the timeline item.
+ "recipients": [ # A list of users or groups that this item has been shared with.
+ { # A person or group that can be used as a creator or a contact.
+ "kind": "mirror#contact", # The type of resource. This is always mirror#contact.
+ "displayName": "A String", # The name to display for this contact.
+ "acceptTypes": [ # A list of MIME types that a contact supports. The contact will be shown to the user if any of its acceptTypes matches any of the types of the attachments on the item. If no acceptTypes are given, the contact will be shown for all items.
+ "A String",
+ ],
+ "type": "A String", # The type for this contact. This is used for sorting in UIs. Allowed values are:
+ # - INDIVIDUAL - Represents a single person. This is the default.
+ # - GROUP - Represents more than a single person.
+ "priority": 42, # Priority for the contact to determine ordering in a list of contacts. Contacts with higher priorities will be shown before ones with lower priorities.
+ "source": "A String", # The ID of the application that created this contact. This is populated by the API
+ "phoneNumber": "A String", # Primary phone number for the contact. This can be a fully-qualified number, with country calling code and area code, or a local number.
+ "imageUrls": [ # Set of image URLs to display for a contact. Most contacts will have a single image, but a "group" contact may include up to 8 image URLs and they will be resized and cropped into a mosaic on the client.
+ "A String",
+ ],
+ "id": "A String", # An ID for this contact. This is generated by the application and is treated as an opaque token.
+ },
+ ],
+ "kind": "mirror#timelineItem", # The type of resource. This is always mirror#timelineItem.
+ "created": "A String", # The time at which this item was created, formatted according to RFC 3339.
+ "htmlPages": [ # Additional pages of HTML content associated with this item. If this field is specified, the item will be displayed as a bundle, with the html field as the cover. It is an error to specify this field without specifying the html field.
+ "A String",
+ ],
+ "pinScore": 42, # For pinned items, this determines the order in which the item is displayed in the timeline, with a higher score appearing closer to the clock. Note: setting this field is currently not supported.
+ "speakableType": "A String", # A speakable description of the type of this item. This will be announced to the user prior to reading the content of the item in cases where the additional context is useful, for example when the user requests that the item be read aloud following a notification.
+ #
+ # This should be a short, simple noun phrase such as "Email", "Text message", or "Daily Planet News Update".
+ #
+ # Glassware are encouraged to populate this field for every timeline item, even if the item does not contain speakableText or text so that the user can learn the type of the item without looking at the screen.
+ "selfLink": "A String", # A URL that can be used to retrieve this item.
+ }
+
+ media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
+
+Returns:
+ An object of the form:
+
+ { # Each item in the user's timeline is represented as a TimelineItem JSON structure, described below.
+ "attachments": [ # A list of media attachments associated with this item. As a convenience, you can refer to attachments in your HTML payloads with the attachment or cid scheme. For example:
+ # - attachment: <img src="attachment:attachment_index"> where attachment_index is the 0-based index of this array.
+ # - cid: <img src="cid:attachment_id"> where attachment_id is the ID of the attachment.
+ { # Represents media content, such as a photo, that can be attached to a timeline item.
+ "contentUrl": "A String", # The URL for the content.
+ "contentType": "A String", # The MIME type of the attachment.
+ "id": "A String", # The ID of the attachment.
+ "isProcessingContent": True or False, # Indicates that the contentUrl is not available because the attachment content is still being processed. If the caller wishes to retrieve the content, it should try again later.
+ },
+ ],
+ "displayTime": "A String", # The time that should be displayed when this item is viewed in the timeline, formatted according to RFC 3339. This user's timeline is sorted chronologically on display time, so this will also determine where the item is displayed in the timeline. If not set by the service, the display time defaults to the updated time.
+ "creator": { # A person or group that can be used as a creator or a contact. # The user or group that created this item.
+ "kind": "mirror#contact", # The type of resource. This is always mirror#contact.
+ "displayName": "A String", # The name to display for this contact.
+ "acceptTypes": [ # A list of MIME types that a contact supports. The contact will be shown to the user if any of its acceptTypes matches any of the types of the attachments on the item. If no acceptTypes are given, the contact will be shown for all items.
+ "A String",
+ ],
+ "type": "A String", # The type for this contact. This is used for sorting in UIs. Allowed values are:
+ # - INDIVIDUAL - Represents a single person. This is the default.
+ # - GROUP - Represents more than a single person.
+ "priority": 42, # Priority for the contact to determine ordering in a list of contacts. Contacts with higher priorities will be shown before ones with lower priorities.
+ "source": "A String", # The ID of the application that created this contact. This is populated by the API
+ "phoneNumber": "A String", # Primary phone number for the contact. This can be a fully-qualified number, with country calling code and area code, or a local number.
+ "imageUrls": [ # Set of image URLs to display for a contact. Most contacts will have a single image, but a "group" contact may include up to 8 image URLs and they will be resized and cropped into a mosaic on the client.
+ "A String",
+ ],
+ "id": "A String", # An ID for this contact. This is generated by the application and is treated as an opaque token.
+ },
+ "text": "A String", # Text content of this item.
+ "menuItems": [ # A list of menu items that will be presented to the user when this item is selected in the timeline.
+ { # A custom menu item that can be presented to the user by a timeline item.
+ "action": "A String", # Controls the behavior when the user picks the menu option. Allowed values are:
+ # - CUSTOM - Custom action set by the service. When the user selects this menuItem, the API triggers a notification to your callbackUrl with the userActions.type set to CUSTOM and the userActions.payload set to the ID of this menu item. This is the default value.
+ # - Built-in actions:
+ # - REPLY - Initiate a reply to the timeline item using the voice recording UI. The creator attribute must be set in the timeline item for this menu to be available.
+ # - REPLY_ALL - Same behavior as REPLY. The original timeline item's recipients will be added to the reply item.
+ # - DELETE - Delete the timeline item.
+ # - SHARE - Share the timeline item with the available contacts.
+ # - READ_ALOUD - Read the timeline item's speakableText aloud; if this field is not set, read the text field; if none of those fields are set, this menu item is ignored.
+ # - VOICE_CALL - Initiate a phone call using the timeline item's creator.phone_number attribute as recipient.
+ # - NAVIGATE - Navigate to the timeline item's location.
+ # - TOGGLE_PINNED - Toggle the isPinned state of the timeline item.
+ "removeWhenSelected": True or False, # If set to true on a CUSTOM menu item, that item will be removed from the menu after it is selected.
+ "values": [ # For CUSTOM items, a list of values controlling the appearance of the menu item in each of its states. A value for the DEFAULT state must be provided. If the PENDING or CONFIRMED states are missing, they will not be shown.
+ { # A single value that is part of a MenuItem.
+ "iconUrl": "A String", # URL of an icon to display with the menu item.
+ "state": "A String", # The state that this value applies to. Allowed values are:
+ # - DEFAULT - Default value shown when displayed in the menuItems list.
+ # - PENDING - Value shown when the menuItem has been selected by the user but can still be cancelled.
+ # - CONFIRMED - Value shown when the menuItem has been selected by the user and can no longer be cancelled.
+ "displayName": "A String", # The name to display for the menu item.
+ },
+ ],
+ "id": "A String", # The ID for this menu item. This is generated by the application and is treated as an opaque token.
+ },
+ ],
+ "isBundleCover": True or False, # Whether this item is a bundle cover.
+ #
+ # If an item is marked as a bundle cover, it will be the entry point to the bundle of items that have the same bundleId as that item. It will be shown only on the main timeline — not within the opened bundle.
+ #
+ # On the main timeline, items that are shown are:
+ # - Items that have isBundleCover set to true
+ # - Items that do not have a bundleId In a bundle sub-timeline, items that are shown are:
+ # - Items that have the bundleId in question AND isBundleCover set to false
+ "etag": "A String", # ETag for this item.
+ "id": "A String", # The ID of the timeline item. This is unique within a user's timeline.
+ "isDeleted": True or False, # When true, indicates this item is deleted, and only the ID property is set.
+ "bundleId": "A String", # The bundle ID for this item. Services can specify a bundleId to group many items together. They appear under a single top-level item on the device.
+ "isPinned": True or False, # When true, indicates this item is pinned, which means it's grouped alongside "active" items like navigation and hangouts, on the opposite side of the home screen from historical (non-pinned) timeline items. You can allow the user to toggle the value of this property with the TOGGLE_PINNED built-in menu item.
+ "title": "A String", # The title of this item.
+ "notification": { # Controls how notifications for a timeline item are presented to the user. # Controls how notifications for this item are presented on the device. If this is missing, no notification will be generated.
+ "level": "A String", # Describes how important the notification is. Allowed values are:
+ # - DEFAULT - Notifications of default importance. A chime will be played to alert users.
+ "deliveryTime": "A String", # The time at which the notification should be delivered.
+ },
+ "speakableText": "A String", # The speakable version of the content of this item. Along with the READ_ALOUD menu item, use this field to provide text that would be clearer when read aloud, or to provide extended information to what is displayed visually on Glass.
+ #
+ # Glassware should also specify the speakableType field, which will be spoken before this text in cases where the additional context is useful, for example when the user requests that the item be read aloud following a notification.
+ "html": "A String", # HTML content for this item. If both text and html are provided for an item, the html will be rendered in the timeline.
+ # Allowed HTML elements - You can use these elements in your timeline cards.
+ #
+ # - Headers: h1, h2, h3, h4, h5, h6
+ # - Images: img
+ # - Lists: li, ol, ul
+ # - HTML5 semantics: article, aside, details, figure, figcaption, footer, header, nav, section, summary, time
+ # - Structural: blockquote, br, div, hr, p, span
+ # - Style: b, big, center, em, i, u, s, small, strike, strong, style, sub, sup
+ # - Tables: table, tbody, td, tfoot, th, thead, tr
+ # Blocked HTML elements: These elements and their contents are removed from HTML payloads.
+ #
+ # - Document headers: head, title
+ # - Embeds: audio, embed, object, source, video
+ # - Frames: frame, frameset
+ # - Scripting: applet, script
+ # Other elements: Any elements that aren't listed are removed, but their contents are preserved.
+ "location": { # A geographic location that can be associated with a timeline item. # The geographic location associated with this item.
+ "kind": "mirror#location", # The type of resource. This is always mirror#location.
+ "displayName": "A String", # The name to be displayed. This may be a business name or a user-defined place, such as "Home".
+ "timestamp": "A String", # The time at which this location was captured, formatted according to RFC 3339.
+ "longitude": 3.14, # The longitude, in degrees.
+ "address": "A String", # The full address of the location.
+ "latitude": 3.14, # The latitude, in degrees.
+ "id": "A String", # The ID of the location.
+ "accuracy": 3.14, # The accuracy of the location fix in meters.
+ },
+ "sourceItemId": "A String", # Opaque string you can use to map a timeline item to data in your own service.
+ "inReplyTo": "A String", # If this item was generated as a reply to another item, this field will be set to the ID of the item being replied to. This can be used to attach a reply to the appropriate conversation or post.
+ "updated": "A String", # The time at which this item was last modified, formatted according to RFC 3339.
+ "canonicalUrl": "A String", # A canonical URL pointing to the canonical/high quality version of the data represented by the timeline item.
+ "recipients": [ # A list of users or groups that this item has been shared with.
+ { # A person or group that can be used as a creator or a contact.
+ "kind": "mirror#contact", # The type of resource. This is always mirror#contact.
+ "displayName": "A String", # The name to display for this contact.
+ "acceptTypes": [ # A list of MIME types that a contact supports. The contact will be shown to the user if any of its acceptTypes matches any of the types of the attachments on the item. If no acceptTypes are given, the contact will be shown for all items.
+ "A String",
+ ],
+ "type": "A String", # The type for this contact. This is used for sorting in UIs. Allowed values are:
+ # - INDIVIDUAL - Represents a single person. This is the default.
+ # - GROUP - Represents more than a single person.
+ "priority": 42, # Priority for the contact to determine ordering in a list of contacts. Contacts with higher priorities will be shown before ones with lower priorities.
+ "source": "A String", # The ID of the application that created this contact. This is populated by the API
+ "phoneNumber": "A String", # Primary phone number for the contact. This can be a fully-qualified number, with country calling code and area code, or a local number.
+ "imageUrls": [ # Set of image URLs to display for a contact. Most contacts will have a single image, but a "group" contact may include up to 8 image URLs and they will be resized and cropped into a mosaic on the client.
+ "A String",
+ ],
+ "id": "A String", # An ID for this contact. This is generated by the application and is treated as an opaque token.
+ },
+ ],
+ "kind": "mirror#timelineItem", # The type of resource. This is always mirror#timelineItem.
+ "created": "A String", # The time at which this item was created, formatted according to RFC 3339.
+ "htmlPages": [ # Additional pages of HTML content associated with this item. If this field is specified, the item will be displayed as a bundle, with the html field as the cover. It is an error to specify this field without specifying the html field.
+ "A String",
+ ],
+ "pinScore": 42, # For pinned items, this determines the order in which the item is displayed in the timeline, with a higher score appearing closer to the clock. Note: setting this field is currently not supported.
+ "speakableType": "A String", # A speakable description of the type of this item. This will be announced to the user prior to reading the content of the item in cases where the additional context is useful, for example when the user requests that the item be read aloud following a notification.
+ #
+ # This should be a short, simple noun phrase such as "Email", "Text message", or "Daily Planet News Update".
+ #
+ # Glassware are encouraged to populate this field for every timeline item, even if the item does not contain speakableText or text so that the user can learn the type of the item without looking at the screen.
+ "selfLink": "A String", # A URL that can be used to retrieve this item.
+ }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/pagespeedonline_v1.html b/docs/dyn/pagespeedonline_v1.html
index 26abb4d..4b0abf3 100644
--- a/docs/dyn/pagespeedonline_v1.html
+++ b/docs/dyn/pagespeedonline_v1.html
@@ -72,7 +72,7 @@
</style>
-<h1><a href="pagespeedonline_v1.html">Page Speed Online API</a></h1>
+<h1><a href="pagespeedonline_v1.html">PageSpeed Insights API</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
<code><a href="pagespeedonline_v1.pagespeedapi.html">pagespeedapi()</a></code>
diff --git a/docs/dyn/pagespeedonline_v1.pagespeedapi.html b/docs/dyn/pagespeedonline_v1.pagespeedapi.html
index a8c12da..aa269a2 100644
--- a/docs/dyn/pagespeedonline_v1.pagespeedapi.html
+++ b/docs/dyn/pagespeedonline_v1.pagespeedapi.html
@@ -72,30 +72,51 @@
</style>
-<h1><a href="pagespeedonline_v1.html">Page Speed Online API</a> . <a href="pagespeedonline_v1.pagespeedapi.html">pagespeedapi</a></h1>
+<h1><a href="pagespeedonline_v1.html">PageSpeed Insights API</a> . <a href="pagespeedonline_v1.pagespeedapi.html">pagespeedapi</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
- <code><a href="#runpagespeed">runpagespeed(url, locale=None, rule=None, strategy=None)</a></code></p>
+ <code><a href="#runpagespeed">runpagespeed(url, screenshot=None, locale=None, rule=None, strategy=None, filter_third_party_resources=None)</a></code></p>
<p class="firstline">Runs Page Speed analysis on the page at the specified URL, and returns a Page Speed score, a list of suggestions to make that page faster, and other information.</p>
<h3>Method Details</h3>
<div class="method">
- <code class="details" id="runpagespeed">runpagespeed(url, locale=None, rule=None, strategy=None)</code>
+ <code class="details" id="runpagespeed">runpagespeed(url, screenshot=None, locale=None, rule=None, strategy=None, filter_third_party_resources=None)</code>
<pre>Runs Page Speed analysis on the page at the specified URL, and returns a Page Speed score, a list of suggestions to make that page faster, and other information.
Args:
url: string, The URL to fetch and analyze (required)
+ screenshot: boolean, Indicates if binary data containing a screenshot should be included
locale: string, The locale used to localize formatted results
rule: string, A Page Speed rule to run; if none are given, all rules are run (repeated)
strategy: string, The analysis strategy to use
Allowed values
desktop - Fetch and analyze the URL for desktop browsers
mobile - Fetch and analyze the URL for mobile devices
+ filter_third_party_resources: boolean, Indicates if third party resources should be filtered out before PageSpeed analysis.
Returns:
An object of the form:
{
+ "notice": "If you would like to use this API to perform programmatic PageSpeed analysis, please use your own PageSpeed Insights API key. See https://developers.google.com/speed/docs/insights/v1/getting_started for additional details.", # Notice to discourage users from reusing API keys.
+ "responseCode": 42, # Response code for the document. 200 indicates a normal page load. 4xx/5xx indicates an error.
+ "screenshot": { # Base64 encoded screenshot of the page that was analyzed.
+ "width": 42, # Width of screenshot in pixels.
+ "data": "A String", # Image data base64 encoded.
+ "mime_type": "A String", # Mime type of image data. E.g. "image/jpeg".
+ "height": 42, # Height of screenshot in pixels.
+ },
+ "title": "A String", # Title of the page, as displayed in the browser's title bar.
+ "version": { # The version of the Page Speed SDK used to generate these results.
+ "major": 42, # The major version number of the Page Speed SDK used to generate these results.
+ "minor": 42, # The minor version number of the Page Speed SDK used to generate these results.
+ },
+ "request": { # Echo of certain request parameters.
+ "url": "A String",
+ "filter_third_party_resources": "A String",
+ "strategy": "A String",
+ },
"kind": "pagespeedonline#result", # Kind of result.
+ "score": 42, # The Page Speed Score (0-100), which indicates how much faster a page could be. A high score indicates little room for improvement, while a lower score indicates more room for improvement.
"formattedResults": { # Localized Page Speed results. Contains a ruleResults entry for each Page Speed rule instantiated and run by the server.
"locale": "A String", # The locale of the formattedResults, e.g. "en_US".
"ruleResults": { # Dictionary of formatted rule results, with one entry for each Page Speed rule instantiated and run by the server.
@@ -143,13 +164,6 @@
},
},
},
- "title": "A String", # Title of the page, as displayed in the browser's title bar.
- "version": { # The version of the Page Speed SDK used to generate these results.
- "major": 42, # The major version number of the Page Speed SDK used to generate these results.
- "minor": 42, # The minor version number of the Page Speed SDK used to generate these results.
- },
- "score": 42, # The Page Speed Score (0-100), which indicates how much faster a page could be. A high score indicates little room for improvement, while a lower score indicates more room for improvement.
- "responseCode": 42, # Response code for the document. 200 indicates a normal page load. 4xx/5xx indicates an error.
"invalidRules": [ # List of rules that were specified in the request, but which the server did not know how to instantiate.
"A String",
],
diff --git a/docs/dyn/plus_v1.activities.html b/docs/dyn/plus_v1.activities.html
index bb82cd4..338d267 100644
--- a/docs/dyn/plus_v1.activities.html
+++ b/docs/dyn/plus_v1.activities.html
@@ -117,8 +117,8 @@
},
"attachments": [ # The media objects attached to this activity.
{
- "displayName": "A String", # The title of the attachment (such as a photo caption or an article title).
- "thumbnails": [ # If the attachment is an album, potential additional thumbnails from the album.
+ "displayName": "A String", # The title of the attachment, such as a photo caption or an article title.
+ "thumbnails": [ # If the attachment is an album, this property is a list of potential additional thumbnails from the album.
{
"url": "A String", # URL to the webpage containing the image.
"image": { # Image resource.
@@ -149,34 +149,34 @@
"type": "A String", # Media type of the link.
},
"id": "A String", # The ID of the attachment.
- "objectType": "A String", # The type of media object. Possible values are:
+ "objectType": "A String", # The type of media object. Possible values include, but are not limited to, the following values:
# - "photo" - A photo.
# - "album" - A photo album.
# - "video" - A video.
# - "article" - An article, specified by a link.
},
],
- "originalContent": "A String", # The content (text) as provided by the author, stored without any HTML formatting. When creating or updating an activity, this value must be supplied as plain text in the request.
+ "originalContent": "A String", # The content (text) as provided by the author, which is stored without any HTML formatting. When creating or updating an activity, this value must be supplied as plain text in the request.
"plusoners": { # People who +1'd this activity.
"totalItems": 42, # Total number of people who +1'd this activity.
"selfLink": "A String", # The URL for the collection of people who +1'd this activity.
},
- "actor": { # If this activity's object is itself another activity (for example, when a person reshares an activity), this property specifies the original activity's actor.
+ "actor": { # If this activity's object is itself another activity, such as when a person reshares an activity, this property specifies the original activity's actor.
"url": "A String", # A link to the original actor's Google profile.
"image": { # The image representation of the original actor.
"url": "A String", # A URL that points to a thumbnail photo of the original actor.
},
- "displayName": "A String", # The original actor's name, suitable for display.
+ "displayName": "A String", # The original actor's name, which is suitable for display.
"id": "A String", # ID of the original actor.
},
- "content": "A String", # The HTML-formatted content, suitable for display.
+ "content": "A String", # The HTML-formatted content, which is suitable for display.
"url": "A String", # The URL that points to the linked resource.
"replies": { # Comments in reply to this activity.
"totalItems": 42, # Total number of comments on this activity.
"selfLink": "A String", # The URL for the collection of comments in reply to this activity.
},
- "id": "A String", # The ID of the object. When resharing an activity, this is the ID of the activity being reshared.
- "objectType": "A String", # The type of the object. Possible values are:
+ "id": "A String", # The ID of the object. When resharing an activity, this is the ID of the activity that is being reshared.
+ "objectType": "A String", # The type of the object. Possible values include, but are not limited to, the following values:
# - "note" - Textual content.
# - "activity" - A Google+ activity.
},
@@ -202,6 +202,7 @@
# - "circle" - Access to members of a circle.
# - "myCircles" - Access to members of all the person's circles.
# - "extendedCircles" - Access to members of everyone in a person's circles, plus all of the people in their circles.
+ # - "domain" - Access to members of the person's Google Apps domain.
# - "public" - Access to anyone on the web.
"displayName": "A String", # A descriptive name for this entry. Suitable for display.
"id": "A String", # The ID of the entry. For entries of type "person" or "circle", this is the ID of the resource. For other types, this property is not set.
@@ -210,13 +211,24 @@
"kind": "plus#acl", # Identifies this resource as a collection of access controls. Value: "plus#acl".
"description": "A String", # Description of the access granted, suitable for display.
},
- "verb": "A String", # This activity's verb, indicating what action was performed. Possible values are:
+ "verb": "A String", # This activity's verb, which indicates the action that was performed. Possible values include, but are not limited to, the following values:
# - "post" - Publish content to the stream.
# - "share" - Reshare an activity.
"etag": "A String", # ETag of this response for caching purposes.
"radius": "A String", # Radius, in meters, of the region where this activity occurred, centered at the latitude and longitude identified in geocode.
+ "location": { # The location where this activity occurred.
+ "position": { # The position of the place.
+ "latitude": 3.14, # The latitude of this position.
+ "longitude": 3.14, # The longitude of this position.
+ },
+ "kind": "plus#place", # Identifies this resource as a place. Value: "plus#place".
+ "displayName": "A String", # The display name of the place.
+ "address": { # The physical address of the place.
+ "formatted": "A String", # The formatted address for display.
+ },
+ },
"address": "A String", # Street address where this activity occurred.
- "crosspostSource": "A String", # If this activity is a crosspost from another system, this property specifies the ID of the original activity.
+ "crosspostSource": "A String", # If this activity is a cross post from another system, this property specifies the ID of the original activity.
"annotation": "A String", # Additional content added by the person who shared this activity, applicable only when resharing an activity.
"published": "A String", # The time at which this activity was initially published. Formatted as an RFC 3339 timestamp.
}</pre>
@@ -259,8 +271,8 @@
},
"attachments": [ # The media objects attached to this activity.
{
- "displayName": "A String", # The title of the attachment (such as a photo caption or an article title).
- "thumbnails": [ # If the attachment is an album, potential additional thumbnails from the album.
+ "displayName": "A String", # The title of the attachment, such as a photo caption or an article title.
+ "thumbnails": [ # If the attachment is an album, this property is a list of potential additional thumbnails from the album.
{
"url": "A String", # URL to the webpage containing the image.
"image": { # Image resource.
@@ -291,34 +303,34 @@
"type": "A String", # Media type of the link.
},
"id": "A String", # The ID of the attachment.
- "objectType": "A String", # The type of media object. Possible values are:
+ "objectType": "A String", # The type of media object. Possible values include, but are not limited to, the following values:
# - "photo" - A photo.
# - "album" - A photo album.
# - "video" - A video.
# - "article" - An article, specified by a link.
},
],
- "originalContent": "A String", # The content (text) as provided by the author, stored without any HTML formatting. When creating or updating an activity, this value must be supplied as plain text in the request.
+ "originalContent": "A String", # The content (text) as provided by the author, which is stored without any HTML formatting. When creating or updating an activity, this value must be supplied as plain text in the request.
"plusoners": { # People who +1'd this activity.
"totalItems": 42, # Total number of people who +1'd this activity.
"selfLink": "A String", # The URL for the collection of people who +1'd this activity.
},
- "actor": { # If this activity's object is itself another activity (for example, when a person reshares an activity), this property specifies the original activity's actor.
+ "actor": { # If this activity's object is itself another activity, such as when a person reshares an activity, this property specifies the original activity's actor.
"url": "A String", # A link to the original actor's Google profile.
"image": { # The image representation of the original actor.
"url": "A String", # A URL that points to a thumbnail photo of the original actor.
},
- "displayName": "A String", # The original actor's name, suitable for display.
+ "displayName": "A String", # The original actor's name, which is suitable for display.
"id": "A String", # ID of the original actor.
},
- "content": "A String", # The HTML-formatted content, suitable for display.
+ "content": "A String", # The HTML-formatted content, which is suitable for display.
"url": "A String", # The URL that points to the linked resource.
"replies": { # Comments in reply to this activity.
"totalItems": 42, # Total number of comments on this activity.
"selfLink": "A String", # The URL for the collection of comments in reply to this activity.
},
- "id": "A String", # The ID of the object. When resharing an activity, this is the ID of the activity being reshared.
- "objectType": "A String", # The type of the object. Possible values are:
+ "id": "A String", # The ID of the object. When resharing an activity, this is the ID of the activity that is being reshared.
+ "objectType": "A String", # The type of the object. Possible values include, but are not limited to, the following values:
# - "note" - Textual content.
# - "activity" - A Google+ activity.
},
@@ -344,6 +356,7 @@
# - "circle" - Access to members of a circle.
# - "myCircles" - Access to members of all the person's circles.
# - "extendedCircles" - Access to members of everyone in a person's circles, plus all of the people in their circles.
+ # - "domain" - Access to members of the person's Google Apps domain.
# - "public" - Access to anyone on the web.
"displayName": "A String", # A descriptive name for this entry. Suitable for display.
"id": "A String", # The ID of the entry. For entries of type "person" or "circle", this is the ID of the resource. For other types, this property is not set.
@@ -352,13 +365,24 @@
"kind": "plus#acl", # Identifies this resource as a collection of access controls. Value: "plus#acl".
"description": "A String", # Description of the access granted, suitable for display.
},
- "verb": "A String", # This activity's verb, indicating what action was performed. Possible values are:
+ "verb": "A String", # This activity's verb, which indicates the action that was performed. Possible values include, but are not limited to, the following values:
# - "post" - Publish content to the stream.
# - "share" - Reshare an activity.
"etag": "A String", # ETag of this response for caching purposes.
"radius": "A String", # Radius, in meters, of the region where this activity occurred, centered at the latitude and longitude identified in geocode.
+ "location": { # The location where this activity occurred.
+ "position": { # The position of the place.
+ "latitude": 3.14, # The latitude of this position.
+ "longitude": 3.14, # The longitude of this position.
+ },
+ "kind": "plus#place", # Identifies this resource as a place. Value: "plus#place".
+ "displayName": "A String", # The display name of the place.
+ "address": { # The physical address of the place.
+ "formatted": "A String", # The formatted address for display.
+ },
+ },
"address": "A String", # Street address where this activity occurred.
- "crosspostSource": "A String", # If this activity is a crosspost from another system, this property specifies the ID of the original activity.
+ "crosspostSource": "A String", # If this activity is a cross post from another system, this property specifies the ID of the original activity.
"annotation": "A String", # Additional content added by the person who shared this activity, applicable only when resharing an activity.
"published": "A String", # The time at which this activity was initially published. Formatted as an RFC 3339 timestamp.
},
@@ -424,8 +448,8 @@
},
"attachments": [ # The media objects attached to this activity.
{
- "displayName": "A String", # The title of the attachment (such as a photo caption or an article title).
- "thumbnails": [ # If the attachment is an album, potential additional thumbnails from the album.
+ "displayName": "A String", # The title of the attachment, such as a photo caption or an article title.
+ "thumbnails": [ # If the attachment is an album, this property is a list of potential additional thumbnails from the album.
{
"url": "A String", # URL to the webpage containing the image.
"image": { # Image resource.
@@ -456,34 +480,34 @@
"type": "A String", # Media type of the link.
},
"id": "A String", # The ID of the attachment.
- "objectType": "A String", # The type of media object. Possible values are:
+ "objectType": "A String", # The type of media object. Possible values include, but are not limited to, the following values:
# - "photo" - A photo.
# - "album" - A photo album.
# - "video" - A video.
# - "article" - An article, specified by a link.
},
],
- "originalContent": "A String", # The content (text) as provided by the author, stored without any HTML formatting. When creating or updating an activity, this value must be supplied as plain text in the request.
+ "originalContent": "A String", # The content (text) as provided by the author, which is stored without any HTML formatting. When creating or updating an activity, this value must be supplied as plain text in the request.
"plusoners": { # People who +1'd this activity.
"totalItems": 42, # Total number of people who +1'd this activity.
"selfLink": "A String", # The URL for the collection of people who +1'd this activity.
},
- "actor": { # If this activity's object is itself another activity (for example, when a person reshares an activity), this property specifies the original activity's actor.
+ "actor": { # If this activity's object is itself another activity, such as when a person reshares an activity, this property specifies the original activity's actor.
"url": "A String", # A link to the original actor's Google profile.
"image": { # The image representation of the original actor.
"url": "A String", # A URL that points to a thumbnail photo of the original actor.
},
- "displayName": "A String", # The original actor's name, suitable for display.
+ "displayName": "A String", # The original actor's name, which is suitable for display.
"id": "A String", # ID of the original actor.
},
- "content": "A String", # The HTML-formatted content, suitable for display.
+ "content": "A String", # The HTML-formatted content, which is suitable for display.
"url": "A String", # The URL that points to the linked resource.
"replies": { # Comments in reply to this activity.
"totalItems": 42, # Total number of comments on this activity.
"selfLink": "A String", # The URL for the collection of comments in reply to this activity.
},
- "id": "A String", # The ID of the object. When resharing an activity, this is the ID of the activity being reshared.
- "objectType": "A String", # The type of the object. Possible values are:
+ "id": "A String", # The ID of the object. When resharing an activity, this is the ID of the activity that is being reshared.
+ "objectType": "A String", # The type of the object. Possible values include, but are not limited to, the following values:
# - "note" - Textual content.
# - "activity" - A Google+ activity.
},
@@ -509,6 +533,7 @@
# - "circle" - Access to members of a circle.
# - "myCircles" - Access to members of all the person's circles.
# - "extendedCircles" - Access to members of everyone in a person's circles, plus all of the people in their circles.
+ # - "domain" - Access to members of the person's Google Apps domain.
# - "public" - Access to anyone on the web.
"displayName": "A String", # A descriptive name for this entry. Suitable for display.
"id": "A String", # The ID of the entry. For entries of type "person" or "circle", this is the ID of the resource. For other types, this property is not set.
@@ -517,13 +542,24 @@
"kind": "plus#acl", # Identifies this resource as a collection of access controls. Value: "plus#acl".
"description": "A String", # Description of the access granted, suitable for display.
},
- "verb": "A String", # This activity's verb, indicating what action was performed. Possible values are:
+ "verb": "A String", # This activity's verb, which indicates the action that was performed. Possible values include, but are not limited to, the following values:
# - "post" - Publish content to the stream.
# - "share" - Reshare an activity.
"etag": "A String", # ETag of this response for caching purposes.
"radius": "A String", # Radius, in meters, of the region where this activity occurred, centered at the latitude and longitude identified in geocode.
+ "location": { # The location where this activity occurred.
+ "position": { # The position of the place.
+ "latitude": 3.14, # The latitude of this position.
+ "longitude": 3.14, # The longitude of this position.
+ },
+ "kind": "plus#place", # Identifies this resource as a place. Value: "plus#place".
+ "displayName": "A String", # The display name of the place.
+ "address": { # The physical address of the place.
+ "formatted": "A String", # The formatted address for display.
+ },
+ },
"address": "A String", # Street address where this activity occurred.
- "crosspostSource": "A String", # If this activity is a crosspost from another system, this property specifies the ID of the original activity.
+ "crosspostSource": "A String", # If this activity is a cross post from another system, this property specifies the ID of the original activity.
"annotation": "A String", # Additional content added by the person who shared this activity, applicable only when resharing an activity.
"published": "A String", # The time at which this activity was initially published. Formatted as an RFC 3339 timestamp.
},
diff --git a/docs/dyn/plus_v1.people.html b/docs/dyn/plus_v1.people.html
index a4f1a68..b0f05b6 100644
--- a/docs/dyn/plus_v1.people.html
+++ b/docs/dyn/plus_v1.people.html
@@ -111,17 +111,41 @@
"image": { # The representation of the person's profile photo.
"url": "A String", # The URL of the person's profile photo. To re-size the image and crop it to a square, append the query string ?sz=x, where x is the dimension in pixels of each side.
},
- "hasApp": True or False, # If "true", indicates that the person has installed the app that is making the request and has chosen to expose this install state to the caller. A value of "false" indicates that the install state cannot be determined (it is either not installed or the person has chosen to keep this information private).
"id": "A String", # The ID of this person.
- "objectType": "A String", # Type of person within Google+. Possible values are:
+ "objectType": "A String", # Type of person within Google+. Possible values include, but are not limited to, the following values:
# - "person" - represents an actual person.
# - "page" - represents a page.
"verified": True or False, # Whether the person or Google+ Page has been verified.
"tagline": "A String", # The brief description (tagline) of this person.
- "currentLocation": "A String", # The current location for this person.
"etag": "A String", # ETag of this response for caching purposes.
"circledByCount": 42, # If a Google+ Page and for followers who are visible, the number of people who have added this page to a circle.
- "relationshipStatus": "A String", # The person's relationship status. Possible values are:
+ "aboutMe": "A String", # A short biography for this person.
+ "kind": "plus#person", # Identifies this resource as a person. Value: "plus#person".
+ "placesLived": [ # A list of places where this person has lived.
+ {
+ "primary": True or False, # If "true", this place of residence is this person's primary residence.
+ "value": "A String", # A place where this person has lived. For example: "Seattle, WA", "Near Toronto".
+ },
+ ],
+ "birthday": "A String", # The person's date of birth, represented as YYYY-MM-DD.
+ "nickname": "A String", # The nickname of this person.
+ "currentLocation": "A String", # The current location for this person.
+ "organizations": [ # A list of current or past organizations with which this person is associated.
+ {
+ "startDate": "A String", # The date that the person joined this organization.
+ "endDate": "A String", # The date that the person left this organization.
+ "description": "A String", # A short description of the person's role in this organization. Deprecated.
+ "title": "A String", # The person's job title or role within the organization.
+ "primary": True or False, # If "true", indicates this organization is the person's primary one, which is typically interpreted as the current one.
+ "location": "A String", # The location of this organization. Deprecated.
+ "department": "A String", # The department within the organization. Deprecated.
+ "type": "A String", # The type of organization. Possible values include, but are not limited to, the following values:
+ # - "work" - Work.
+ # - "school" - School.
+ "name": "A String", # The name of the organization.
+ },
+ ],
+ "relationshipStatus": "A String", # The person's relationship status. Possible values include, but are not limited to, the following values:
# - "single" - Person is single.
# - "in_a_relationship" - Person is in a relationship.
# - "engaged" - Person is engaged.
@@ -131,42 +155,7 @@
# - "widowed" - Person is widowed.
# - "in_domestic_partnership" - Person is in a domestic partnership.
# - "in_civil_union" - Person is in a civil union.
- "aboutMe": "A String", # A short biography for this person.
- "placesLived": [ # A list of places where this person has lived.
- {
- "primary": True or False, # If "true", this place of residence is this person's primary residence.
- "value": "A String", # A place where this person has lived. For example: "Seattle, WA", "Near Toronto".
- },
- ],
- "birthday": "A String", # The person's date of birth, represented as YYYY-MM-DD.
- "nickname": "A String", # The nickname of this person.
- "emails": [ # A list of email addresses that this person has set to public on their Google+ profile. You can also use the userinfo.email scope to retrieve an authenticated user's email address.
- {
- "type": "A String", # The type of address. Possible values are:
- # - "home" - Home email address.
- # - "work" - Work email address.
- # - "other" - Other.
- "primary": True or False, # If "true", indicates this email address is the person's primary one.
- "value": "A String", # The email address.
- },
- ],
- "organizations": [ # A list of current or past organizations with which this person is associated.
- {
- "startDate": "A String", # The date the person joined this organization.
- "endDate": "A String", # The date the person left this organization.
- "description": "A String", # A short description of the person's role in this organization. Deprecated.
- "title": "A String", # The person's job title or role within the organization.
- "primary": True or False, # If "true", indicates this organization is the person's primary one (typically interpreted as current one).
- "location": "A String", # The location of this organization. Deprecated.
- "department": "A String", # The department within the organization. Deprecated.
- "type": "A String", # The type of organization. Possible values are:
- # - "work" - Work.
- # - "school" - School.
- "name": "A String", # The name of the organization.
- },
- ],
- "kind": "plus#person", # Identifies this resource as a person. Value: "plus#person".
- "displayName": "A String", # The name of this person, suitable for display.
+ "displayName": "A String", # The name of this person, which is suitable for display.
"name": { # An object representation of the individual components of a person's name.
"honorificPrefix": "A String", # The honorific prefixes (such as "Dr." or "Mrs.") for this person.
"middleName": "A String", # The middle name of this person.
@@ -177,12 +166,12 @@
},
"language": "A String", # The user's preferred language for rendering.
"url": "A String", # The URL of this person's profile.
- "gender": "A String", # The person's gender. Possible values are:
+ "gender": "A String", # The person's gender. Possible values include, but are not limited to, the following values:
# - "male" - Male gender.
# - "female" - Female gender.
# - "other" - Other.
"cover": { # The cover photo content.
- "layout": "A String", # The layout of the cover art. Possible values are:
+ "layout": "A String", # The layout of the cover art. Possible values include, but are not limited to, the following values:
# - "banner" - One large image banner.
"coverInfo": { # Extra information about the cover photo.
"leftImageOffset": 42, # The difference between the left position of the image cover and the actual displayed cover image. Only valid for BANNER layout.
@@ -198,14 +187,13 @@
"plusOneCount": 42, # If a Google+ Page, the number of people who have +1'ed this page.
"urls": [ # A list of URLs for this person.
{
- "type": "A String", # The type of URL. Possible values are:
- # - "home" - URL for home.
- # - "work" - URL for work.
- # - "blog" - URL for blog.
- # - "profile" - URL for profile.
- # - "other" - Other.
- "primary": True or False, # If "true", this URL is the person's primary URL.
+ "type": "A String", # The type of URL. Possible values include, but are not limited to, the following values:
+ # - "otherProfile" - URL for another profile.
+ # - "contributor" - URL to a site for which this person is a contributor.
+ # - "website" - URL for this Google+ Page's primary website.
+ # - "other" - Other URL.
"value": "A String", # The URL value.
+ "label": "A String", # The label of the URL.
},
],
"ageRange": { # The age range of the person.
@@ -244,17 +232,41 @@
"image": { # The representation of the person's profile photo.
"url": "A String", # The URL of the person's profile photo. To re-size the image and crop it to a square, append the query string ?sz=x, where x is the dimension in pixels of each side.
},
- "hasApp": True or False, # If "true", indicates that the person has installed the app that is making the request and has chosen to expose this install state to the caller. A value of "false" indicates that the install state cannot be determined (it is either not installed or the person has chosen to keep this information private).
"id": "A String", # The ID of this person.
- "objectType": "A String", # Type of person within Google+. Possible values are:
+ "objectType": "A String", # Type of person within Google+. Possible values include, but are not limited to, the following values:
# - "person" - represents an actual person.
# - "page" - represents a page.
"verified": True or False, # Whether the person or Google+ Page has been verified.
"tagline": "A String", # The brief description (tagline) of this person.
- "currentLocation": "A String", # The current location for this person.
"etag": "A String", # ETag of this response for caching purposes.
"circledByCount": 42, # If a Google+ Page and for followers who are visible, the number of people who have added this page to a circle.
- "relationshipStatus": "A String", # The person's relationship status. Possible values are:
+ "aboutMe": "A String", # A short biography for this person.
+ "kind": "plus#person", # Identifies this resource as a person. Value: "plus#person".
+ "placesLived": [ # A list of places where this person has lived.
+ {
+ "primary": True or False, # If "true", this place of residence is this person's primary residence.
+ "value": "A String", # A place where this person has lived. For example: "Seattle, WA", "Near Toronto".
+ },
+ ],
+ "birthday": "A String", # The person's date of birth, represented as YYYY-MM-DD.
+ "nickname": "A String", # The nickname of this person.
+ "currentLocation": "A String", # The current location for this person.
+ "organizations": [ # A list of current or past organizations with which this person is associated.
+ {
+ "startDate": "A String", # The date that the person joined this organization.
+ "endDate": "A String", # The date that the person left this organization.
+ "description": "A String", # A short description of the person's role in this organization. Deprecated.
+ "title": "A String", # The person's job title or role within the organization.
+ "primary": True or False, # If "true", indicates this organization is the person's primary one, which is typically interpreted as the current one.
+ "location": "A String", # The location of this organization. Deprecated.
+ "department": "A String", # The department within the organization. Deprecated.
+ "type": "A String", # The type of organization. Possible values include, but are not limited to, the following values:
+ # - "work" - Work.
+ # - "school" - School.
+ "name": "A String", # The name of the organization.
+ },
+ ],
+ "relationshipStatus": "A String", # The person's relationship status. Possible values include, but are not limited to, the following values:
# - "single" - Person is single.
# - "in_a_relationship" - Person is in a relationship.
# - "engaged" - Person is engaged.
@@ -264,42 +276,7 @@
# - "widowed" - Person is widowed.
# - "in_domestic_partnership" - Person is in a domestic partnership.
# - "in_civil_union" - Person is in a civil union.
- "aboutMe": "A String", # A short biography for this person.
- "placesLived": [ # A list of places where this person has lived.
- {
- "primary": True or False, # If "true", this place of residence is this person's primary residence.
- "value": "A String", # A place where this person has lived. For example: "Seattle, WA", "Near Toronto".
- },
- ],
- "birthday": "A String", # The person's date of birth, represented as YYYY-MM-DD.
- "nickname": "A String", # The nickname of this person.
- "emails": [ # A list of email addresses that this person has set to public on their Google+ profile. You can also use the userinfo.email scope to retrieve an authenticated user's email address.
- {
- "type": "A String", # The type of address. Possible values are:
- # - "home" - Home email address.
- # - "work" - Work email address.
- # - "other" - Other.
- "primary": True or False, # If "true", indicates this email address is the person's primary one.
- "value": "A String", # The email address.
- },
- ],
- "organizations": [ # A list of current or past organizations with which this person is associated.
- {
- "startDate": "A String", # The date the person joined this organization.
- "endDate": "A String", # The date the person left this organization.
- "description": "A String", # A short description of the person's role in this organization. Deprecated.
- "title": "A String", # The person's job title or role within the organization.
- "primary": True or False, # If "true", indicates this organization is the person's primary one (typically interpreted as current one).
- "location": "A String", # The location of this organization. Deprecated.
- "department": "A String", # The department within the organization. Deprecated.
- "type": "A String", # The type of organization. Possible values are:
- # - "work" - Work.
- # - "school" - School.
- "name": "A String", # The name of the organization.
- },
- ],
- "kind": "plus#person", # Identifies this resource as a person. Value: "plus#person".
- "displayName": "A String", # The name of this person, suitable for display.
+ "displayName": "A String", # The name of this person, which is suitable for display.
"name": { # An object representation of the individual components of a person's name.
"honorificPrefix": "A String", # The honorific prefixes (such as "Dr." or "Mrs.") for this person.
"middleName": "A String", # The middle name of this person.
@@ -310,12 +287,12 @@
},
"language": "A String", # The user's preferred language for rendering.
"url": "A String", # The URL of this person's profile.
- "gender": "A String", # The person's gender. Possible values are:
+ "gender": "A String", # The person's gender. Possible values include, but are not limited to, the following values:
# - "male" - Male gender.
# - "female" - Female gender.
# - "other" - Other.
"cover": { # The cover photo content.
- "layout": "A String", # The layout of the cover art. Possible values are:
+ "layout": "A String", # The layout of the cover art. Possible values include, but are not limited to, the following values:
# - "banner" - One large image banner.
"coverInfo": { # Extra information about the cover photo.
"leftImageOffset": 42, # The difference between the left position of the image cover and the actual displayed cover image. Only valid for BANNER layout.
@@ -331,14 +308,13 @@
"plusOneCount": 42, # If a Google+ Page, the number of people who have +1'ed this page.
"urls": [ # A list of URLs for this person.
{
- "type": "A String", # The type of URL. Possible values are:
- # - "home" - URL for home.
- # - "work" - URL for work.
- # - "blog" - URL for blog.
- # - "profile" - URL for profile.
- # - "other" - Other.
- "primary": True or False, # If "true", this URL is the person's primary URL.
+ "type": "A String", # The type of URL. Possible values include, but are not limited to, the following values:
+ # - "otherProfile" - URL for another profile.
+ # - "contributor" - URL to a site for which this person is a contributor.
+ # - "website" - URL for this Google+ Page's primary website.
+ # - "other" - Other URL.
"value": "A String", # The URL value.
+ "label": "A String", # The label of the URL.
},
],
"ageRange": { # The age range of the person.
@@ -379,17 +355,41 @@
"image": { # The representation of the person's profile photo.
"url": "A String", # The URL of the person's profile photo. To re-size the image and crop it to a square, append the query string ?sz=x, where x is the dimension in pixels of each side.
},
- "hasApp": True or False, # If "true", indicates that the person has installed the app that is making the request and has chosen to expose this install state to the caller. A value of "false" indicates that the install state cannot be determined (it is either not installed or the person has chosen to keep this information private).
"id": "A String", # The ID of this person.
- "objectType": "A String", # Type of person within Google+. Possible values are:
+ "objectType": "A String", # Type of person within Google+. Possible values include, but are not limited to, the following values:
# - "person" - represents an actual person.
# - "page" - represents a page.
"verified": True or False, # Whether the person or Google+ Page has been verified.
"tagline": "A String", # The brief description (tagline) of this person.
- "currentLocation": "A String", # The current location for this person.
"etag": "A String", # ETag of this response for caching purposes.
"circledByCount": 42, # If a Google+ Page and for followers who are visible, the number of people who have added this page to a circle.
- "relationshipStatus": "A String", # The person's relationship status. Possible values are:
+ "aboutMe": "A String", # A short biography for this person.
+ "kind": "plus#person", # Identifies this resource as a person. Value: "plus#person".
+ "placesLived": [ # A list of places where this person has lived.
+ {
+ "primary": True or False, # If "true", this place of residence is this person's primary residence.
+ "value": "A String", # A place where this person has lived. For example: "Seattle, WA", "Near Toronto".
+ },
+ ],
+ "birthday": "A String", # The person's date of birth, represented as YYYY-MM-DD.
+ "nickname": "A String", # The nickname of this person.
+ "currentLocation": "A String", # The current location for this person.
+ "organizations": [ # A list of current or past organizations with which this person is associated.
+ {
+ "startDate": "A String", # The date that the person joined this organization.
+ "endDate": "A String", # The date that the person left this organization.
+ "description": "A String", # A short description of the person's role in this organization. Deprecated.
+ "title": "A String", # The person's job title or role within the organization.
+ "primary": True or False, # If "true", indicates this organization is the person's primary one, which is typically interpreted as the current one.
+ "location": "A String", # The location of this organization. Deprecated.
+ "department": "A String", # The department within the organization. Deprecated.
+ "type": "A String", # The type of organization. Possible values include, but are not limited to, the following values:
+ # - "work" - Work.
+ # - "school" - School.
+ "name": "A String", # The name of the organization.
+ },
+ ],
+ "relationshipStatus": "A String", # The person's relationship status. Possible values include, but are not limited to, the following values:
# - "single" - Person is single.
# - "in_a_relationship" - Person is in a relationship.
# - "engaged" - Person is engaged.
@@ -399,42 +399,7 @@
# - "widowed" - Person is widowed.
# - "in_domestic_partnership" - Person is in a domestic partnership.
# - "in_civil_union" - Person is in a civil union.
- "aboutMe": "A String", # A short biography for this person.
- "placesLived": [ # A list of places where this person has lived.
- {
- "primary": True or False, # If "true", this place of residence is this person's primary residence.
- "value": "A String", # A place where this person has lived. For example: "Seattle, WA", "Near Toronto".
- },
- ],
- "birthday": "A String", # The person's date of birth, represented as YYYY-MM-DD.
- "nickname": "A String", # The nickname of this person.
- "emails": [ # A list of email addresses that this person has set to public on their Google+ profile. You can also use the userinfo.email scope to retrieve an authenticated user's email address.
- {
- "type": "A String", # The type of address. Possible values are:
- # - "home" - Home email address.
- # - "work" - Work email address.
- # - "other" - Other.
- "primary": True or False, # If "true", indicates this email address is the person's primary one.
- "value": "A String", # The email address.
- },
- ],
- "organizations": [ # A list of current or past organizations with which this person is associated.
- {
- "startDate": "A String", # The date the person joined this organization.
- "endDate": "A String", # The date the person left this organization.
- "description": "A String", # A short description of the person's role in this organization. Deprecated.
- "title": "A String", # The person's job title or role within the organization.
- "primary": True or False, # If "true", indicates this organization is the person's primary one (typically interpreted as current one).
- "location": "A String", # The location of this organization. Deprecated.
- "department": "A String", # The department within the organization. Deprecated.
- "type": "A String", # The type of organization. Possible values are:
- # - "work" - Work.
- # - "school" - School.
- "name": "A String", # The name of the organization.
- },
- ],
- "kind": "plus#person", # Identifies this resource as a person. Value: "plus#person".
- "displayName": "A String", # The name of this person, suitable for display.
+ "displayName": "A String", # The name of this person, which is suitable for display.
"name": { # An object representation of the individual components of a person's name.
"honorificPrefix": "A String", # The honorific prefixes (such as "Dr." or "Mrs.") for this person.
"middleName": "A String", # The middle name of this person.
@@ -445,12 +410,12 @@
},
"language": "A String", # The user's preferred language for rendering.
"url": "A String", # The URL of this person's profile.
- "gender": "A String", # The person's gender. Possible values are:
+ "gender": "A String", # The person's gender. Possible values include, but are not limited to, the following values:
# - "male" - Male gender.
# - "female" - Female gender.
# - "other" - Other.
"cover": { # The cover photo content.
- "layout": "A String", # The layout of the cover art. Possible values are:
+ "layout": "A String", # The layout of the cover art. Possible values include, but are not limited to, the following values:
# - "banner" - One large image banner.
"coverInfo": { # Extra information about the cover photo.
"leftImageOffset": 42, # The difference between the left position of the image cover and the actual displayed cover image. Only valid for BANNER layout.
@@ -466,14 +431,13 @@
"plusOneCount": 42, # If a Google+ Page, the number of people who have +1'ed this page.
"urls": [ # A list of URLs for this person.
{
- "type": "A String", # The type of URL. Possible values are:
- # - "home" - URL for home.
- # - "work" - URL for work.
- # - "blog" - URL for blog.
- # - "profile" - URL for profile.
- # - "other" - Other.
- "primary": True or False, # If "true", this URL is the person's primary URL.
+ "type": "A String", # The type of URL. Possible values include, but are not limited to, the following values:
+ # - "otherProfile" - URL for another profile.
+ # - "contributor" - URL to a site for which this person is a contributor.
+ # - "website" - URL for this Google+ Page's primary website.
+ # - "other" - Other URL.
"value": "A String", # The URL value.
+ "label": "A String", # The label of the URL.
},
],
"ageRange": { # The age range of the person.
@@ -539,17 +503,41 @@
"image": { # The representation of the person's profile photo.
"url": "A String", # The URL of the person's profile photo. To re-size the image and crop it to a square, append the query string ?sz=x, where x is the dimension in pixels of each side.
},
- "hasApp": True or False, # If "true", indicates that the person has installed the app that is making the request and has chosen to expose this install state to the caller. A value of "false" indicates that the install state cannot be determined (it is either not installed or the person has chosen to keep this information private).
"id": "A String", # The ID of this person.
- "objectType": "A String", # Type of person within Google+. Possible values are:
+ "objectType": "A String", # Type of person within Google+. Possible values include, but are not limited to, the following values:
# - "person" - represents an actual person.
# - "page" - represents a page.
"verified": True or False, # Whether the person or Google+ Page has been verified.
"tagline": "A String", # The brief description (tagline) of this person.
- "currentLocation": "A String", # The current location for this person.
"etag": "A String", # ETag of this response for caching purposes.
"circledByCount": 42, # If a Google+ Page and for followers who are visible, the number of people who have added this page to a circle.
- "relationshipStatus": "A String", # The person's relationship status. Possible values are:
+ "aboutMe": "A String", # A short biography for this person.
+ "kind": "plus#person", # Identifies this resource as a person. Value: "plus#person".
+ "placesLived": [ # A list of places where this person has lived.
+ {
+ "primary": True or False, # If "true", this place of residence is this person's primary residence.
+ "value": "A String", # A place where this person has lived. For example: "Seattle, WA", "Near Toronto".
+ },
+ ],
+ "birthday": "A String", # The person's date of birth, represented as YYYY-MM-DD.
+ "nickname": "A String", # The nickname of this person.
+ "currentLocation": "A String", # The current location for this person.
+ "organizations": [ # A list of current or past organizations with which this person is associated.
+ {
+ "startDate": "A String", # The date that the person joined this organization.
+ "endDate": "A String", # The date that the person left this organization.
+ "description": "A String", # A short description of the person's role in this organization. Deprecated.
+ "title": "A String", # The person's job title or role within the organization.
+ "primary": True or False, # If "true", indicates this organization is the person's primary one, which is typically interpreted as the current one.
+ "location": "A String", # The location of this organization. Deprecated.
+ "department": "A String", # The department within the organization. Deprecated.
+ "type": "A String", # The type of organization. Possible values include, but are not limited to, the following values:
+ # - "work" - Work.
+ # - "school" - School.
+ "name": "A String", # The name of the organization.
+ },
+ ],
+ "relationshipStatus": "A String", # The person's relationship status. Possible values include, but are not limited to, the following values:
# - "single" - Person is single.
# - "in_a_relationship" - Person is in a relationship.
# - "engaged" - Person is engaged.
@@ -559,42 +547,7 @@
# - "widowed" - Person is widowed.
# - "in_domestic_partnership" - Person is in a domestic partnership.
# - "in_civil_union" - Person is in a civil union.
- "aboutMe": "A String", # A short biography for this person.
- "placesLived": [ # A list of places where this person has lived.
- {
- "primary": True or False, # If "true", this place of residence is this person's primary residence.
- "value": "A String", # A place where this person has lived. For example: "Seattle, WA", "Near Toronto".
- },
- ],
- "birthday": "A String", # The person's date of birth, represented as YYYY-MM-DD.
- "nickname": "A String", # The nickname of this person.
- "emails": [ # A list of email addresses that this person has set to public on their Google+ profile. You can also use the userinfo.email scope to retrieve an authenticated user's email address.
- {
- "type": "A String", # The type of address. Possible values are:
- # - "home" - Home email address.
- # - "work" - Work email address.
- # - "other" - Other.
- "primary": True or False, # If "true", indicates this email address is the person's primary one.
- "value": "A String", # The email address.
- },
- ],
- "organizations": [ # A list of current or past organizations with which this person is associated.
- {
- "startDate": "A String", # The date the person joined this organization.
- "endDate": "A String", # The date the person left this organization.
- "description": "A String", # A short description of the person's role in this organization. Deprecated.
- "title": "A String", # The person's job title or role within the organization.
- "primary": True or False, # If "true", indicates this organization is the person's primary one (typically interpreted as current one).
- "location": "A String", # The location of this organization. Deprecated.
- "department": "A String", # The department within the organization. Deprecated.
- "type": "A String", # The type of organization. Possible values are:
- # - "work" - Work.
- # - "school" - School.
- "name": "A String", # The name of the organization.
- },
- ],
- "kind": "plus#person", # Identifies this resource as a person. Value: "plus#person".
- "displayName": "A String", # The name of this person, suitable for display.
+ "displayName": "A String", # The name of this person, which is suitable for display.
"name": { # An object representation of the individual components of a person's name.
"honorificPrefix": "A String", # The honorific prefixes (such as "Dr." or "Mrs.") for this person.
"middleName": "A String", # The middle name of this person.
@@ -605,12 +558,12 @@
},
"language": "A String", # The user's preferred language for rendering.
"url": "A String", # The URL of this person's profile.
- "gender": "A String", # The person's gender. Possible values are:
+ "gender": "A String", # The person's gender. Possible values include, but are not limited to, the following values:
# - "male" - Male gender.
# - "female" - Female gender.
# - "other" - Other.
"cover": { # The cover photo content.
- "layout": "A String", # The layout of the cover art. Possible values are:
+ "layout": "A String", # The layout of the cover art. Possible values include, but are not limited to, the following values:
# - "banner" - One large image banner.
"coverInfo": { # Extra information about the cover photo.
"leftImageOffset": 42, # The difference between the left position of the image cover and the actual displayed cover image. Only valid for BANNER layout.
@@ -626,14 +579,13 @@
"plusOneCount": 42, # If a Google+ Page, the number of people who have +1'ed this page.
"urls": [ # A list of URLs for this person.
{
- "type": "A String", # The type of URL. Possible values are:
- # - "home" - URL for home.
- # - "work" - URL for work.
- # - "blog" - URL for blog.
- # - "profile" - URL for profile.
- # - "other" - Other.
- "primary": True or False, # If "true", this URL is the person's primary URL.
+ "type": "A String", # The type of URL. Possible values include, but are not limited to, the following values:
+ # - "otherProfile" - URL for another profile.
+ # - "contributor" - URL to a site for which this person is a contributor.
+ # - "website" - URL for this Google+ Page's primary website.
+ # - "other" - Other URL.
"value": "A String", # The URL value.
+ "label": "A String", # The label of the URL.
},
],
"ageRange": { # The age range of the person.
diff --git a/docs/dyn/prediction_v1_6.hostedmodels.html b/docs/dyn/prediction_v1_6.hostedmodels.html
new file mode 100644
index 0000000..69e85d1
--- /dev/null
+++ b/docs/dyn/prediction_v1_6.hostedmodels.html
@@ -0,0 +1,118 @@
+<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="prediction_v1_6.html">Prediction API</a> . <a href="prediction_v1_6.hostedmodels.html">hostedmodels</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#predict">predict(project, hostedModelName, body)</a></code></p>
+<p class="firstline">Submit input and request an output against a hosted model.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="predict">predict(project, hostedModelName, body)</code>
+ <pre>Submit input and request an output against a hosted model.
+
+Args:
+ project: string, The project associated with the model. (required)
+ hostedModelName: string, The name of a hosted model. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{
+ "input": { # Input to the model for a prediction.
+ "csvInstance": [ # A list of input features, these can be strings or doubles.
+ "",
+ ],
+ },
+ }
+
+
+Returns:
+ An object of the form:
+
+ {
+ "kind": "prediction#output", # What kind of resource this is.
+ "outputLabel": "A String", # The most likely class label (Categorical models only).
+ "id": "A String", # The unique name for the predictive model.
+ "outputMulti": [ # A list of class labels with their estimated probabilities (Categorical models only).
+ {
+ "score": "A String", # The probability of the class label.
+ "label": "A String", # The class label.
+ },
+ ],
+ "outputValue": 3.14, # The estimated regression value (Regression models only).
+ "selfLink": "A String", # A URL to re-request this resource.
+ }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/prediction_v1_6.html b/docs/dyn/prediction_v1_6.html
new file mode 100644
index 0000000..a6a9760
--- /dev/null
+++ b/docs/dyn/prediction_v1_6.html
@@ -0,0 +1,87 @@
+<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="prediction_v1_6.html">Prediction API</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="prediction_v1_6.hostedmodels.html">hostedmodels()</a></code>
+</p>
+<p class="firstline">Returns the hostedmodels Resource.</p>
+
+<p class="toc_element">
+ <code><a href="prediction_v1_6.trainedmodels.html">trainedmodels()</a></code>
+</p>
+<p class="firstline">Returns the trainedmodels Resource.</p>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/prediction_v1_6.trainedmodels.html b/docs/dyn/prediction_v1_6.trainedmodels.html
new file mode 100644
index 0000000..c591ff3
--- /dev/null
+++ b/docs/dyn/prediction_v1_6.trainedmodels.html
@@ -0,0 +1,427 @@
+<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="prediction_v1_6.html">Prediction API</a> . <a href="prediction_v1_6.trainedmodels.html">trainedmodels</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#analyze">analyze(project, id)</a></code></p>
+<p class="firstline">Get analysis of the model and the data the model was trained on.</p>
+<p class="toc_element">
+ <code><a href="#delete">delete(project, id)</a></code></p>
+<p class="firstline">Delete a trained model.</p>
+<p class="toc_element">
+ <code><a href="#get">get(project, id)</a></code></p>
+<p class="firstline">Check training status of your model.</p>
+<p class="toc_element">
+ <code><a href="#insert">insert(project, body)</a></code></p>
+<p class="firstline">Train a Prediction API model.</p>
+<p class="toc_element">
+ <code><a href="#list">list(project, pageToken=None, maxResults=None)</a></code></p>
+<p class="firstline">List available models.</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="#predict">predict(project, id, body)</a></code></p>
+<p class="firstline">Submit model id and request a prediction.</p>
+<p class="toc_element">
+ <code><a href="#update">update(project, id, body)</a></code></p>
+<p class="firstline">Add new data to a trained model.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="analyze">analyze(project, id)</code>
+ <pre>Get analysis of the model and the data the model was trained on.
+
+Args:
+ project: string, The project associated with the model. (required)
+ id: string, The unique name for the predictive model. (required)
+
+Returns:
+ An object of the form:
+
+ {
+ "kind": "prediction#analyze", # What kind of resource this is.
+ "errors": [ # List of errors with the data.
+ {
+ "a_key": "A String", # Error level followed by a detailed error message.
+ },
+ ],
+ "dataDescription": { # Description of the data the model was trained on.
+ "outputFeature": { # Description of the output value or label.
+ "text": [ # Description of the output labels in the data set.
+ {
+ "count": "A String", # Number of times the output label occurred in the data set.
+ "value": "A String", # The output label.
+ },
+ ],
+ "numeric": { # Description of the output values in the data set.
+ "count": "A String", # Number of numeric output values in the data set.
+ "variance": "A String", # Variance of the output values in the data set.
+ "mean": "A String", # Mean of the output values in the data set.
+ },
+ },
+ "features": [ # Description of the input features in the data set.
+ {
+ "index": "A String", # The feature index.
+ "text": { # Description of multiple-word text values of this feature.
+ "count": "A String", # Number of multiple-word text values for this feature.
+ },
+ "numeric": { # Description of the numeric values of this feature.
+ "count": "A String", # Number of numeric values for this feature in the data set.
+ "variance": "A String", # Variance of the numeric values of this feature in the data set.
+ "mean": "A String", # Mean of the numeric values of this feature in the data set.
+ },
+ "categorical": { # Description of the categorical values of this feature.
+ "count": "A String", # Number of categorical values for this feature in the data.
+ "values": [ # List of all the categories for this feature in the data set.
+ {
+ "count": "A String", # Number of times this feature had this value.
+ "value": "A String", # The category name.
+ },
+ ],
+ },
+ },
+ ],
+ },
+ "modelDescription": { # Description of the model.
+ "confusionMatrixRowTotals": { # A list of the confusion matrix row totals.
+ "a_key": "A String",
+ },
+ "confusionMatrix": { # An output confusion matrix. This shows an estimate for how this model will do in predictions. This is first indexed by the true class label. For each true class label, this provides a pair {predicted_label, count}, where count is the estimated number of times the model will predict the predicted label given the true label. Will not output if more then 100 classes (Categorical models only).
+ "a_key": { # Confusion matrix information for the true class label.
+ "a_key": "A String", # Average number of times an instance with correct class label modelDescription.confusionMatrix.(key) was wrongfully classified as this label.
+ },
+ },
+ "modelinfo": { # Basic information about the model.
+ "kind": "prediction#training", # What kind of resource this is.
+ "created": "A String", # Insert time of the model (as a RFC 3339 timestamp).
+ "trainingComplete": "A String", # Training completion time (as a RFC 3339 timestamp).
+ "storageDataLocation": "A String", # Google storage location of the training data file.
+ "modelType": "A String", # Type of predictive model (CLASSIFICATION or REGRESSION).
+ "storagePMMLModelLocation": "A String", # Google storage location of the pmml model file.
+ "trainingStatus": "A String", # The current status of the training job. This can be one of following: RUNNING; DONE; ERROR; ERROR: TRAINING JOB NOT FOUND
+ "modelInfo": { # Model metadata.
+ "numberLabels": "A String", # Number of class labels in the trained model (Categorical models only).
+ "meanSquaredError": "A String", # An estimated mean squared error. The can be used to measure the quality of the predicted model (Regression models only).
+ "modelType": "A String", # Type of predictive model (CLASSIFICATION or REGRESSION).
+ "numberInstances": "A String", # Number of valid data instances used in the trained model.
+ "classWeightedAccuracy": "A String", # Estimated accuracy of model taking utility weights into account (Categorical models only).
+ "classificationAccuracy": "A String", # A number between 0.0 and 1.0, where 1.0 is 100% accurate. This is an estimate, based on the amount and quality of the training data, of the estimated prediction accuracy. You can use this is a guide to decide whether the results are accurate enough for your needs. This estimate will be more reliable if your real input data is similar to your training data (Categorical models only).
+ },
+ "storagePMMLLocation": "A String", # Google storage location of the preprocessing pmml file.
+ "id": "A String", # The unique name for the predictive model.
+ "selfLink": "A String", # A URL to re-request this resource.
+ },
+ },
+ "id": "A String", # The unique name for the predictive model.
+ "selfLink": "A String", # A URL to re-request this resource.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="delete">delete(project, id)</code>
+ <pre>Delete a trained model.
+
+Args:
+ project: string, The project associated with the model. (required)
+ id: string, The unique name for the predictive model. (required)
+</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="get">get(project, id)</code>
+ <pre>Check training status of your model.
+
+Args:
+ project: string, The project associated with the model. (required)
+ id: string, The unique name for the predictive model. (required)
+
+Returns:
+ An object of the form:
+
+ {
+ "kind": "prediction#training", # What kind of resource this is.
+ "created": "A String", # Insert time of the model (as a RFC 3339 timestamp).
+ "trainingComplete": "A String", # Training completion time (as a RFC 3339 timestamp).
+ "storageDataLocation": "A String", # Google storage location of the training data file.
+ "modelType": "A String", # Type of predictive model (CLASSIFICATION or REGRESSION).
+ "storagePMMLModelLocation": "A String", # Google storage location of the pmml model file.
+ "trainingStatus": "A String", # The current status of the training job. This can be one of following: RUNNING; DONE; ERROR; ERROR: TRAINING JOB NOT FOUND
+ "modelInfo": { # Model metadata.
+ "numberLabels": "A String", # Number of class labels in the trained model (Categorical models only).
+ "meanSquaredError": "A String", # An estimated mean squared error. The can be used to measure the quality of the predicted model (Regression models only).
+ "modelType": "A String", # Type of predictive model (CLASSIFICATION or REGRESSION).
+ "numberInstances": "A String", # Number of valid data instances used in the trained model.
+ "classWeightedAccuracy": "A String", # Estimated accuracy of model taking utility weights into account (Categorical models only).
+ "classificationAccuracy": "A String", # A number between 0.0 and 1.0, where 1.0 is 100% accurate. This is an estimate, based on the amount and quality of the training data, of the estimated prediction accuracy. You can use this is a guide to decide whether the results are accurate enough for your needs. This estimate will be more reliable if your real input data is similar to your training data (Categorical models only).
+ },
+ "storagePMMLLocation": "A String", # Google storage location of the preprocessing pmml file.
+ "id": "A String", # The unique name for the predictive model.
+ "selfLink": "A String", # A URL to re-request this resource.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="insert">insert(project, body)</code>
+ <pre>Train a Prediction API model.
+
+Args:
+ project: string, The project associated with the model. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{
+ "storageDataLocation": "A String", # Google storage location of the training data file.
+ "modelType": "A String", # Type of predictive model (classification or regression).
+ "storagePMMLModelLocation": "A String", # Google storage location of the pmml model file.
+ "sourceModel": "A String", # The Id of the model to be copied over.
+ "storagePMMLLocation": "A String", # Google storage location of the preprocessing pmml file.
+ "trainingInstances": [ # Instances to train model on.
+ {
+ "output": "A String", # The generic output value - could be regression or class label.
+ "csvInstance": [ # The input features for this instance.
+ "",
+ ],
+ },
+ ],
+ "id": "A String", # The unique name for the predictive model.
+ "utility": [ # A class weighting function, which allows the importance weights for class labels to be specified (Categorical models only).
+ { # Class label (string).
+ "a_key": 3.14,
+ },
+ ],
+ }
+
+
+Returns:
+ An object of the form:
+
+ {
+ "kind": "prediction#training", # What kind of resource this is.
+ "created": "A String", # Insert time of the model (as a RFC 3339 timestamp).
+ "trainingComplete": "A String", # Training completion time (as a RFC 3339 timestamp).
+ "storageDataLocation": "A String", # Google storage location of the training data file.
+ "modelType": "A String", # Type of predictive model (CLASSIFICATION or REGRESSION).
+ "storagePMMLModelLocation": "A String", # Google storage location of the pmml model file.
+ "trainingStatus": "A String", # The current status of the training job. This can be one of following: RUNNING; DONE; ERROR; ERROR: TRAINING JOB NOT FOUND
+ "modelInfo": { # Model metadata.
+ "numberLabels": "A String", # Number of class labels in the trained model (Categorical models only).
+ "meanSquaredError": "A String", # An estimated mean squared error. The can be used to measure the quality of the predicted model (Regression models only).
+ "modelType": "A String", # Type of predictive model (CLASSIFICATION or REGRESSION).
+ "numberInstances": "A String", # Number of valid data instances used in the trained model.
+ "classWeightedAccuracy": "A String", # Estimated accuracy of model taking utility weights into account (Categorical models only).
+ "classificationAccuracy": "A String", # A number between 0.0 and 1.0, where 1.0 is 100% accurate. This is an estimate, based on the amount and quality of the training data, of the estimated prediction accuracy. You can use this is a guide to decide whether the results are accurate enough for your needs. This estimate will be more reliable if your real input data is similar to your training data (Categorical models only).
+ },
+ "storagePMMLLocation": "A String", # Google storage location of the preprocessing pmml file.
+ "id": "A String", # The unique name for the predictive model.
+ "selfLink": "A String", # A URL to re-request this resource.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="list">list(project, pageToken=None, maxResults=None)</code>
+ <pre>List available models.
+
+Args:
+ project: string, The project associated with the model. (required)
+ pageToken: string, Pagination token.
+ maxResults: integer, Maximum number of results to return.
+
+Returns:
+ An object of the form:
+
+ {
+ "nextPageToken": "A String", # Pagination token to fetch the next page, if one exists.
+ "items": [ # List of models.
+ {
+ "kind": "prediction#training", # What kind of resource this is.
+ "created": "A String", # Insert time of the model (as a RFC 3339 timestamp).
+ "trainingComplete": "A String", # Training completion time (as a RFC 3339 timestamp).
+ "storageDataLocation": "A String", # Google storage location of the training data file.
+ "modelType": "A String", # Type of predictive model (CLASSIFICATION or REGRESSION).
+ "storagePMMLModelLocation": "A String", # Google storage location of the pmml model file.
+ "trainingStatus": "A String", # The current status of the training job. This can be one of following: RUNNING; DONE; ERROR; ERROR: TRAINING JOB NOT FOUND
+ "modelInfo": { # Model metadata.
+ "numberLabels": "A String", # Number of class labels in the trained model (Categorical models only).
+ "meanSquaredError": "A String", # An estimated mean squared error. The can be used to measure the quality of the predicted model (Regression models only).
+ "modelType": "A String", # Type of predictive model (CLASSIFICATION or REGRESSION).
+ "numberInstances": "A String", # Number of valid data instances used in the trained model.
+ "classWeightedAccuracy": "A String", # Estimated accuracy of model taking utility weights into account (Categorical models only).
+ "classificationAccuracy": "A String", # A number between 0.0 and 1.0, where 1.0 is 100% accurate. This is an estimate, based on the amount and quality of the training data, of the estimated prediction accuracy. You can use this is a guide to decide whether the results are accurate enough for your needs. This estimate will be more reliable if your real input data is similar to your training data (Categorical models only).
+ },
+ "storagePMMLLocation": "A String", # Google storage location of the preprocessing pmml file.
+ "id": "A String", # The unique name for the predictive model.
+ "selfLink": "A String", # A URL to re-request this resource.
+ },
+ ],
+ "kind": "prediction#list", # What kind of resource this is.
+ "selfLink": "A String", # A URL to re-request this resource.
+ }</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="predict">predict(project, id, body)</code>
+ <pre>Submit model id and request a prediction.
+
+Args:
+ project: string, The project associated with the model. (required)
+ id: string, The unique name for the predictive model. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{
+ "input": { # Input to the model for a prediction.
+ "csvInstance": [ # A list of input features, these can be strings or doubles.
+ "",
+ ],
+ },
+ }
+
+
+Returns:
+ An object of the form:
+
+ {
+ "kind": "prediction#output", # What kind of resource this is.
+ "outputLabel": "A String", # The most likely class label (Categorical models only).
+ "id": "A String", # The unique name for the predictive model.
+ "outputMulti": [ # A list of class labels with their estimated probabilities (Categorical models only).
+ {
+ "score": "A String", # The probability of the class label.
+ "label": "A String", # The class label.
+ },
+ ],
+ "outputValue": 3.14, # The estimated regression value (Regression models only).
+ "selfLink": "A String", # A URL to re-request this resource.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="update">update(project, id, body)</code>
+ <pre>Add new data to a trained model.
+
+Args:
+ project: string, The project associated with the model. (required)
+ id: string, The unique name for the predictive model. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{
+ "output": "A String", # The generic output value - could be regression or class label.
+ "csvInstance": [ # The input features for this instance.
+ "",
+ ],
+ }
+
+
+Returns:
+ An object of the form:
+
+ {
+ "kind": "prediction#training", # What kind of resource this is.
+ "created": "A String", # Insert time of the model (as a RFC 3339 timestamp).
+ "trainingComplete": "A String", # Training completion time (as a RFC 3339 timestamp).
+ "storageDataLocation": "A String", # Google storage location of the training data file.
+ "modelType": "A String", # Type of predictive model (CLASSIFICATION or REGRESSION).
+ "storagePMMLModelLocation": "A String", # Google storage location of the pmml model file.
+ "trainingStatus": "A String", # The current status of the training job. This can be one of following: RUNNING; DONE; ERROR; ERROR: TRAINING JOB NOT FOUND
+ "modelInfo": { # Model metadata.
+ "numberLabels": "A String", # Number of class labels in the trained model (Categorical models only).
+ "meanSquaredError": "A String", # An estimated mean squared error. The can be used to measure the quality of the predicted model (Regression models only).
+ "modelType": "A String", # Type of predictive model (CLASSIFICATION or REGRESSION).
+ "numberInstances": "A String", # Number of valid data instances used in the trained model.
+ "classWeightedAccuracy": "A String", # Estimated accuracy of model taking utility weights into account (Categorical models only).
+ "classificationAccuracy": "A String", # A number between 0.0 and 1.0, where 1.0 is 100% accurate. This is an estimate, based on the amount and quality of the training data, of the estimated prediction accuracy. You can use this is a guide to decide whether the results are accurate enough for your needs. This estimate will be more reliable if your real input data is similar to your training data (Categorical models only).
+ },
+ "storagePMMLLocation": "A String", # Google storage location of the preprocessing pmml file.
+ "id": "A String", # The unique name for the predictive model.
+ "selfLink": "A String", # A URL to re-request this resource.
+ }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/reseller_v1.customers.html b/docs/dyn/reseller_v1.customers.html
index 0d4a6da..8f9e31e 100644
--- a/docs/dyn/reseller_v1.customers.html
+++ b/docs/dyn/reseller_v1.customers.html
@@ -101,6 +101,7 @@
"customerDomain": "A String", # The domain name of the customer.
"alternateEmail": "A String", # The alternate email of the customer.
"kind": "reseller#customer", # Identifies the resource as a customer.
+ "resourceUiUrl": "A String", # Ui url for customer resource.
"phoneNumber": "A String", # The phone number of the customer.
"postalAddress": { # JSON template for address of a customer. # The postal address of the customer.
"kind": "customers#address", # Identifies the resource as a customer address.
@@ -130,6 +131,7 @@
"customerDomain": "A String", # The domain name of the customer.
"alternateEmail": "A String", # The alternate email of the customer.
"kind": "reseller#customer", # Identifies the resource as a customer.
+ "resourceUiUrl": "A String", # Ui url for customer resource.
"phoneNumber": "A String", # The phone number of the customer.
"postalAddress": { # JSON template for address of a customer. # The postal address of the customer.
"kind": "customers#address", # Identifies the resource as a customer address.
@@ -155,6 +157,7 @@
"customerDomain": "A String", # The domain name of the customer.
"alternateEmail": "A String", # The alternate email of the customer.
"kind": "reseller#customer", # Identifies the resource as a customer.
+ "resourceUiUrl": "A String", # Ui url for customer resource.
"phoneNumber": "A String", # The phone number of the customer.
"postalAddress": { # JSON template for address of a customer. # The postal address of the customer.
"kind": "customers#address", # Identifies the resource as a customer address.
@@ -185,6 +188,7 @@
"customerDomain": "A String", # The domain name of the customer.
"alternateEmail": "A String", # The alternate email of the customer.
"kind": "reseller#customer", # Identifies the resource as a customer.
+ "resourceUiUrl": "A String", # Ui url for customer resource.
"phoneNumber": "A String", # The phone number of the customer.
"postalAddress": { # JSON template for address of a customer. # The postal address of the customer.
"kind": "customers#address", # Identifies the resource as a customer address.
@@ -209,6 +213,7 @@
"customerDomain": "A String", # The domain name of the customer.
"alternateEmail": "A String", # The alternate email of the customer.
"kind": "reseller#customer", # Identifies the resource as a customer.
+ "resourceUiUrl": "A String", # Ui url for customer resource.
"phoneNumber": "A String", # The phone number of the customer.
"postalAddress": { # JSON template for address of a customer. # The postal address of the customer.
"kind": "customers#address", # Identifies the resource as a customer address.
@@ -239,6 +244,7 @@
"customerDomain": "A String", # The domain name of the customer.
"alternateEmail": "A String", # The alternate email of the customer.
"kind": "reseller#customer", # Identifies the resource as a customer.
+ "resourceUiUrl": "A String", # Ui url for customer resource.
"phoneNumber": "A String", # The phone number of the customer.
"postalAddress": { # JSON template for address of a customer. # The postal address of the customer.
"kind": "customers#address", # Identifies the resource as a customer address.
@@ -263,6 +269,7 @@
"customerDomain": "A String", # The domain name of the customer.
"alternateEmail": "A String", # The alternate email of the customer.
"kind": "reseller#customer", # Identifies the resource as a customer.
+ "resourceUiUrl": "A String", # Ui url for customer resource.
"phoneNumber": "A String", # The phone number of the customer.
"postalAddress": { # JSON template for address of a customer. # The postal address of the customer.
"kind": "customers#address", # Identifies the resource as a customer address.
diff --git a/docs/dyn/reseller_v1.subscriptions.html b/docs/dyn/reseller_v1.subscriptions.html
index bf3a9fa..d9b420d 100644
--- a/docs/dyn/reseller_v1.subscriptions.html
+++ b/docs/dyn/reseller_v1.subscriptions.html
@@ -93,7 +93,7 @@
<code><a href="#insert">insert(customerId, body, customerAuthToken=None)</a></code></p>
<p class="firstline">Creates/Transfers a subscription for the customer.</p>
<p class="toc_element">
- <code><a href="#list">list(pageToken=None, maxResults=None, customerNamePrefix=None)</a></code></p>
+ <code><a href="#list">list(customerAuthToken=None, pageToken=None, maxResults=None, customerNamePrefix=None, customerId=None)</a></code></p>
<p class="firstline">Lists subscriptions of a reseller, optionally filtered by a customer name prefix.</p>
<p class="toc_element">
<code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
@@ -138,12 +138,18 @@
"trialEndTime": "A String", # End time of the trial in milliseconds since Unix epoch.
"isInTrial": True or False, # Whether the subscription is in trial.
},
+ "transferInfo": { # Transfer related information for the subscription.
+ "transferabilityExpirationTime": "A String", # Time when transfer token or intent to transfer will expire.
+ "minimumTransferableSeats": 42,
+ },
+ "resourceUiUrl": "A String", # Ui url for subscription resource.
"seats": { # JSON template for subscription seats. # Number/Limit of seats in the new plan.
"kind": "subscriptions#seats", # Identifies the resource as a subscription change plan request.
"numberOfSeats": 42, # Number of seats to purchase. This is applicable only for a commitment plan.
"maximumNumberOfSeats": 42, # Maximum number of seats that can be purchased. This needs to be provided only for a non-commitment plan. For a commitment plan it is decided by the contract.
},
"creationTime": "A String", # Creation time of this subscription in milliseconds since Unix epoch.
+ "status": "A String", # Status of the subscription.
"plan": { # Plan details of the subscription
"planName": "A String", # The plan name of this subscription's plan.
"commitmentInterval": { # Interval of the commitment if it is a commitment plan.
@@ -188,12 +194,18 @@
"trialEndTime": "A String", # End time of the trial in milliseconds since Unix epoch.
"isInTrial": True or False, # Whether the subscription is in trial.
},
+ "transferInfo": { # Transfer related information for the subscription.
+ "transferabilityExpirationTime": "A String", # Time when transfer token or intent to transfer will expire.
+ "minimumTransferableSeats": 42,
+ },
+ "resourceUiUrl": "A String", # Ui url for subscription resource.
"seats": { # JSON template for subscription seats. # Number/Limit of seats in the new plan.
"kind": "subscriptions#seats", # Identifies the resource as a subscription change plan request.
"numberOfSeats": 42, # Number of seats to purchase. This is applicable only for a commitment plan.
"maximumNumberOfSeats": 42, # Maximum number of seats that can be purchased. This needs to be provided only for a non-commitment plan. For a commitment plan it is decided by the contract.
},
"creationTime": "A String", # Creation time of this subscription in milliseconds since Unix epoch.
+ "status": "A String", # Status of the subscription.
"plan": { # Plan details of the subscription
"planName": "A String", # The plan name of this subscription's plan.
"commitmentInterval": { # Interval of the commitment if it is a commitment plan.
@@ -239,12 +251,18 @@
"trialEndTime": "A String", # End time of the trial in milliseconds since Unix epoch.
"isInTrial": True or False, # Whether the subscription is in trial.
},
+ "transferInfo": { # Transfer related information for the subscription.
+ "transferabilityExpirationTime": "A String", # Time when transfer token or intent to transfer will expire.
+ "minimumTransferableSeats": 42,
+ },
+ "resourceUiUrl": "A String", # Ui url for subscription resource.
"seats": { # JSON template for subscription seats. # Number/Limit of seats in the new plan.
"kind": "subscriptions#seats", # Identifies the resource as a subscription change plan request.
"numberOfSeats": 42, # Number of seats to purchase. This is applicable only for a commitment plan.
"maximumNumberOfSeats": 42, # Maximum number of seats that can be purchased. This needs to be provided only for a non-commitment plan. For a commitment plan it is decided by the contract.
},
"creationTime": "A String", # Creation time of this subscription in milliseconds since Unix epoch.
+ "status": "A String", # Status of the subscription.
"plan": { # Plan details of the subscription
"planName": "A String", # The plan name of this subscription's plan.
"commitmentInterval": { # Interval of the commitment if it is a commitment plan.
@@ -296,12 +314,18 @@
"trialEndTime": "A String", # End time of the trial in milliseconds since Unix epoch.
"isInTrial": True or False, # Whether the subscription is in trial.
},
+ "transferInfo": { # Transfer related information for the subscription.
+ "transferabilityExpirationTime": "A String", # Time when transfer token or intent to transfer will expire.
+ "minimumTransferableSeats": 42,
+ },
+ "resourceUiUrl": "A String", # Ui url for subscription resource.
"seats": { # JSON template for subscription seats. # Number/Limit of seats in the new plan.
"kind": "subscriptions#seats", # Identifies the resource as a subscription change plan request.
"numberOfSeats": 42, # Number of seats to purchase. This is applicable only for a commitment plan.
"maximumNumberOfSeats": 42, # Maximum number of seats that can be purchased. This needs to be provided only for a non-commitment plan. For a commitment plan it is decided by the contract.
},
"creationTime": "A String", # Creation time of this subscription in milliseconds since Unix epoch.
+ "status": "A String", # Status of the subscription.
"plan": { # Plan details of the subscription
"planName": "A String", # The plan name of this subscription's plan.
"commitmentInterval": { # Interval of the commitment if it is a commitment plan.
@@ -336,12 +360,18 @@
"trialEndTime": "A String", # End time of the trial in milliseconds since Unix epoch.
"isInTrial": True or False, # Whether the subscription is in trial.
},
+ "transferInfo": { # Transfer related information for the subscription.
+ "transferabilityExpirationTime": "A String", # Time when transfer token or intent to transfer will expire.
+ "minimumTransferableSeats": 42,
+ },
+ "resourceUiUrl": "A String", # Ui url for subscription resource.
"seats": { # JSON template for subscription seats. # Number/Limit of seats in the new plan.
"kind": "subscriptions#seats", # Identifies the resource as a subscription change plan request.
"numberOfSeats": 42, # Number of seats to purchase. This is applicable only for a commitment plan.
"maximumNumberOfSeats": 42, # Maximum number of seats that can be purchased. This needs to be provided only for a non-commitment plan. For a commitment plan it is decided by the contract.
},
"creationTime": "A String", # Creation time of this subscription in milliseconds since Unix epoch.
+ "status": "A String", # Status of the subscription.
"plan": { # Plan details of the subscription
"planName": "A String", # The plan name of this subscription's plan.
"commitmentInterval": { # Interval of the commitment if it is a commitment plan.
@@ -371,12 +401,18 @@
"trialEndTime": "A String", # End time of the trial in milliseconds since Unix epoch.
"isInTrial": True or False, # Whether the subscription is in trial.
},
+ "transferInfo": { # Transfer related information for the subscription.
+ "transferabilityExpirationTime": "A String", # Time when transfer token or intent to transfer will expire.
+ "minimumTransferableSeats": 42,
+ },
+ "resourceUiUrl": "A String", # Ui url for subscription resource.
"seats": { # JSON template for subscription seats. # Number/Limit of seats in the new plan.
"kind": "subscriptions#seats", # Identifies the resource as a subscription change plan request.
"numberOfSeats": 42, # Number of seats to purchase. This is applicable only for a commitment plan.
"maximumNumberOfSeats": 42, # Maximum number of seats that can be purchased. This needs to be provided only for a non-commitment plan. For a commitment plan it is decided by the contract.
},
"creationTime": "A String", # Creation time of this subscription in milliseconds since Unix epoch.
+ "status": "A String", # Status of the subscription.
"plan": { # Plan details of the subscription
"planName": "A String", # The plan name of this subscription's plan.
"commitmentInterval": { # Interval of the commitment if it is a commitment plan.
@@ -392,13 +428,15 @@
</div>
<div class="method">
- <code class="details" id="list">list(pageToken=None, maxResults=None, customerNamePrefix=None)</code>
+ <code class="details" id="list">list(customerAuthToken=None, pageToken=None, maxResults=None, customerNamePrefix=None, customerId=None)</code>
<pre>Lists subscriptions of a reseller, optionally filtered by a customer name prefix.
Args:
+ customerAuthToken: string, An auth token needed if the customer is not a resold customer of this reseller. Can be generated at https://www.google.com/a/cpanel/customer-domain/TransferToken.Optional.
pageToken: string, Token to specify next page in the list
maxResults: integer, Maximum number of results to return
customerNamePrefix: string, Prefix of the customer's domain name by which the subscriptions should be filtered. Optional
+ customerId: string, Id of the Customer
Returns:
An object of the form:
@@ -418,12 +456,18 @@
"trialEndTime": "A String", # End time of the trial in milliseconds since Unix epoch.
"isInTrial": True or False, # Whether the subscription is in trial.
},
+ "transferInfo": { # Transfer related information for the subscription.
+ "transferabilityExpirationTime": "A String", # Time when transfer token or intent to transfer will expire.
+ "minimumTransferableSeats": 42,
+ },
+ "resourceUiUrl": "A String", # Ui url for subscription resource.
"seats": { # JSON template for subscription seats. # Number/Limit of seats in the new plan.
"kind": "subscriptions#seats", # Identifies the resource as a subscription change plan request.
"numberOfSeats": 42, # Number of seats to purchase. This is applicable only for a commitment plan.
"maximumNumberOfSeats": 42, # Maximum number of seats that can be purchased. This needs to be provided only for a non-commitment plan. For a commitment plan it is decided by the contract.
},
"creationTime": "A String", # Creation time of this subscription in milliseconds since Unix epoch.
+ "status": "A String", # Status of the subscription.
"plan": { # Plan details of the subscription
"planName": "A String", # The plan name of this subscription's plan.
"commitmentInterval": { # Interval of the commitment if it is a commitment plan.
@@ -476,12 +520,18 @@
"trialEndTime": "A String", # End time of the trial in milliseconds since Unix epoch.
"isInTrial": True or False, # Whether the subscription is in trial.
},
+ "transferInfo": { # Transfer related information for the subscription.
+ "transferabilityExpirationTime": "A String", # Time when transfer token or intent to transfer will expire.
+ "minimumTransferableSeats": 42,
+ },
+ "resourceUiUrl": "A String", # Ui url for subscription resource.
"seats": { # JSON template for subscription seats. # Number/Limit of seats in the new plan.
"kind": "subscriptions#seats", # Identifies the resource as a subscription change plan request.
"numberOfSeats": 42, # Number of seats to purchase. This is applicable only for a commitment plan.
"maximumNumberOfSeats": 42, # Maximum number of seats that can be purchased. This needs to be provided only for a non-commitment plan. For a commitment plan it is decided by the contract.
},
"creationTime": "A String", # Creation time of this subscription in milliseconds since Unix epoch.
+ "status": "A String", # Status of the subscription.
"plan": { # Plan details of the subscription
"planName": "A String", # The plan name of this subscription's plan.
"commitmentInterval": { # Interval of the commitment if it is a commitment plan.
diff --git a/docs/dyn/shopping_v1.products.html b/docs/dyn/shopping_v1.products.html
index 136a9d2..3749199 100644
--- a/docs/dyn/shopping_v1.products.html
+++ b/docs/dyn/shopping_v1.products.html
@@ -75,14 +75,14 @@
<h1><a href="shopping_v1.html">Search API For Shopping</a> . <a href="shopping_v1.products.html">products</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
- <code><a href="#get">get(source, accountId, productIdType, productId, taxonomy=None, recommendations_useGcsConfig=None, plusOne_enabled=None, recommendations_include=None, location=None, recommendations_enabled=None, categories_enabled=None, attributeFilter=None, categories_useGcsConfig=None, plusOne_styles=None, thumbnails=None, categories_include=None, plusOne_useGcsConfig=None)</a></code></p>
+ <code><a href="#get">get(source, accountId, productIdType, productId, taxonomy=None, recommendations_useGcsConfig=None, recommendations_include=None, location=None, recommendations_enabled=None, categories_enabled=None, attributeFilter=None, categories_useGcsConfig=None, thumbnails=None, categories_include=None)</a></code></p>
<p class="firstline">Returns a single product</p>
<p class="toc_element">
- <code><a href="#list">list(source, facets_enabled=None, rankBy=None, taxonomy=None, promotions_enabled=None, experimentId=None, channels=None, facets_discover=None, startIndex=None, availability=None, crowdBy=None, spelling_enabled=None, categoryRecommendations_category=None, extras_enabled=None, facets_includeEmptyBuckets=None, categoryRecommendations_enabled=None, extras_info=None, spelling_useGcsConfig=None, useCase=None, location=None, maxVariants=None, plusOne_styles=None, plusOne_enabled=None, relatedQueries_enabled=None, facets_useGcsConfig=None, categoryRecommendations_useGcsConfig=None, boostBy=None, safe=None, maxResults=None, categories_enabled=None, attributeFilter=None, categoryRecommendations_include=None, categories_useGcsConfig=None, clickTracking=None, facets_include=None, thumbnails=None, language=None, currency=None, categories_include=None, redirects_enabled=None, restrictBy=None, q=None, redirects_useGcsConfig=None, plusOne_useGcsConfig=None, relatedQueries_useGcsConfig=None, promotions_useGcsConfig=None, country=None)</a></code></p>
+ <code><a href="#list">list(source, facets_enabled=None, rankBy=None, taxonomy=None, promotions_enabled=None, channels=None, facets_discover=None, startIndex=None, availability=None, crowdBy=None, spelling_enabled=None, categoryRecommendations_category=None, extras_enabled=None, facets_includeEmptyBuckets=None, categoryRecommendations_enabled=None, extras_info=None, spelling_useGcsConfig=None, useCase=None, location=None, maxVariants=None, relatedQueries_enabled=None, facets_useGcsConfig=None, categoryRecommendations_useGcsConfig=None, boostBy=None, safe=None, maxResults=None, categories_enabled=None, attributeFilter=None, categoryRecommendations_include=None, categories_useGcsConfig=None, clickTracking=None, facets_include=None, thumbnails=None, language=None, currency=None, categories_include=None, redirects_enabled=None, restrictBy=None, q=None, redirects_useGcsConfig=None, country=None, relatedQueries_useGcsConfig=None, promotions_useGcsConfig=None)</a></code></p>
<p class="firstline">Returns a list of products and content modules</p>
<h3>Method Details</h3>
<div class="method">
- <code class="details" id="get">get(source, accountId, productIdType, productId, taxonomy=None, recommendations_useGcsConfig=None, plusOne_enabled=None, recommendations_include=None, location=None, recommendations_enabled=None, categories_enabled=None, attributeFilter=None, categories_useGcsConfig=None, plusOne_styles=None, thumbnails=None, categories_include=None, plusOne_useGcsConfig=None)</code>
+ <code class="details" id="get">get(source, accountId, productIdType, productId, taxonomy=None, recommendations_useGcsConfig=None, recommendations_include=None, location=None, recommendations_enabled=None, categories_enabled=None, attributeFilter=None, categories_useGcsConfig=None, thumbnails=None, categories_include=None)</code>
<pre>Returns a single product
Args:
@@ -92,17 +92,14 @@
productId: string, Id of product (required)
taxonomy: string, Merchant taxonomy
recommendations_useGcsConfig: boolean, This parameter is currently ignored
- plusOne_enabled: boolean, Whether to return +1 button code
recommendations_include: string, Recommendation specification
location: string, Location used to determine tax and shipping
recommendations_enabled: boolean, Whether to return recommendation information
categories_enabled: boolean, Whether to return category information
attributeFilter: string, Comma separated list of attributes to return
categories_useGcsConfig: boolean, This parameter is currently ignored
- plusOne_styles: string, +1 button rendering styles
thumbnails: string, Thumbnail specification
categories_include: string, Category specification
- plusOne_useGcsConfig: boolean, Whether to use +1 button styles configured in the GCS account
Returns:
An object of the form:
@@ -207,6 +204,11 @@
"A String",
],
"plusOne": "A String", # Code to add to the page to render the +1 content.
+ "internal16": { # Google Internal. Attribute names are deliberately vague.
+ "length": 42,
+ "number": 42,
+ "size": "A String",
+ },
"googleId": "A String", # Google id of product.
"internal15": 3.14, # Google Internal.
},
@@ -312,6 +314,11 @@
"A String",
],
"plusOne": "A String", # Code to add to the page to render the +1 content.
+ "internal16": { # Google Internal. Attribute names are deliberately vague.
+ "length": 42,
+ "number": 42,
+ "size": "A String",
+ },
"googleId": "A String", # Google id of product.
"internal15": 3.14, # Google Internal.
},
@@ -353,7 +360,7 @@
</div>
<div class="method">
- <code class="details" id="list">list(source, facets_enabled=None, rankBy=None, taxonomy=None, promotions_enabled=None, experimentId=None, channels=None, facets_discover=None, startIndex=None, availability=None, crowdBy=None, spelling_enabled=None, categoryRecommendations_category=None, extras_enabled=None, facets_includeEmptyBuckets=None, categoryRecommendations_enabled=None, extras_info=None, spelling_useGcsConfig=None, useCase=None, location=None, maxVariants=None, plusOne_styles=None, plusOne_enabled=None, relatedQueries_enabled=None, facets_useGcsConfig=None, categoryRecommendations_useGcsConfig=None, boostBy=None, safe=None, maxResults=None, categories_enabled=None, attributeFilter=None, categoryRecommendations_include=None, categories_useGcsConfig=None, clickTracking=None, facets_include=None, thumbnails=None, language=None, currency=None, categories_include=None, redirects_enabled=None, restrictBy=None, q=None, redirects_useGcsConfig=None, plusOne_useGcsConfig=None, relatedQueries_useGcsConfig=None, promotions_useGcsConfig=None, country=None)</code>
+ <code class="details" id="list">list(source, facets_enabled=None, rankBy=None, taxonomy=None, promotions_enabled=None, channels=None, facets_discover=None, startIndex=None, availability=None, crowdBy=None, spelling_enabled=None, categoryRecommendations_category=None, extras_enabled=None, facets_includeEmptyBuckets=None, categoryRecommendations_enabled=None, extras_info=None, spelling_useGcsConfig=None, useCase=None, location=None, maxVariants=None, relatedQueries_enabled=None, facets_useGcsConfig=None, categoryRecommendations_useGcsConfig=None, boostBy=None, safe=None, maxResults=None, categories_enabled=None, attributeFilter=None, categoryRecommendations_include=None, categories_useGcsConfig=None, clickTracking=None, facets_include=None, thumbnails=None, language=None, currency=None, categories_include=None, redirects_enabled=None, restrictBy=None, q=None, redirects_useGcsConfig=None, country=None, relatedQueries_useGcsConfig=None, promotions_useGcsConfig=None)</code>
<pre>Returns a list of products and content modules
Args:
@@ -362,7 +369,6 @@
rankBy: string, Ranking specification
taxonomy: string, Taxonomy name
promotions_enabled: boolean, Whether to return promotion information
- experimentId: string, The Id of the experiment
channels: string, Channels specification
facets_discover: string, Facets to discover
startIndex: integer, Index (1-based) of first product to return
@@ -378,8 +384,6 @@
useCase: string, One of CommerceSearchUseCase, ShoppingApiUseCase
location: string, Location used to determine tax and shipping
maxVariants: integer, Maximum number of variant results to return per result
- plusOne_styles: string, +1 button rendering styles
- plusOne_enabled: boolean, Whether to return +1 button code
relatedQueries_enabled: boolean, Whether to return related queries
facets_useGcsConfig: boolean, Whether to return facet information as configured in the GCS account
categoryRecommendations_useGcsConfig: boolean, This parameter is currently ignored
@@ -400,10 +404,9 @@
restrictBy: string, Restriction specification
q: string, Search query
redirects_useGcsConfig: boolean, Whether to return redirect information as configured in the GCS account
- plusOne_useGcsConfig: boolean, Whether to use +1 button styles configured in the GCS account
+ country: string, Country restriction (ISO 3166)
relatedQueries_useGcsConfig: boolean, This parameter is currently ignored
promotions_useGcsConfig: boolean, Whether to return promotion information as configured in the GCS account
- country: string, Country restriction (ISO 3166)
Returns:
An object of the form:
@@ -528,6 +531,11 @@
"A String",
],
"plusOne": "A String", # Code to add to the page to render the +1 content.
+ "internal16": { # Google Internal. Attribute names are deliberately vague.
+ "length": 42,
+ "number": 42,
+ "size": "A String",
+ },
"googleId": "A String", # Google id of product.
"internal15": 3.14, # Google Internal.
},
@@ -673,6 +681,11 @@
"A String",
],
"plusOne": "A String", # Code to add to the page to render the +1 content.
+ "internal16": { # Google Internal. Attribute names are deliberately vague.
+ "length": 42,
+ "number": 42,
+ "size": "A String",
+ },
"googleId": "A String", # Google id of product.
"internal15": 3.14, # Google Internal.
},
@@ -792,6 +805,11 @@
"A String",
],
"plusOne": "A String", # Code to add to the page to render the +1 content.
+ "internal16": { # Google Internal. Attribute names are deliberately vague.
+ "length": 42,
+ "number": 42,
+ "size": "A String",
+ },
"googleId": "A String", # Google id of product.
"internal15": 3.14, # Google Internal.
},
@@ -897,6 +915,11 @@
"A String",
],
"plusOne": "A String", # Code to add to the page to render the +1 content.
+ "internal16": { # Google Internal. Attribute names are deliberately vague.
+ "length": 42,
+ "number": 42,
+ "size": "A String",
+ },
"googleId": "A String", # Google id of product.
"internal15": 3.14, # Google Internal.
},
diff --git a/docs/dyn/sqladmin_v1beta1.backupRuns.html b/docs/dyn/sqladmin_v1beta1.backupRuns.html
new file mode 100644
index 0000000..d563e18
--- /dev/null
+++ b/docs/dyn/sqladmin_v1beta1.backupRuns.html
@@ -0,0 +1,166 @@
+<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="sqladmin_v1beta1.html">Cloud SQL Administration API</a> . <a href="sqladmin_v1beta1.backupRuns.html">backupRuns</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#get">get(project, instance, backupConfiguration, dueTime)</a></code></p>
+<p class="firstline">Retrieves a resource containing information about a backup run.</p>
+<p class="toc_element">
+ <code><a href="#list">list(project, instance, backupConfiguration, maxResults=None, pageToken=None)</a></code></p>
+<p class="firstline">Lists all backup runs associated with a given instance and configuration in the reverse chronological order of the enqueued time.</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>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="get">get(project, instance, backupConfiguration, dueTime)</code>
+ <pre>Retrieves a resource containing information about a backup run.
+
+Args:
+ project: string, Project ID of the project that contains the instance. You can find this on the project summary page of the Google APIs Console. (required)
+ instance: string, Database instance ID. This does not include the project ID. (required)
+ backupConfiguration: string, Identifier for the backup configuration. This gets generated automatically when a backup configuration is created. (required)
+ dueTime: string, The time when this run is due to start in RFC 3339 format, for example 2012-11-15T16:19:00.094Z. (required)
+
+Returns:
+ An object of the form:
+
+ { # A database instance backup run resource.
+ "status": "A String", # The status of this run.
+ "kind": "sql#backupRun", # This is always sql#backupRun.
+ "backupConfiguration": "A String", # Backup Configuration identifier.
+ "instance": "A String", # Name of the database instance.
+ "startTime": "A String", # The time the backup operation actually started in UTC timezone in RFC 3339 format, for example 2012-11-15T16:19:00.094Z.
+ "error": { # Database instance operation error. # Information about why the backup operation failed. This is only present if the run has the FAILED status.
+ "kind": "sql#operationError", # This is always sql#operationError.
+ "code": "A String", # Identifies the specific error that occurred.
+ },
+ "endTime": "A String", # The time the backup operation completed in UTC timezone in RFC 3339 format, for example 2012-11-15T16:19:00.094Z.
+ "enqueuedTime": "A String", # The time the run was enqueued in UTC timezone in RFC 3339 format, for example 2012-11-15T16:19:00.094Z.
+ "dueTime": "A String", # The due time of this run in UTC timezone in RFC 3339 format, for example 2012-11-15T16:19:00.094Z.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="list">list(project, instance, backupConfiguration, maxResults=None, pageToken=None)</code>
+ <pre>Lists all backup runs associated with a given instance and configuration in the reverse chronological order of the enqueued time.
+
+Args:
+ project: string, Project ID of the project that contains the instance. You can find this on the project summary page of the Google APIs Console. (required)
+ instance: string, Database instance ID. This does not include the project ID. (required)
+ backupConfiguration: string, Identifier for the backup configuration. This gets generated automatically when a backup configuration is created. (required)
+ maxResults: integer, Maximum number of backup runs per response.
+ pageToken: string, A previously-returned page token representing part of the larger set of results to view.
+
+Returns:
+ An object of the form:
+
+ { # Backup run list results.
+ "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": [ # A list of backup runs in reverse chronological order of the enqueued time.
+ { # A database instance backup run resource.
+ "status": "A String", # The status of this run.
+ "kind": "sql#backupRun", # This is always sql#backupRun.
+ "backupConfiguration": "A String", # Backup Configuration identifier.
+ "instance": "A String", # Name of the database instance.
+ "startTime": "A String", # The time the backup operation actually started in UTC timezone in RFC 3339 format, for example 2012-11-15T16:19:00.094Z.
+ "error": { # Database instance operation error. # Information about why the backup operation failed. This is only present if the run has the FAILED status.
+ "kind": "sql#operationError", # This is always sql#operationError.
+ "code": "A String", # Identifies the specific error that occurred.
+ },
+ "endTime": "A String", # The time the backup operation completed in UTC timezone in RFC 3339 format, for example 2012-11-15T16:19:00.094Z.
+ "enqueuedTime": "A String", # The time the run was enqueued in UTC timezone in RFC 3339 format, for example 2012-11-15T16:19:00.094Z.
+ "dueTime": "A String", # The due time of this run in UTC timezone in RFC 3339 format, for example 2012-11-15T16:19:00.094Z.
+ },
+ ],
+ "kind": "sql#backupRunsList", # This is always sql#backupRunsList.
+ }</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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/sqladmin_v1beta1.html b/docs/dyn/sqladmin_v1beta1.html
new file mode 100644
index 0000000..c3d98c0
--- /dev/null
+++ b/docs/dyn/sqladmin_v1beta1.html
@@ -0,0 +1,97 @@
+<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="sqladmin_v1beta1.html">Cloud SQL Administration API</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="sqladmin_v1beta1.backupRuns.html">backupRuns()</a></code>
+</p>
+<p class="firstline">Returns the backupRuns Resource.</p>
+
+<p class="toc_element">
+ <code><a href="sqladmin_v1beta1.instances.html">instances()</a></code>
+</p>
+<p class="firstline">Returns the instances Resource.</p>
+
+<p class="toc_element">
+ <code><a href="sqladmin_v1beta1.operations.html">operations()</a></code>
+</p>
+<p class="firstline">Returns the operations Resource.</p>
+
+<p class="toc_element">
+ <code><a href="sqladmin_v1beta1.tiers.html">tiers()</a></code>
+</p>
+<p class="firstline">Returns the tiers Resource.</p>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/sqladmin_v1beta1.instances.html b/docs/dyn/sqladmin_v1beta1.instances.html
new file mode 100644
index 0000000..f99ea80
--- /dev/null
+++ b/docs/dyn/sqladmin_v1beta1.instances.html
@@ -0,0 +1,521 @@
+<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="sqladmin_v1beta1.html">Cloud SQL Administration API</a> . <a href="sqladmin_v1beta1.instances.html">instances</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#delete">delete(project, instance)</a></code></p>
+<p class="firstline">Deletes a database instance.</p>
+<p class="toc_element">
+ <code><a href="#export">export(project, instance, body)</a></code></p>
+<p class="firstline">Exports data from a database instance to a Google Cloud Storage bucket as a MySQL dump file.</p>
+<p class="toc_element">
+ <code><a href="#get">get(project, instance)</a></code></p>
+<p class="firstline">Retrieves a resource containing information about a database instance.</p>
+<p class="toc_element">
+ <code><a href="#import_">import_(project, instance, body)</a></code></p>
+<p class="firstline">Imports data into a database instance from a MySQL dump file in Google Cloud Storage.</p>
+<p class="toc_element">
+ <code><a href="#insert">insert(project, body)</a></code></p>
+<p class="firstline">Creates a new database instance.</p>
+<p class="toc_element">
+ <code><a href="#list">list(project, pageToken=None, maxResults=None)</a></code></p>
+<p class="firstline">Lists instances under a given project in the alphabetical order of the instance name.</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(project, instance, body)</a></code></p>
+<p class="firstline">Updates settings of a database instance. Caution: This is not a partial update, so you must include values for all the settings that you want to retain. For partial updates, use patch.. This method supports patch semantics.</p>
+<p class="toc_element">
+ <code><a href="#restart">restart(project, instance)</a></code></p>
+<p class="firstline">Restarts a database instance.</p>
+<p class="toc_element">
+ <code><a href="#restoreBackup">restoreBackup(project, instance, backupConfiguration, dueTime)</a></code></p>
+<p class="firstline">Restores a backup of a database instance.</p>
+<p class="toc_element">
+ <code><a href="#update">update(project, instance, body)</a></code></p>
+<p class="firstline">Updates settings of a database instance. Caution: This is not a partial update, so you must include values for all the settings that you want to retain. For partial updates, use patch.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="delete">delete(project, instance)</code>
+ <pre>Deletes a database instance.
+
+Args:
+ project: string, Project ID of the project that contains the instance to be deleted. You can find this on the project summary page of the Google APIs Console. (required)
+ instance: string, Database instance ID. This does not include the project ID. (required)
+
+Returns:
+ An object of the form:
+
+ { # Database instance delete response.
+ "kind": "sql#instancesDelete", # This is always sql#instancesDelete.
+ "operation": "A String", # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="export">export(project, instance, body)</code>
+ <pre>Exports data from a database instance to a Google Cloud Storage bucket as a MySQL dump file.
+
+Args:
+ project: string, Project ID of the project that contains the instance to be exported. You can find this on the project summary page of the Google APIs Console. (required)
+ instance: string, Database instance ID. This does not include the project ID. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # Database instance export request.
+ "exportContext": { # Database instance export context. # Contains details about the export operation.
+ "table": [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database.
+ "A String",
+ ],
+ "kind": "sql#exportContext", # This is always sql#exportContext.
+ "uri": "A String", # The path to the file in Google Cloud Storage where the export will be stored, or where it was already stored. The URI is in the form gs://bucketName/fileName. If the file already exists, the operation fails. If the filename ends with .gz, the contents are compressed.
+ "database": [ # Databases (for example, guestbook) from which the export is made. If unspecified, all databases are exported.
+ "A String",
+ ],
+ },
+ }
+
+
+Returns:
+ An object of the form:
+
+ { # Database instance export response.
+ "kind": "sql#instancesExport", # This is always sql#instancesExport.
+ "operation": "A String", # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="get">get(project, instance)</code>
+ <pre>Retrieves a resource containing information about a database instance.
+
+Args:
+ project: string, Project ID of the project that contains the instance. You can find this on the project summary page of the Google APIs Console. (required)
+ instance: string, Database instance ID. This does not include the project ID. (required)
+
+Returns:
+ An object of the form:
+
+ { # A database instance resource.
+ "project": "A String", # The project ID of the project containing the database instance. The Google apps domain is prefixed if applicable. You can find this on the project summary page of the Google APIs Console.
+ "kind": "sql#instance", # This is always sql#instance.
+ "maxDiskSize": "A String", # The maximum disk size of the instance in bytes.
+ "settings": { # Database instance settings. # The user settings.
+ "kind": "sql#settings", # This is always sql#settings.
+ "authorizedGaeApplications": [ # The AppEngine app ids that can access this instance.
+ "A String",
+ ],
+ "activationPolicy": "A String", # The activation policy for this instance. This specifies when the instance should be activated and is applicable only when the instance state is RUNNABLE. This can be one of the following.
+ # ALWAYS: The instance should always be active.
+ # NEVER: The instance should never be activated.
+ # ON_DEMAND: The instance is activated upon receiving requests.
+ "backupConfiguration": [ # The daily backup configuration for the instance.
+ { # Database instance backup configuration.
+ "kind": "sql#backupConfiguration", # This is always sql#backupConfiguration.
+ "enabled": True or False, # Whether this configuration is enabled.
+ "id": "A String", # Identifier for this configuration. This gets generated automatically when a backup configuration is created.
+ "startTime": "A String", # Start time for the daily backup configuration in UTC timezone in the 24 hour format - HH:MM.
+ },
+ ],
+ "pricingPlan": "A String", # The pricing plan for this instance. This can be either PER_USE or PACKAGE.
+ "replicationType": "A String", # The type of replication this instance uses. This can be either ASYNCHRONOUS or SYNCHRONOUS.
+ "tier": "A String", # The tier of service for this instance, for example D1, D2. For more information, see pricing.
+ },
+ "region": "A String", # The geographical region. Can be us-east1 or europe-west1. Defaults to us-east1. The region can not be changed after instance creation.
+ "currentDiskSize": "A String", # The current disk usage of the instance in bytes.
+ "instance": "A String", # Name of the database instance. This does not include the project ID.
+ "state": "A String", # The current serving state of the database instance. This can be one of the following.
+ # RUNNABLE: The instance is running, or is ready to run when accessed.
+ # SUSPENDED: The instance is not available, for example due to problems with billing.
+ # PENDING_CREATE: The instance is being created.
+ # MAINTENANCE: The instance is down for maintenance.
+ # UNKNOWN_STATE: The state of the instance is unknown.
+ "etag": "A String", # Etag for this resource - a version number for the settings object in this resource. This field has no effect when passed as a request parameter. Instead, the contents of this field should be passed in an 'If-Match' http header for use in optimistic locking.
+ "databaseVersion": "A String", # The database engine type and version, for example MYSQL_5_5 for MySQL 5.5.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="import_">import_(project, instance, body)</code>
+ <pre>Imports data into a database instance from a MySQL dump file in Google Cloud Storage.
+
+Args:
+ project: string, Project ID of the project that contains the instance. You can find this on the project summary page of the Google APIs Console. (required)
+ instance: string, Database instance ID. This does not include the project ID. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # Database instance import request.
+ "importContext": { # Database instance import context. # Contains details about the import operation.
+ "kind": "sql#importContext", # This is always sql#importContext.
+ "uri": [ # A path to the MySQL dump file in Google Cloud Storage from which the import is made. The URI is in the form gs://bucketName/fileName. Compressed gzip files (.gz) are also supported.
+ "A String",
+ ],
+ "database": "A String", # The database (for example, guestbook) to which the import is made. If not set, it is assumed that the database is specified in the file to be imported.
+ },
+ }
+
+
+Returns:
+ An object of the form:
+
+ { # Database instance import response.
+ "kind": "sql#instancesImport", # This is always sql#instancesImport.
+ "operation": "A String", # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="insert">insert(project, body)</code>
+ <pre>Creates a new database instance.
+
+Args:
+ project: string, Project ID of the project to which the newly created database instances should belong. You can find this on the project summary page of the Google APIs Console. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # A database instance resource.
+ "project": "A String", # The project ID of the project containing the database instance. The Google apps domain is prefixed if applicable. You can find this on the project summary page of the Google APIs Console.
+ "kind": "sql#instance", # This is always sql#instance.
+ "maxDiskSize": "A String", # The maximum disk size of the instance in bytes.
+ "settings": { # Database instance settings. # The user settings.
+ "kind": "sql#settings", # This is always sql#settings.
+ "authorizedGaeApplications": [ # The AppEngine app ids that can access this instance.
+ "A String",
+ ],
+ "activationPolicy": "A String", # The activation policy for this instance. This specifies when the instance should be activated and is applicable only when the instance state is RUNNABLE. This can be one of the following.
+ # ALWAYS: The instance should always be active.
+ # NEVER: The instance should never be activated.
+ # ON_DEMAND: The instance is activated upon receiving requests.
+ "backupConfiguration": [ # The daily backup configuration for the instance.
+ { # Database instance backup configuration.
+ "kind": "sql#backupConfiguration", # This is always sql#backupConfiguration.
+ "enabled": True or False, # Whether this configuration is enabled.
+ "id": "A String", # Identifier for this configuration. This gets generated automatically when a backup configuration is created.
+ "startTime": "A String", # Start time for the daily backup configuration in UTC timezone in the 24 hour format - HH:MM.
+ },
+ ],
+ "pricingPlan": "A String", # The pricing plan for this instance. This can be either PER_USE or PACKAGE.
+ "replicationType": "A String", # The type of replication this instance uses. This can be either ASYNCHRONOUS or SYNCHRONOUS.
+ "tier": "A String", # The tier of service for this instance, for example D1, D2. For more information, see pricing.
+ },
+ "region": "A String", # The geographical region. Can be us-east1 or europe-west1. Defaults to us-east1. The region can not be changed after instance creation.
+ "currentDiskSize": "A String", # The current disk usage of the instance in bytes.
+ "instance": "A String", # Name of the database instance. This does not include the project ID.
+ "state": "A String", # The current serving state of the database instance. This can be one of the following.
+ # RUNNABLE: The instance is running, or is ready to run when accessed.
+ # SUSPENDED: The instance is not available, for example due to problems with billing.
+ # PENDING_CREATE: The instance is being created.
+ # MAINTENANCE: The instance is down for maintenance.
+ # UNKNOWN_STATE: The state of the instance is unknown.
+ "etag": "A String", # Etag for this resource - a version number for the settings object in this resource. This field has no effect when passed as a request parameter. Instead, the contents of this field should be passed in an 'If-Match' http header for use in optimistic locking.
+ "databaseVersion": "A String", # The database engine type and version, for example MYSQL_5_5 for MySQL 5.5.
+ }
+
+
+Returns:
+ An object of the form:
+
+ { # Database instance insert response.
+ "kind": "sql#instancesInsert", # This is always sql#instancesInsert.
+ "operation": "A String", # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="list">list(project, pageToken=None, maxResults=None)</code>
+ <pre>Lists instances under a given project in the alphabetical order of the instance name.
+
+Args:
+ project: string, Project ID of the project for which to list database instances. You can find this on the project summary page of the Google APIs Console. (required)
+ pageToken: string, A previously-returned page token representing part of the larger set of results to view.
+ maxResults: integer, The maximum number of results to return per response.
+
+Returns:
+ An object of the form:
+
+ { # Database instances list response.
+ "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": [ # List of database instance resources.
+ { # A database instance resource.
+ "project": "A String", # The project ID of the project containing the database instance. The Google apps domain is prefixed if applicable. You can find this on the project summary page of the Google APIs Console.
+ "kind": "sql#instance", # This is always sql#instance.
+ "maxDiskSize": "A String", # The maximum disk size of the instance in bytes.
+ "settings": { # Database instance settings. # The user settings.
+ "kind": "sql#settings", # This is always sql#settings.
+ "authorizedGaeApplications": [ # The AppEngine app ids that can access this instance.
+ "A String",
+ ],
+ "activationPolicy": "A String", # The activation policy for this instance. This specifies when the instance should be activated and is applicable only when the instance state is RUNNABLE. This can be one of the following.
+ # ALWAYS: The instance should always be active.
+ # NEVER: The instance should never be activated.
+ # ON_DEMAND: The instance is activated upon receiving requests.
+ "backupConfiguration": [ # The daily backup configuration for the instance.
+ { # Database instance backup configuration.
+ "kind": "sql#backupConfiguration", # This is always sql#backupConfiguration.
+ "enabled": True or False, # Whether this configuration is enabled.
+ "id": "A String", # Identifier for this configuration. This gets generated automatically when a backup configuration is created.
+ "startTime": "A String", # Start time for the daily backup configuration in UTC timezone in the 24 hour format - HH:MM.
+ },
+ ],
+ "pricingPlan": "A String", # The pricing plan for this instance. This can be either PER_USE or PACKAGE.
+ "replicationType": "A String", # The type of replication this instance uses. This can be either ASYNCHRONOUS or SYNCHRONOUS.
+ "tier": "A String", # The tier of service for this instance, for example D1, D2. For more information, see pricing.
+ },
+ "region": "A String", # The geographical region. Can be us-east1 or europe-west1. Defaults to us-east1. The region can not be changed after instance creation.
+ "currentDiskSize": "A String", # The current disk usage of the instance in bytes.
+ "instance": "A String", # Name of the database instance. This does not include the project ID.
+ "state": "A String", # The current serving state of the database instance. This can be one of the following.
+ # RUNNABLE: The instance is running, or is ready to run when accessed.
+ # SUSPENDED: The instance is not available, for example due to problems with billing.
+ # PENDING_CREATE: The instance is being created.
+ # MAINTENANCE: The instance is down for maintenance.
+ # UNKNOWN_STATE: The state of the instance is unknown.
+ "etag": "A String", # Etag for this resource - a version number for the settings object in this resource. This field has no effect when passed as a request parameter. Instead, the contents of this field should be passed in an 'If-Match' http header for use in optimistic locking.
+ "databaseVersion": "A String", # The database engine type and version, for example MYSQL_5_5 for MySQL 5.5.
+ },
+ ],
+ "kind": "sql#instancesList", # This is always sql#instancesList.
+ }</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(project, instance, body)</code>
+ <pre>Updates settings of a database instance. Caution: This is not a partial update, so you must include values for all the settings that you want to retain. For partial updates, use patch.. This method supports patch semantics.
+
+Args:
+ project: string, Project ID of the project that contains the instance. You can find this on the project summary page of the Google APIs Console. (required)
+ instance: string, Database instance ID. This does not include the project ID. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # A database instance resource.
+ "project": "A String", # The project ID of the project containing the database instance. The Google apps domain is prefixed if applicable. You can find this on the project summary page of the Google APIs Console.
+ "kind": "sql#instance", # This is always sql#instance.
+ "maxDiskSize": "A String", # The maximum disk size of the instance in bytes.
+ "settings": { # Database instance settings. # The user settings.
+ "kind": "sql#settings", # This is always sql#settings.
+ "authorizedGaeApplications": [ # The AppEngine app ids that can access this instance.
+ "A String",
+ ],
+ "activationPolicy": "A String", # The activation policy for this instance. This specifies when the instance should be activated and is applicable only when the instance state is RUNNABLE. This can be one of the following.
+ # ALWAYS: The instance should always be active.
+ # NEVER: The instance should never be activated.
+ # ON_DEMAND: The instance is activated upon receiving requests.
+ "backupConfiguration": [ # The daily backup configuration for the instance.
+ { # Database instance backup configuration.
+ "kind": "sql#backupConfiguration", # This is always sql#backupConfiguration.
+ "enabled": True or False, # Whether this configuration is enabled.
+ "id": "A String", # Identifier for this configuration. This gets generated automatically when a backup configuration is created.
+ "startTime": "A String", # Start time for the daily backup configuration in UTC timezone in the 24 hour format - HH:MM.
+ },
+ ],
+ "pricingPlan": "A String", # The pricing plan for this instance. This can be either PER_USE or PACKAGE.
+ "replicationType": "A String", # The type of replication this instance uses. This can be either ASYNCHRONOUS or SYNCHRONOUS.
+ "tier": "A String", # The tier of service for this instance, for example D1, D2. For more information, see pricing.
+ },
+ "region": "A String", # The geographical region. Can be us-east1 or europe-west1. Defaults to us-east1. The region can not be changed after instance creation.
+ "currentDiskSize": "A String", # The current disk usage of the instance in bytes.
+ "instance": "A String", # Name of the database instance. This does not include the project ID.
+ "state": "A String", # The current serving state of the database instance. This can be one of the following.
+ # RUNNABLE: The instance is running, or is ready to run when accessed.
+ # SUSPENDED: The instance is not available, for example due to problems with billing.
+ # PENDING_CREATE: The instance is being created.
+ # MAINTENANCE: The instance is down for maintenance.
+ # UNKNOWN_STATE: The state of the instance is unknown.
+ "etag": "A String", # Etag for this resource - a version number for the settings object in this resource. This field has no effect when passed as a request parameter. Instead, the contents of this field should be passed in an 'If-Match' http header for use in optimistic locking.
+ "databaseVersion": "A String", # The database engine type and version, for example MYSQL_5_5 for MySQL 5.5.
+ }
+
+
+Returns:
+ An object of the form:
+
+ { # Database instance update response.
+ "kind": "sql#instancesUpdate", # This is always sql#instancesUpdate.
+ "operation": "A String", # An identifier that uniquely identifies the operation. You can use this identifier to retrieve information about the operation.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="restart">restart(project, instance)</code>
+ <pre>Restarts a database instance.
+
+Args:
+ project: string, Project ID of the project that contains the instance to be restarted. You can find this on the project summary page of the Google APIs Console. (required)
+ instance: string, Database instance ID. This does not include the project ID. (required)
+
+Returns:
+ An object of the form:
+
+ { # Database instance restart response.
+ "kind": "sql#instancesRestart", # This is always sql#instancesRestart.
+ "operation": "A String", # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="restoreBackup">restoreBackup(project, instance, backupConfiguration, dueTime)</code>
+ <pre>Restores a backup of a database instance.
+
+Args:
+ project: string, Project ID of the project that contains the instance. You can find this on the project summary page of the Google APIs Console. (required)
+ instance: string, Database instance ID. This does not include the project ID. (required)
+ backupConfiguration: string, The identifier of the backup configuration. This gets generated automatically when a backup configuration is created. (required)
+ dueTime: string, The time when this run is due to start in RFC 3339 format, for example 2012-11-15T16:19:00.094Z. (required)
+
+Returns:
+ An object of the form:
+
+ { # Database instance restore backup response.
+ "kind": "sql#instancesRestoreBackup", # This is always sql#instancesRestoreBackup.
+ "operation": "A String", # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="update">update(project, instance, body)</code>
+ <pre>Updates settings of a database instance. Caution: This is not a partial update, so you must include values for all the settings that you want to retain. For partial updates, use patch.
+
+Args:
+ project: string, Project ID of the project that contains the instance. You can find this on the project summary page of the Google APIs Console. (required)
+ instance: string, Database instance ID. This does not include the project ID. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # A database instance resource.
+ "project": "A String", # The project ID of the project containing the database instance. The Google apps domain is prefixed if applicable. You can find this on the project summary page of the Google APIs Console.
+ "kind": "sql#instance", # This is always sql#instance.
+ "maxDiskSize": "A String", # The maximum disk size of the instance in bytes.
+ "settings": { # Database instance settings. # The user settings.
+ "kind": "sql#settings", # This is always sql#settings.
+ "authorizedGaeApplications": [ # The AppEngine app ids that can access this instance.
+ "A String",
+ ],
+ "activationPolicy": "A String", # The activation policy for this instance. This specifies when the instance should be activated and is applicable only when the instance state is RUNNABLE. This can be one of the following.
+ # ALWAYS: The instance should always be active.
+ # NEVER: The instance should never be activated.
+ # ON_DEMAND: The instance is activated upon receiving requests.
+ "backupConfiguration": [ # The daily backup configuration for the instance.
+ { # Database instance backup configuration.
+ "kind": "sql#backupConfiguration", # This is always sql#backupConfiguration.
+ "enabled": True or False, # Whether this configuration is enabled.
+ "id": "A String", # Identifier for this configuration. This gets generated automatically when a backup configuration is created.
+ "startTime": "A String", # Start time for the daily backup configuration in UTC timezone in the 24 hour format - HH:MM.
+ },
+ ],
+ "pricingPlan": "A String", # The pricing plan for this instance. This can be either PER_USE or PACKAGE.
+ "replicationType": "A String", # The type of replication this instance uses. This can be either ASYNCHRONOUS or SYNCHRONOUS.
+ "tier": "A String", # The tier of service for this instance, for example D1, D2. For more information, see pricing.
+ },
+ "region": "A String", # The geographical region. Can be us-east1 or europe-west1. Defaults to us-east1. The region can not be changed after instance creation.
+ "currentDiskSize": "A String", # The current disk usage of the instance in bytes.
+ "instance": "A String", # Name of the database instance. This does not include the project ID.
+ "state": "A String", # The current serving state of the database instance. This can be one of the following.
+ # RUNNABLE: The instance is running, or is ready to run when accessed.
+ # SUSPENDED: The instance is not available, for example due to problems with billing.
+ # PENDING_CREATE: The instance is being created.
+ # MAINTENANCE: The instance is down for maintenance.
+ # UNKNOWN_STATE: The state of the instance is unknown.
+ "etag": "A String", # Etag for this resource - a version number for the settings object in this resource. This field has no effect when passed as a request parameter. Instead, the contents of this field should be passed in an 'If-Match' http header for use in optimistic locking.
+ "databaseVersion": "A String", # The database engine type and version, for example MYSQL_5_5 for MySQL 5.5.
+ }
+
+
+Returns:
+ An object of the form:
+
+ { # Database instance update response.
+ "kind": "sql#instancesUpdate", # This is always sql#instancesUpdate.
+ "operation": "A String", # An identifier that uniquely identifies the operation. You can use this identifier to retrieve information about the operation.
+ }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/sqladmin_v1beta1.operations.html b/docs/dyn/sqladmin_v1beta1.operations.html
new file mode 100644
index 0000000..4c7b620
--- /dev/null
+++ b/docs/dyn/sqladmin_v1beta1.operations.html
@@ -0,0 +1,204 @@
+<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="sqladmin_v1beta1.html">Cloud SQL Administration API</a> . <a href="sqladmin_v1beta1.operations.html">operations</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#get">get(project, instance, operation)</a></code></p>
+<p class="firstline">Retrieves an instance operation that has been performed on an instance.</p>
+<p class="toc_element">
+ <code><a href="#list">list(project, instance, maxResults=None, pageToken=None)</a></code></p>
+<p class="firstline">Lists all instance operations that have been performed on the given database instance in the reverse chronological order of the start time.</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>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="get">get(project, instance, operation)</code>
+ <pre>Retrieves an instance operation that has been performed on an instance.
+
+Args:
+ project: string, Project ID of the project that contains the instance. You can find this on the project summary page of the Google APIs Console. (required)
+ instance: string, Database instance ID. This does not include the project ID. (required)
+ operation: string, Instance operation ID. (required)
+
+Returns:
+ An object of the form:
+
+ { # An Operations resource contains information about database instance operations such as create, delete, and restart. Operations resources are created in response to operations that were initiated; you never create them directly.
+ "importContext": { # Database instance import context. # The context for import operation, if applicable.
+ "kind": "sql#importContext", # This is always sql#importContext.
+ "uri": [ # A path to the MySQL dump file in Google Cloud Storage from which the import is made. The URI is in the form gs://bucketName/fileName. Compressed gzip files (.gz) are also supported.
+ "A String",
+ ],
+ "database": "A String", # The database (for example, guestbook) to which the import is made. If not set, it is assumed that the database is specified in the file to be imported.
+ },
+ "kind": "sql#instanceOperation", # This is always sql#instanceOperation.
+ "startTime": "A String", # The time this operation actually started in UTC timezone in RFC 3339 format, for example 2012-11-15T16:19:00.094Z.
+ "exportContext": { # Database instance export context. # The context for export operation, if applicable.
+ "table": [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database.
+ "A String",
+ ],
+ "kind": "sql#exportContext", # This is always sql#exportContext.
+ "uri": "A String", # The path to the file in Google Cloud Storage where the export will be stored, or where it was already stored. The URI is in the form gs://bucketName/fileName. If the file already exists, the operation fails. If the filename ends with .gz, the contents are compressed.
+ "database": [ # Databases (for example, guestbook) from which the export is made. If unspecified, all databases are exported.
+ "A String",
+ ],
+ },
+ "instance": "A String", # Name of the database instance.
+ "state": "A String", # The state of an operation. Valid values are PENDING, RUNNING, DONE, UNKNOWN.
+ "operationType": "A String", # The type of the operation. Valid values are CREATE, DELETE, UPDATE, RESTART, IMPORT, EXPORT, BACKUP_VOLUME, RESTORE_VOLUME.
+ "error": [ # The error(s) encountered by this operation. Only set if the operation results in an error.
+ { # Database instance operation error.
+ "kind": "sql#operationError", # This is always sql#operationError.
+ "code": "A String", # Identifies the specific error that occurred.
+ },
+ ],
+ "operation": "A String", # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
+ "endTime": "A String", # The time this operation finished in UTC timezone in RFC 3339 format, for example 2012-11-15T16:19:00.094Z.
+ "enqueuedTime": "A String", # The time this operation was enqueued in UTC timezone in RFC 3339 format, for example 2012-11-15T16:19:00.094Z.
+ "userEmailAddress": "A String", # The email address of the user who initiated this operation.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="list">list(project, instance, maxResults=None, pageToken=None)</code>
+ <pre>Lists all instance operations that have been performed on the given database instance in the reverse chronological order of the start time.
+
+Args:
+ project: string, Project ID of the project that contains the instance. You can find this on the project summary page of the Google APIs Console. (required)
+ instance: string, Database instance ID. This does not include the project ID. (required)
+ maxResults: integer, Maximum number of operations per response.
+ pageToken: string, A previously-returned page token representing part of the larger set of results to view.
+
+Returns:
+ An object of the form:
+
+ { # Database instance list operations response.
+ "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": [ # List of operation resources.
+ { # An Operations resource contains information about database instance operations such as create, delete, and restart. Operations resources are created in response to operations that were initiated; you never create them directly.
+ "importContext": { # Database instance import context. # The context for import operation, if applicable.
+ "kind": "sql#importContext", # This is always sql#importContext.
+ "uri": [ # A path to the MySQL dump file in Google Cloud Storage from which the import is made. The URI is in the form gs://bucketName/fileName. Compressed gzip files (.gz) are also supported.
+ "A String",
+ ],
+ "database": "A String", # The database (for example, guestbook) to which the import is made. If not set, it is assumed that the database is specified in the file to be imported.
+ },
+ "kind": "sql#instanceOperation", # This is always sql#instanceOperation.
+ "startTime": "A String", # The time this operation actually started in UTC timezone in RFC 3339 format, for example 2012-11-15T16:19:00.094Z.
+ "exportContext": { # Database instance export context. # The context for export operation, if applicable.
+ "table": [ # Tables to export, or that were exported, from the specified database. If you specify tables, specify one and only one database.
+ "A String",
+ ],
+ "kind": "sql#exportContext", # This is always sql#exportContext.
+ "uri": "A String", # The path to the file in Google Cloud Storage where the export will be stored, or where it was already stored. The URI is in the form gs://bucketName/fileName. If the file already exists, the operation fails. If the filename ends with .gz, the contents are compressed.
+ "database": [ # Databases (for example, guestbook) from which the export is made. If unspecified, all databases are exported.
+ "A String",
+ ],
+ },
+ "instance": "A String", # Name of the database instance.
+ "state": "A String", # The state of an operation. Valid values are PENDING, RUNNING, DONE, UNKNOWN.
+ "operationType": "A String", # The type of the operation. Valid values are CREATE, DELETE, UPDATE, RESTART, IMPORT, EXPORT, BACKUP_VOLUME, RESTORE_VOLUME.
+ "error": [ # The error(s) encountered by this operation. Only set if the operation results in an error.
+ { # Database instance operation error.
+ "kind": "sql#operationError", # This is always sql#operationError.
+ "code": "A String", # Identifies the specific error that occurred.
+ },
+ ],
+ "operation": "A String", # An identifier that uniquely identifies the operation. You can use this identifier to retrieve the Operations resource that has information about the operation.
+ "endTime": "A String", # The time this operation finished in UTC timezone in RFC 3339 format, for example 2012-11-15T16:19:00.094Z.
+ "enqueuedTime": "A String", # The time this operation was enqueued in UTC timezone in RFC 3339 format, for example 2012-11-15T16:19:00.094Z.
+ "userEmailAddress": "A String", # The email address of the user who initiated this operation.
+ },
+ ],
+ "kind": "sql#operationsList", # This is always sql#operationsList.
+ }</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>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/sqladmin_v1beta1.tiers.html b/docs/dyn/sqladmin_v1beta1.tiers.html
new file mode 100644
index 0000000..6db623c
--- /dev/null
+++ b/docs/dyn/sqladmin_v1beta1.tiers.html
@@ -0,0 +1,106 @@
+<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="sqladmin_v1beta1.html">Cloud SQL Administration API</a> . <a href="sqladmin_v1beta1.tiers.html">tiers</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#list">list()</a></code></p>
+<p class="firstline">Lists all available service tiers for Google Cloud SQL, for example D1, D2. For related information, see Pricing.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="list">list()</code>
+ <pre>Lists all available service tiers for Google Cloud SQL, for example D1, D2. For related information, see Pricing.
+
+Args:
+
+Returns:
+ An object of the form:
+
+ { # Tiers list response.
+ "items": [ # List of tiers.
+ { # A Google Cloud SQL service tier resource.
+ "DiskQuota": "A String", # The maximum disk size of this tier in bytes.
+ "tier": "A String", # An identifier for the service tier, for example D1, D2 etc. For related information, see Pricing.
+ "kind": "sql#tier", # This is always sql#tier.
+ "RAM": "A String", # The maximum RAM usage of this tier in bytes.
+ "region": [ # The applicable regions for this tier. Can be us-east1 and europe-west1.
+ "A String",
+ ],
+ },
+ ],
+ "kind": "sql#tiersList", # This is always sql#tiersList.
+ }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/storage_v1beta2.bucketAccessControls.html b/docs/dyn/storage_v1beta2.bucketAccessControls.html
new file mode 100644
index 0000000..b998751
--- /dev/null
+++ b/docs/dyn/storage_v1beta2.bucketAccessControls.html
@@ -0,0 +1,330 @@
+<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_v1beta2.html">Cloud Storage API</a> . <a href="storage_v1beta2.bucketAccessControls.html">bucketAccessControls</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#delete">delete(bucket, entity)</a></code></p>
+<p class="firstline">Permanently deletes the ACL entry for the specified entity on the specified bucket.</p>
+<p class="toc_element">
+ <code><a href="#get">get(bucket, entity)</a></code></p>
+<p class="firstline">Returns the ACL entry for the specified entity on the specified bucket.</p>
+<p class="toc_element">
+ <code><a href="#insert">insert(bucket, body)</a></code></p>
+<p class="firstline">Creates a new ACL entry on the specified bucket.</p>
+<p class="toc_element">
+ <code><a href="#list">list(bucket)</a></code></p>
+<p class="firstline">Retrieves ACL entries on the specified bucket.</p>
+<p class="toc_element">
+ <code><a href="#patch">patch(bucket, entity, body)</a></code></p>
+<p class="firstline">Updates an ACL entry on the specified bucket. This method supports patch semantics.</p>
+<p class="toc_element">
+ <code><a href="#update">update(bucket, entity, body)</a></code></p>
+<p class="firstline">Updates an ACL entry on the specified bucket.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="delete">delete(bucket, entity)</code>
+ <pre>Permanently deletes the ACL entry for the specified entity on the specified bucket.
+
+Args:
+ bucket: string, Name of a bucket. (required)
+ entity: string, The entity holding the permission. Can be user-userId, group-groupId, allUsers, or allAuthenticatedUsers. (required)
+</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="get">get(bucket, entity)</code>
+ <pre>Returns the ACL entry for the specified entity on the specified bucket.
+
+Args:
+ bucket: string, Name of a bucket. (required)
+ entity: string, The entity holding the permission. Can be user-userId, group-groupId, 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.
+ "bucket": "A String", # The name of the bucket.
+ "kind": "storage#bucketAccessControl", # The kind of item this is. For bucket access control entries, this is always storage#bucketAccessControl.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER, WRITER, or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "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)</code>
+ <pre>Creates a new ACL entry on the specified bucket.
+
+Args:
+ bucket: string, Name of a bucket. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # An access-control entry.
+ "domain": "A String", # The domain associated with the entity, if any.
+ "bucket": "A String", # The name of the bucket.
+ "kind": "storage#bucketAccessControl", # The kind of item this is. For bucket access control entries, this is always storage#bucketAccessControl.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER, WRITER, or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "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.
+ "bucket": "A String", # The name of the bucket.
+ "kind": "storage#bucketAccessControl", # The kind of item this is. For bucket access control entries, this is always storage#bucketAccessControl.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER, WRITER, or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "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)</code>
+ <pre>Retrieves ACL entries on the specified bucket.
+
+Args:
+ bucket: string, Name of a bucket. (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.
+ "bucket": "A String", # The name of the bucket.
+ "kind": "storage#bucketAccessControl", # The kind of item this is. For bucket access control entries, this is always storage#bucketAccessControl.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER, WRITER, or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "email": "A String", # The email address associated with the entity, if any.
+ "selfLink": "A String", # The link to this access-control entry.
+ },
+ ],
+ "kind": "storage#bucketAccessControls", # The kind of item this is. For lists of bucket access control entries, this is always storage#bucketAccessControls.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="patch">patch(bucket, entity, body)</code>
+ <pre>Updates an ACL entry on the specified bucket. This method supports patch semantics.
+
+Args:
+ bucket: string, Name of a bucket. (required)
+ entity: string, The entity holding the permission. Can be user-userId, group-groupId, allUsers, or allAuthenticatedUsers. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # An access-control entry.
+ "domain": "A String", # The domain associated with the entity, if any.
+ "bucket": "A String", # The name of the bucket.
+ "kind": "storage#bucketAccessControl", # The kind of item this is. For bucket access control entries, this is always storage#bucketAccessControl.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER, WRITER, or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "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.
+ "bucket": "A String", # The name of the bucket.
+ "kind": "storage#bucketAccessControl", # The kind of item this is. For bucket access control entries, this is always storage#bucketAccessControl.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER, WRITER, or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "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)</code>
+ <pre>Updates an ACL entry on the specified bucket.
+
+Args:
+ bucket: string, Name of a bucket. (required)
+ entity: string, The entity holding the permission. Can be user-userId, group-groupId, allUsers, or allAuthenticatedUsers. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # An access-control entry.
+ "domain": "A String", # The domain associated with the entity, if any.
+ "bucket": "A String", # The name of the bucket.
+ "kind": "storage#bucketAccessControl", # The kind of item this is. For bucket access control entries, this is always storage#bucketAccessControl.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER, WRITER, or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "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.
+ "bucket": "A String", # The name of the bucket.
+ "kind": "storage#bucketAccessControl", # The kind of item this is. For bucket access control entries, this is always storage#bucketAccessControl.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER, WRITER, or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "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>
\ No newline at end of file
diff --git a/docs/dyn/storage_v1beta2.buckets.html b/docs/dyn/storage_v1beta2.buckets.html
new file mode 100644
index 0000000..c014368
--- /dev/null
+++ b/docs/dyn/storage_v1beta2.buckets.html
@@ -0,0 +1,1006 @@
+<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_v1beta2.html">Cloud Storage API</a> . <a href="storage_v1beta2.buckets.html">buckets</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#delete">delete(bucket, ifMetagenerationMatch=None, ifMetagenerationNotMatch=None)</a></code></p>
+<p class="firstline">Permanently deletes an empty bucket.</p>
+<p class="toc_element">
+ <code><a href="#get">get(bucket, projection=None, ifMetagenerationMatch=None, ifMetagenerationNotMatch=None)</a></code></p>
+<p class="firstline">Returns metadata for the specified bucket.</p>
+<p class="toc_element">
+ <code><a href="#insert">insert(project, body, projection=None)</a></code></p>
+<p class="firstline">Creates a new bucket.</p>
+<p class="toc_element">
+ <code><a href="#list">list(project, projection=None, pageToken=None, maxResults=None)</a></code></p>
+<p class="firstline">Retrieves a list of buckets for a given project.</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, body, projection=None, ifMetagenerationMatch=None, ifMetagenerationNotMatch=None)</a></code></p>
+<p class="firstline">Updates a bucket. This method supports patch semantics.</p>
+<p class="toc_element">
+ <code><a href="#update">update(bucket, body, projection=None, ifMetagenerationMatch=None, ifMetagenerationNotMatch=None)</a></code></p>
+<p class="firstline">Updates a bucket.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="delete">delete(bucket, ifMetagenerationMatch=None, ifMetagenerationNotMatch=None)</code>
+ <pre>Permanently deletes an empty bucket.
+
+Args:
+ bucket: string, Name of a bucket. (required)
+ ifMetagenerationMatch: string, Makes the return of the bucket metadata conditional on whether the bucket's current metageneration matches the given value.
+ ifMetagenerationNotMatch: string, Makes the return of the bucket metadata conditional on whether the bucket's current metageneration does not match the given value.
+</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="get">get(bucket, projection=None, ifMetagenerationMatch=None, ifMetagenerationNotMatch=None)</code>
+ <pre>Returns metadata for the specified bucket.
+
+Args:
+ bucket: string, Name of a bucket. (required)
+ projection: string, Set of properties to return. Defaults to noAcl.
+ Allowed values
+ full - Include all properties.
+ noAcl - Omit acl and defaultObjectAcl properties.
+ ifMetagenerationMatch: string, Makes the return of the bucket metadata conditional on whether the bucket's current metageneration matches the given value.
+ ifMetagenerationNotMatch: string, Makes the return of the bucket metadata conditional on whether the bucket's current metageneration does not match the given value.
+
+Returns:
+ An object of the form:
+
+ { # A bucket.
+ "website": { # The bucket's website configuration.
+ "notFoundPage": "A String", # The custom object to return when a requested resource is not found.
+ "mainPageSuffix": "A String", # Behaves as the bucket's directory index where missing objects are treated as potential directories.
+ },
+ "kind": "storage#bucket", # The kind of item this is. For buckets, this is always storage#bucket.
+ "logging": { # The bucket's logging configuration, which defines the destination bucket and optional name prefix for the current bucket's logs.
+ "logObjectPrefix": "A String", # A prefix for log object names.
+ "logBucket": "A String", # The destination bucket where the current bucket's logs should be placed.
+ },
+ "name": "A String", # The name of the bucket.
+ "metageneration": "A String", # The metadata generation of this bucket.
+ "timeCreated": "A String", # Creation time of the bucket in RFC 3339 format.
+ "versioning": { # The bucket's versioning configuration.
+ "enabled": True or False, # While set to true, versioning is fully enabled for this bucket.
+ },
+ "acl": [ # Access controls on the bucket.
+ { # An access-control entry.
+ "domain": "A String", # The domain associated with the entity, if any.
+ "bucket": "A String", # The name of the bucket.
+ "kind": "storage#bucketAccessControl", # The kind of item this is. For bucket access control entries, this is always storage#bucketAccessControl.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER, WRITER, or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "email": "A String", # The email address associated with the entity, if any.
+ "selfLink": "A String", # The link to this access-control entry.
+ },
+ ],
+ "defaultObjectAcl": [ # Default access controls to apply to new objects when no ACL is provided.
+ { # An access-control entry.
+ "domain": "A String", # The domain associated with the entity, if any.
+ "generation": "A String", # The content generation of the object.
+ "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.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "email": "A String", # The email address associated with the entity, if any.
+ "selfLink": "A String", # The link to this access-control entry.
+ },
+ ],
+ "etag": "A String", # HTTP 1.1 Entity tag for the bucket.
+ "location": "A String", # The location of the bucket. Object data for objects in the bucket resides in physical storage within this region. Typical values are US and EU. Defaults to US. See the developer's guide for the authoritative list.
+ "cors": [ # The bucket's Cross-Origin Resource Sharing (CORS) configuration.
+ {
+ "origin": [ # The list of Origins eligible to receive CORS response headers. Note: "*" is permitted in the list of origins, and means "any Origin".
+ "A String",
+ ],
+ "responseHeader": [ # The list of HTTP headers other than the simple response headers to give permission for the user-agent to share across domains.
+ "A String",
+ ],
+ "method": [ # The list of HTTP methods on which to include CORS response headers, e.g. GET, OPTIONS, POST. Note, "*" is permitted in the list of methods, and means "any method".
+ "A String",
+ ],
+ "maxAgeSeconds": 42, # The value, in seconds, to return in the Access-Control-Max-Age header used in preflight responses.
+ },
+ ],
+ "owner": { # The owner of the bucket. This will always be the project team's owner group.
+ "entityId": "A String", # The ID for the entity.
+ "entity": "A String", # The entity, in the form group-groupId.
+ },
+ "lifecycle": { # The bucket's lifecycle configuration. See object lifecycle management for more information.
+ "rule": [ # A lifecycle management rule, which is made of an action to take and the condition(s) under which the action will be taken.
+ {
+ "action": { # The action to take.
+ "type": "A String", # Type of the action, e.g. Delete.
+ },
+ "condition": { # The condition(s) under which the action will be taken.
+ "isLive": True or False, # Relevant only for versioned objects. If the value is true, this condition matches live objects; if the value is false, it matches archived objects.
+ "numNewerVersions": 42, # Relevant only for versioned objects. If the value is N, this condition is satisfied when there are at least N versions (including the live version) newer than this version of the object.
+ "age": 42, # Age of an object (in days). This condition is satisfied when an object reaches the specified age.
+ "createdBefore": "A String", # A date in RFC 3339 format with only the date part, e.g. "2013-01-15". This condition is satisfied when an object is created before midnight of the specified date in UTC.
+ },
+ },
+ ],
+ },
+ "id": "A String", # The ID of the bucket.
+ "selfLink": "A String", # The URI of this bucket.
+ "storageClass": "A String", # The bucket's storage class. This defines how objects in the bucket will be stored and determines the SLA and the cost of storage. Typical values are STANDARD and DURABLE_REDUCED_AVAILABILITY. Defaults to STANDARD. See the developer's guide for the authoritative list.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="insert">insert(project, body, projection=None)</code>
+ <pre>Creates a new bucket.
+
+Args:
+ project: string, A valid API project identifier. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # A bucket.
+ "website": { # The bucket's website configuration.
+ "notFoundPage": "A String", # The custom object to return when a requested resource is not found.
+ "mainPageSuffix": "A String", # Behaves as the bucket's directory index where missing objects are treated as potential directories.
+ },
+ "kind": "storage#bucket", # The kind of item this is. For buckets, this is always storage#bucket.
+ "logging": { # The bucket's logging configuration, which defines the destination bucket and optional name prefix for the current bucket's logs.
+ "logObjectPrefix": "A String", # A prefix for log object names.
+ "logBucket": "A String", # The destination bucket where the current bucket's logs should be placed.
+ },
+ "name": "A String", # The name of the bucket.
+ "metageneration": "A String", # The metadata generation of this bucket.
+ "timeCreated": "A String", # Creation time of the bucket in RFC 3339 format.
+ "versioning": { # The bucket's versioning configuration.
+ "enabled": True or False, # While set to true, versioning is fully enabled for this bucket.
+ },
+ "acl": [ # Access controls on the bucket.
+ { # An access-control entry.
+ "domain": "A String", # The domain associated with the entity, if any.
+ "bucket": "A String", # The name of the bucket.
+ "kind": "storage#bucketAccessControl", # The kind of item this is. For bucket access control entries, this is always storage#bucketAccessControl.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER, WRITER, or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "email": "A String", # The email address associated with the entity, if any.
+ "selfLink": "A String", # The link to this access-control entry.
+ },
+ ],
+ "defaultObjectAcl": [ # Default access controls to apply to new objects when no ACL is provided.
+ { # An access-control entry.
+ "domain": "A String", # The domain associated with the entity, if any.
+ "generation": "A String", # The content generation of the object.
+ "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.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "email": "A String", # The email address associated with the entity, if any.
+ "selfLink": "A String", # The link to this access-control entry.
+ },
+ ],
+ "etag": "A String", # HTTP 1.1 Entity tag for the bucket.
+ "location": "A String", # The location of the bucket. Object data for objects in the bucket resides in physical storage within this region. Typical values are US and EU. Defaults to US. See the developer's guide for the authoritative list.
+ "cors": [ # The bucket's Cross-Origin Resource Sharing (CORS) configuration.
+ {
+ "origin": [ # The list of Origins eligible to receive CORS response headers. Note: "*" is permitted in the list of origins, and means "any Origin".
+ "A String",
+ ],
+ "responseHeader": [ # The list of HTTP headers other than the simple response headers to give permission for the user-agent to share across domains.
+ "A String",
+ ],
+ "method": [ # The list of HTTP methods on which to include CORS response headers, e.g. GET, OPTIONS, POST. Note, "*" is permitted in the list of methods, and means "any method".
+ "A String",
+ ],
+ "maxAgeSeconds": 42, # The value, in seconds, to return in the Access-Control-Max-Age header used in preflight responses.
+ },
+ ],
+ "owner": { # The owner of the bucket. This will always be the project team's owner group.
+ "entityId": "A String", # The ID for the entity.
+ "entity": "A String", # The entity, in the form group-groupId.
+ },
+ "lifecycle": { # The bucket's lifecycle configuration. See object lifecycle management for more information.
+ "rule": [ # A lifecycle management rule, which is made of an action to take and the condition(s) under which the action will be taken.
+ {
+ "action": { # The action to take.
+ "type": "A String", # Type of the action, e.g. Delete.
+ },
+ "condition": { # The condition(s) under which the action will be taken.
+ "isLive": True or False, # Relevant only for versioned objects. If the value is true, this condition matches live objects; if the value is false, it matches archived objects.
+ "numNewerVersions": 42, # Relevant only for versioned objects. If the value is N, this condition is satisfied when there are at least N versions (including the live version) newer than this version of the object.
+ "age": 42, # Age of an object (in days). This condition is satisfied when an object reaches the specified age.
+ "createdBefore": "A String", # A date in RFC 3339 format with only the date part, e.g. "2013-01-15". This condition is satisfied when an object is created before midnight of the specified date in UTC.
+ },
+ },
+ ],
+ },
+ "id": "A String", # The ID of the bucket.
+ "selfLink": "A String", # The URI of this bucket.
+ "storageClass": "A String", # The bucket's storage class. This defines how objects in the bucket will be stored and determines the SLA and the cost of storage. Typical values are STANDARD and DURABLE_REDUCED_AVAILABILITY. Defaults to STANDARD. See the developer's guide for the authoritative list.
+ }
+
+ projection: string, Set of properties to return. Defaults to noAcl, unless the bucket resource specifies acl or defaultObjectAcl properties, when it defaults to full.
+ Allowed values
+ full - Include all properties.
+ noAcl - Omit acl and defaultObjectAcl properties.
+
+Returns:
+ An object of the form:
+
+ { # A bucket.
+ "website": { # The bucket's website configuration.
+ "notFoundPage": "A String", # The custom object to return when a requested resource is not found.
+ "mainPageSuffix": "A String", # Behaves as the bucket's directory index where missing objects are treated as potential directories.
+ },
+ "kind": "storage#bucket", # The kind of item this is. For buckets, this is always storage#bucket.
+ "logging": { # The bucket's logging configuration, which defines the destination bucket and optional name prefix for the current bucket's logs.
+ "logObjectPrefix": "A String", # A prefix for log object names.
+ "logBucket": "A String", # The destination bucket where the current bucket's logs should be placed.
+ },
+ "name": "A String", # The name of the bucket.
+ "metageneration": "A String", # The metadata generation of this bucket.
+ "timeCreated": "A String", # Creation time of the bucket in RFC 3339 format.
+ "versioning": { # The bucket's versioning configuration.
+ "enabled": True or False, # While set to true, versioning is fully enabled for this bucket.
+ },
+ "acl": [ # Access controls on the bucket.
+ { # An access-control entry.
+ "domain": "A String", # The domain associated with the entity, if any.
+ "bucket": "A String", # The name of the bucket.
+ "kind": "storage#bucketAccessControl", # The kind of item this is. For bucket access control entries, this is always storage#bucketAccessControl.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER, WRITER, or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "email": "A String", # The email address associated with the entity, if any.
+ "selfLink": "A String", # The link to this access-control entry.
+ },
+ ],
+ "defaultObjectAcl": [ # Default access controls to apply to new objects when no ACL is provided.
+ { # An access-control entry.
+ "domain": "A String", # The domain associated with the entity, if any.
+ "generation": "A String", # The content generation of the object.
+ "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.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "email": "A String", # The email address associated with the entity, if any.
+ "selfLink": "A String", # The link to this access-control entry.
+ },
+ ],
+ "etag": "A String", # HTTP 1.1 Entity tag for the bucket.
+ "location": "A String", # The location of the bucket. Object data for objects in the bucket resides in physical storage within this region. Typical values are US and EU. Defaults to US. See the developer's guide for the authoritative list.
+ "cors": [ # The bucket's Cross-Origin Resource Sharing (CORS) configuration.
+ {
+ "origin": [ # The list of Origins eligible to receive CORS response headers. Note: "*" is permitted in the list of origins, and means "any Origin".
+ "A String",
+ ],
+ "responseHeader": [ # The list of HTTP headers other than the simple response headers to give permission for the user-agent to share across domains.
+ "A String",
+ ],
+ "method": [ # The list of HTTP methods on which to include CORS response headers, e.g. GET, OPTIONS, POST. Note, "*" is permitted in the list of methods, and means "any method".
+ "A String",
+ ],
+ "maxAgeSeconds": 42, # The value, in seconds, to return in the Access-Control-Max-Age header used in preflight responses.
+ },
+ ],
+ "owner": { # The owner of the bucket. This will always be the project team's owner group.
+ "entityId": "A String", # The ID for the entity.
+ "entity": "A String", # The entity, in the form group-groupId.
+ },
+ "lifecycle": { # The bucket's lifecycle configuration. See object lifecycle management for more information.
+ "rule": [ # A lifecycle management rule, which is made of an action to take and the condition(s) under which the action will be taken.
+ {
+ "action": { # The action to take.
+ "type": "A String", # Type of the action, e.g. Delete.
+ },
+ "condition": { # The condition(s) under which the action will be taken.
+ "isLive": True or False, # Relevant only for versioned objects. If the value is true, this condition matches live objects; if the value is false, it matches archived objects.
+ "numNewerVersions": 42, # Relevant only for versioned objects. If the value is N, this condition is satisfied when there are at least N versions (including the live version) newer than this version of the object.
+ "age": 42, # Age of an object (in days). This condition is satisfied when an object reaches the specified age.
+ "createdBefore": "A String", # A date in RFC 3339 format with only the date part, e.g. "2013-01-15". This condition is satisfied when an object is created before midnight of the specified date in UTC.
+ },
+ },
+ ],
+ },
+ "id": "A String", # The ID of the bucket.
+ "selfLink": "A String", # The URI of this bucket.
+ "storageClass": "A String", # The bucket's storage class. This defines how objects in the bucket will be stored and determines the SLA and the cost of storage. Typical values are STANDARD and DURABLE_REDUCED_AVAILABILITY. Defaults to STANDARD. See the developer's guide for the authoritative list.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="list">list(project, projection=None, pageToken=None, maxResults=None)</code>
+ <pre>Retrieves a list of buckets for a given project.
+
+Args:
+ project: string, A valid API project identifier. (required)
+ projection: string, Set of properties to return. Defaults to noAcl.
+ Allowed values
+ full - Include all properties.
+ noAcl - Omit acl and defaultObjectAcl properties.
+ pageToken: string, A previously-returned page token representing part of the larger set of results to view.
+ maxResults: integer, Maximum number of buckets to return.
+
+Returns:
+ An object of the form:
+
+ { # A list of buckets.
+ "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.
+ { # A bucket.
+ "website": { # The bucket's website configuration.
+ "notFoundPage": "A String", # The custom object to return when a requested resource is not found.
+ "mainPageSuffix": "A String", # Behaves as the bucket's directory index where missing objects are treated as potential directories.
+ },
+ "kind": "storage#bucket", # The kind of item this is. For buckets, this is always storage#bucket.
+ "logging": { # The bucket's logging configuration, which defines the destination bucket and optional name prefix for the current bucket's logs.
+ "logObjectPrefix": "A String", # A prefix for log object names.
+ "logBucket": "A String", # The destination bucket where the current bucket's logs should be placed.
+ },
+ "name": "A String", # The name of the bucket.
+ "metageneration": "A String", # The metadata generation of this bucket.
+ "timeCreated": "A String", # Creation time of the bucket in RFC 3339 format.
+ "versioning": { # The bucket's versioning configuration.
+ "enabled": True or False, # While set to true, versioning is fully enabled for this bucket.
+ },
+ "acl": [ # Access controls on the bucket.
+ { # An access-control entry.
+ "domain": "A String", # The domain associated with the entity, if any.
+ "bucket": "A String", # The name of the bucket.
+ "kind": "storage#bucketAccessControl", # The kind of item this is. For bucket access control entries, this is always storage#bucketAccessControl.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER, WRITER, or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "email": "A String", # The email address associated with the entity, if any.
+ "selfLink": "A String", # The link to this access-control entry.
+ },
+ ],
+ "defaultObjectAcl": [ # Default access controls to apply to new objects when no ACL is provided.
+ { # An access-control entry.
+ "domain": "A String", # The domain associated with the entity, if any.
+ "generation": "A String", # The content generation of the object.
+ "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.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "email": "A String", # The email address associated with the entity, if any.
+ "selfLink": "A String", # The link to this access-control entry.
+ },
+ ],
+ "etag": "A String", # HTTP 1.1 Entity tag for the bucket.
+ "location": "A String", # The location of the bucket. Object data for objects in the bucket resides in physical storage within this region. Typical values are US and EU. Defaults to US. See the developer's guide for the authoritative list.
+ "cors": [ # The bucket's Cross-Origin Resource Sharing (CORS) configuration.
+ {
+ "origin": [ # The list of Origins eligible to receive CORS response headers. Note: "*" is permitted in the list of origins, and means "any Origin".
+ "A String",
+ ],
+ "responseHeader": [ # The list of HTTP headers other than the simple response headers to give permission for the user-agent to share across domains.
+ "A String",
+ ],
+ "method": [ # The list of HTTP methods on which to include CORS response headers, e.g. GET, OPTIONS, POST. Note, "*" is permitted in the list of methods, and means "any method".
+ "A String",
+ ],
+ "maxAgeSeconds": 42, # The value, in seconds, to return in the Access-Control-Max-Age header used in preflight responses.
+ },
+ ],
+ "owner": { # The owner of the bucket. This will always be the project team's owner group.
+ "entityId": "A String", # The ID for the entity.
+ "entity": "A String", # The entity, in the form group-groupId.
+ },
+ "lifecycle": { # The bucket's lifecycle configuration. See object lifecycle management for more information.
+ "rule": [ # A lifecycle management rule, which is made of an action to take and the condition(s) under which the action will be taken.
+ {
+ "action": { # The action to take.
+ "type": "A String", # Type of the action, e.g. Delete.
+ },
+ "condition": { # The condition(s) under which the action will be taken.
+ "isLive": True or False, # Relevant only for versioned objects. If the value is true, this condition matches live objects; if the value is false, it matches archived objects.
+ "numNewerVersions": 42, # Relevant only for versioned objects. If the value is N, this condition is satisfied when there are at least N versions (including the live version) newer than this version of the object.
+ "age": 42, # Age of an object (in days). This condition is satisfied when an object reaches the specified age.
+ "createdBefore": "A String", # A date in RFC 3339 format with only the date part, e.g. "2013-01-15". This condition is satisfied when an object is created before midnight of the specified date in UTC.
+ },
+ },
+ ],
+ },
+ "id": "A String", # The ID of the bucket.
+ "selfLink": "A String", # The URI of this bucket.
+ "storageClass": "A String", # The bucket's storage class. This defines how objects in the bucket will be stored and determines the SLA and the cost of storage. Typical values are STANDARD and DURABLE_REDUCED_AVAILABILITY. Defaults to STANDARD. See the developer's guide for the authoritative list.
+ },
+ ],
+ "kind": "storage#buckets", # The kind of item this is. For lists of buckets, this is always storage#buckets.
+ }</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, body, projection=None, ifMetagenerationMatch=None, ifMetagenerationNotMatch=None)</code>
+ <pre>Updates a bucket. This method supports patch semantics.
+
+Args:
+ bucket: string, Name of a bucket. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # A bucket.
+ "website": { # The bucket's website configuration.
+ "notFoundPage": "A String", # The custom object to return when a requested resource is not found.
+ "mainPageSuffix": "A String", # Behaves as the bucket's directory index where missing objects are treated as potential directories.
+ },
+ "kind": "storage#bucket", # The kind of item this is. For buckets, this is always storage#bucket.
+ "logging": { # The bucket's logging configuration, which defines the destination bucket and optional name prefix for the current bucket's logs.
+ "logObjectPrefix": "A String", # A prefix for log object names.
+ "logBucket": "A String", # The destination bucket where the current bucket's logs should be placed.
+ },
+ "name": "A String", # The name of the bucket.
+ "metageneration": "A String", # The metadata generation of this bucket.
+ "timeCreated": "A String", # Creation time of the bucket in RFC 3339 format.
+ "versioning": { # The bucket's versioning configuration.
+ "enabled": True or False, # While set to true, versioning is fully enabled for this bucket.
+ },
+ "acl": [ # Access controls on the bucket.
+ { # An access-control entry.
+ "domain": "A String", # The domain associated with the entity, if any.
+ "bucket": "A String", # The name of the bucket.
+ "kind": "storage#bucketAccessControl", # The kind of item this is. For bucket access control entries, this is always storage#bucketAccessControl.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER, WRITER, or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "email": "A String", # The email address associated with the entity, if any.
+ "selfLink": "A String", # The link to this access-control entry.
+ },
+ ],
+ "defaultObjectAcl": [ # Default access controls to apply to new objects when no ACL is provided.
+ { # An access-control entry.
+ "domain": "A String", # The domain associated with the entity, if any.
+ "generation": "A String", # The content generation of the object.
+ "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.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "email": "A String", # The email address associated with the entity, if any.
+ "selfLink": "A String", # The link to this access-control entry.
+ },
+ ],
+ "etag": "A String", # HTTP 1.1 Entity tag for the bucket.
+ "location": "A String", # The location of the bucket. Object data for objects in the bucket resides in physical storage within this region. Typical values are US and EU. Defaults to US. See the developer's guide for the authoritative list.
+ "cors": [ # The bucket's Cross-Origin Resource Sharing (CORS) configuration.
+ {
+ "origin": [ # The list of Origins eligible to receive CORS response headers. Note: "*" is permitted in the list of origins, and means "any Origin".
+ "A String",
+ ],
+ "responseHeader": [ # The list of HTTP headers other than the simple response headers to give permission for the user-agent to share across domains.
+ "A String",
+ ],
+ "method": [ # The list of HTTP methods on which to include CORS response headers, e.g. GET, OPTIONS, POST. Note, "*" is permitted in the list of methods, and means "any method".
+ "A String",
+ ],
+ "maxAgeSeconds": 42, # The value, in seconds, to return in the Access-Control-Max-Age header used in preflight responses.
+ },
+ ],
+ "owner": { # The owner of the bucket. This will always be the project team's owner group.
+ "entityId": "A String", # The ID for the entity.
+ "entity": "A String", # The entity, in the form group-groupId.
+ },
+ "lifecycle": { # The bucket's lifecycle configuration. See object lifecycle management for more information.
+ "rule": [ # A lifecycle management rule, which is made of an action to take and the condition(s) under which the action will be taken.
+ {
+ "action": { # The action to take.
+ "type": "A String", # Type of the action, e.g. Delete.
+ },
+ "condition": { # The condition(s) under which the action will be taken.
+ "isLive": True or False, # Relevant only for versioned objects. If the value is true, this condition matches live objects; if the value is false, it matches archived objects.
+ "numNewerVersions": 42, # Relevant only for versioned objects. If the value is N, this condition is satisfied when there are at least N versions (including the live version) newer than this version of the object.
+ "age": 42, # Age of an object (in days). This condition is satisfied when an object reaches the specified age.
+ "createdBefore": "A String", # A date in RFC 3339 format with only the date part, e.g. "2013-01-15". This condition is satisfied when an object is created before midnight of the specified date in UTC.
+ },
+ },
+ ],
+ },
+ "id": "A String", # The ID of the bucket.
+ "selfLink": "A String", # The URI of this bucket.
+ "storageClass": "A String", # The bucket's storage class. This defines how objects in the bucket will be stored and determines the SLA and the cost of storage. Typical values are STANDARD and DURABLE_REDUCED_AVAILABILITY. Defaults to STANDARD. See the developer's guide for the authoritative list.
+ }
+
+ projection: string, Set of properties to return. Defaults to full.
+ Allowed values
+ full - Include all properties.
+ noAcl - Omit acl and defaultObjectAcl properties.
+ ifMetagenerationMatch: string, Makes the return of the bucket metadata conditional on whether the bucket's current metageneration matches the given value.
+ ifMetagenerationNotMatch: string, Makes the return of the bucket metadata conditional on whether the bucket's current metageneration does not match the given value.
+
+Returns:
+ An object of the form:
+
+ { # A bucket.
+ "website": { # The bucket's website configuration.
+ "notFoundPage": "A String", # The custom object to return when a requested resource is not found.
+ "mainPageSuffix": "A String", # Behaves as the bucket's directory index where missing objects are treated as potential directories.
+ },
+ "kind": "storage#bucket", # The kind of item this is. For buckets, this is always storage#bucket.
+ "logging": { # The bucket's logging configuration, which defines the destination bucket and optional name prefix for the current bucket's logs.
+ "logObjectPrefix": "A String", # A prefix for log object names.
+ "logBucket": "A String", # The destination bucket where the current bucket's logs should be placed.
+ },
+ "name": "A String", # The name of the bucket.
+ "metageneration": "A String", # The metadata generation of this bucket.
+ "timeCreated": "A String", # Creation time of the bucket in RFC 3339 format.
+ "versioning": { # The bucket's versioning configuration.
+ "enabled": True or False, # While set to true, versioning is fully enabled for this bucket.
+ },
+ "acl": [ # Access controls on the bucket.
+ { # An access-control entry.
+ "domain": "A String", # The domain associated with the entity, if any.
+ "bucket": "A String", # The name of the bucket.
+ "kind": "storage#bucketAccessControl", # The kind of item this is. For bucket access control entries, this is always storage#bucketAccessControl.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER, WRITER, or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "email": "A String", # The email address associated with the entity, if any.
+ "selfLink": "A String", # The link to this access-control entry.
+ },
+ ],
+ "defaultObjectAcl": [ # Default access controls to apply to new objects when no ACL is provided.
+ { # An access-control entry.
+ "domain": "A String", # The domain associated with the entity, if any.
+ "generation": "A String", # The content generation of the object.
+ "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.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "email": "A String", # The email address associated with the entity, if any.
+ "selfLink": "A String", # The link to this access-control entry.
+ },
+ ],
+ "etag": "A String", # HTTP 1.1 Entity tag for the bucket.
+ "location": "A String", # The location of the bucket. Object data for objects in the bucket resides in physical storage within this region. Typical values are US and EU. Defaults to US. See the developer's guide for the authoritative list.
+ "cors": [ # The bucket's Cross-Origin Resource Sharing (CORS) configuration.
+ {
+ "origin": [ # The list of Origins eligible to receive CORS response headers. Note: "*" is permitted in the list of origins, and means "any Origin".
+ "A String",
+ ],
+ "responseHeader": [ # The list of HTTP headers other than the simple response headers to give permission for the user-agent to share across domains.
+ "A String",
+ ],
+ "method": [ # The list of HTTP methods on which to include CORS response headers, e.g. GET, OPTIONS, POST. Note, "*" is permitted in the list of methods, and means "any method".
+ "A String",
+ ],
+ "maxAgeSeconds": 42, # The value, in seconds, to return in the Access-Control-Max-Age header used in preflight responses.
+ },
+ ],
+ "owner": { # The owner of the bucket. This will always be the project team's owner group.
+ "entityId": "A String", # The ID for the entity.
+ "entity": "A String", # The entity, in the form group-groupId.
+ },
+ "lifecycle": { # The bucket's lifecycle configuration. See object lifecycle management for more information.
+ "rule": [ # A lifecycle management rule, which is made of an action to take and the condition(s) under which the action will be taken.
+ {
+ "action": { # The action to take.
+ "type": "A String", # Type of the action, e.g. Delete.
+ },
+ "condition": { # The condition(s) under which the action will be taken.
+ "isLive": True or False, # Relevant only for versioned objects. If the value is true, this condition matches live objects; if the value is false, it matches archived objects.
+ "numNewerVersions": 42, # Relevant only for versioned objects. If the value is N, this condition is satisfied when there are at least N versions (including the live version) newer than this version of the object.
+ "age": 42, # Age of an object (in days). This condition is satisfied when an object reaches the specified age.
+ "createdBefore": "A String", # A date in RFC 3339 format with only the date part, e.g. "2013-01-15". This condition is satisfied when an object is created before midnight of the specified date in UTC.
+ },
+ },
+ ],
+ },
+ "id": "A String", # The ID of the bucket.
+ "selfLink": "A String", # The URI of this bucket.
+ "storageClass": "A String", # The bucket's storage class. This defines how objects in the bucket will be stored and determines the SLA and the cost of storage. Typical values are STANDARD and DURABLE_REDUCED_AVAILABILITY. Defaults to STANDARD. See the developer's guide for the authoritative list.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="update">update(bucket, body, projection=None, ifMetagenerationMatch=None, ifMetagenerationNotMatch=None)</code>
+ <pre>Updates a bucket.
+
+Args:
+ bucket: string, Name of a bucket. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # A bucket.
+ "website": { # The bucket's website configuration.
+ "notFoundPage": "A String", # The custom object to return when a requested resource is not found.
+ "mainPageSuffix": "A String", # Behaves as the bucket's directory index where missing objects are treated as potential directories.
+ },
+ "kind": "storage#bucket", # The kind of item this is. For buckets, this is always storage#bucket.
+ "logging": { # The bucket's logging configuration, which defines the destination bucket and optional name prefix for the current bucket's logs.
+ "logObjectPrefix": "A String", # A prefix for log object names.
+ "logBucket": "A String", # The destination bucket where the current bucket's logs should be placed.
+ },
+ "name": "A String", # The name of the bucket.
+ "metageneration": "A String", # The metadata generation of this bucket.
+ "timeCreated": "A String", # Creation time of the bucket in RFC 3339 format.
+ "versioning": { # The bucket's versioning configuration.
+ "enabled": True or False, # While set to true, versioning is fully enabled for this bucket.
+ },
+ "acl": [ # Access controls on the bucket.
+ { # An access-control entry.
+ "domain": "A String", # The domain associated with the entity, if any.
+ "bucket": "A String", # The name of the bucket.
+ "kind": "storage#bucketAccessControl", # The kind of item this is. For bucket access control entries, this is always storage#bucketAccessControl.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER, WRITER, or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "email": "A String", # The email address associated with the entity, if any.
+ "selfLink": "A String", # The link to this access-control entry.
+ },
+ ],
+ "defaultObjectAcl": [ # Default access controls to apply to new objects when no ACL is provided.
+ { # An access-control entry.
+ "domain": "A String", # The domain associated with the entity, if any.
+ "generation": "A String", # The content generation of the object.
+ "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.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "email": "A String", # The email address associated with the entity, if any.
+ "selfLink": "A String", # The link to this access-control entry.
+ },
+ ],
+ "etag": "A String", # HTTP 1.1 Entity tag for the bucket.
+ "location": "A String", # The location of the bucket. Object data for objects in the bucket resides in physical storage within this region. Typical values are US and EU. Defaults to US. See the developer's guide for the authoritative list.
+ "cors": [ # The bucket's Cross-Origin Resource Sharing (CORS) configuration.
+ {
+ "origin": [ # The list of Origins eligible to receive CORS response headers. Note: "*" is permitted in the list of origins, and means "any Origin".
+ "A String",
+ ],
+ "responseHeader": [ # The list of HTTP headers other than the simple response headers to give permission for the user-agent to share across domains.
+ "A String",
+ ],
+ "method": [ # The list of HTTP methods on which to include CORS response headers, e.g. GET, OPTIONS, POST. Note, "*" is permitted in the list of methods, and means "any method".
+ "A String",
+ ],
+ "maxAgeSeconds": 42, # The value, in seconds, to return in the Access-Control-Max-Age header used in preflight responses.
+ },
+ ],
+ "owner": { # The owner of the bucket. This will always be the project team's owner group.
+ "entityId": "A String", # The ID for the entity.
+ "entity": "A String", # The entity, in the form group-groupId.
+ },
+ "lifecycle": { # The bucket's lifecycle configuration. See object lifecycle management for more information.
+ "rule": [ # A lifecycle management rule, which is made of an action to take and the condition(s) under which the action will be taken.
+ {
+ "action": { # The action to take.
+ "type": "A String", # Type of the action, e.g. Delete.
+ },
+ "condition": { # The condition(s) under which the action will be taken.
+ "isLive": True or False, # Relevant only for versioned objects. If the value is true, this condition matches live objects; if the value is false, it matches archived objects.
+ "numNewerVersions": 42, # Relevant only for versioned objects. If the value is N, this condition is satisfied when there are at least N versions (including the live version) newer than this version of the object.
+ "age": 42, # Age of an object (in days). This condition is satisfied when an object reaches the specified age.
+ "createdBefore": "A String", # A date in RFC 3339 format with only the date part, e.g. "2013-01-15". This condition is satisfied when an object is created before midnight of the specified date in UTC.
+ },
+ },
+ ],
+ },
+ "id": "A String", # The ID of the bucket.
+ "selfLink": "A String", # The URI of this bucket.
+ "storageClass": "A String", # The bucket's storage class. This defines how objects in the bucket will be stored and determines the SLA and the cost of storage. Typical values are STANDARD and DURABLE_REDUCED_AVAILABILITY. Defaults to STANDARD. See the developer's guide for the authoritative list.
+ }
+
+ projection: string, Set of properties to return. Defaults to full.
+ Allowed values
+ full - Include all properties.
+ noAcl - Omit acl and defaultObjectAcl properties.
+ ifMetagenerationMatch: string, Makes the return of the bucket metadata conditional on whether the bucket's current metageneration matches the given value.
+ ifMetagenerationNotMatch: string, Makes the return of the bucket metadata conditional on whether the bucket's current metageneration does not match the given value.
+
+Returns:
+ An object of the form:
+
+ { # A bucket.
+ "website": { # The bucket's website configuration.
+ "notFoundPage": "A String", # The custom object to return when a requested resource is not found.
+ "mainPageSuffix": "A String", # Behaves as the bucket's directory index where missing objects are treated as potential directories.
+ },
+ "kind": "storage#bucket", # The kind of item this is. For buckets, this is always storage#bucket.
+ "logging": { # The bucket's logging configuration, which defines the destination bucket and optional name prefix for the current bucket's logs.
+ "logObjectPrefix": "A String", # A prefix for log object names.
+ "logBucket": "A String", # The destination bucket where the current bucket's logs should be placed.
+ },
+ "name": "A String", # The name of the bucket.
+ "metageneration": "A String", # The metadata generation of this bucket.
+ "timeCreated": "A String", # Creation time of the bucket in RFC 3339 format.
+ "versioning": { # The bucket's versioning configuration.
+ "enabled": True or False, # While set to true, versioning is fully enabled for this bucket.
+ },
+ "acl": [ # Access controls on the bucket.
+ { # An access-control entry.
+ "domain": "A String", # The domain associated with the entity, if any.
+ "bucket": "A String", # The name of the bucket.
+ "kind": "storage#bucketAccessControl", # The kind of item this is. For bucket access control entries, this is always storage#bucketAccessControl.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER, WRITER, or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "email": "A String", # The email address associated with the entity, if any.
+ "selfLink": "A String", # The link to this access-control entry.
+ },
+ ],
+ "defaultObjectAcl": [ # Default access controls to apply to new objects when no ACL is provided.
+ { # An access-control entry.
+ "domain": "A String", # The domain associated with the entity, if any.
+ "generation": "A String", # The content generation of the object.
+ "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.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "email": "A String", # The email address associated with the entity, if any.
+ "selfLink": "A String", # The link to this access-control entry.
+ },
+ ],
+ "etag": "A String", # HTTP 1.1 Entity tag for the bucket.
+ "location": "A String", # The location of the bucket. Object data for objects in the bucket resides in physical storage within this region. Typical values are US and EU. Defaults to US. See the developer's guide for the authoritative list.
+ "cors": [ # The bucket's Cross-Origin Resource Sharing (CORS) configuration.
+ {
+ "origin": [ # The list of Origins eligible to receive CORS response headers. Note: "*" is permitted in the list of origins, and means "any Origin".
+ "A String",
+ ],
+ "responseHeader": [ # The list of HTTP headers other than the simple response headers to give permission for the user-agent to share across domains.
+ "A String",
+ ],
+ "method": [ # The list of HTTP methods on which to include CORS response headers, e.g. GET, OPTIONS, POST. Note, "*" is permitted in the list of methods, and means "any method".
+ "A String",
+ ],
+ "maxAgeSeconds": 42, # The value, in seconds, to return in the Access-Control-Max-Age header used in preflight responses.
+ },
+ ],
+ "owner": { # The owner of the bucket. This will always be the project team's owner group.
+ "entityId": "A String", # The ID for the entity.
+ "entity": "A String", # The entity, in the form group-groupId.
+ },
+ "lifecycle": { # The bucket's lifecycle configuration. See object lifecycle management for more information.
+ "rule": [ # A lifecycle management rule, which is made of an action to take and the condition(s) under which the action will be taken.
+ {
+ "action": { # The action to take.
+ "type": "A String", # Type of the action, e.g. Delete.
+ },
+ "condition": { # The condition(s) under which the action will be taken.
+ "isLive": True or False, # Relevant only for versioned objects. If the value is true, this condition matches live objects; if the value is false, it matches archived objects.
+ "numNewerVersions": 42, # Relevant only for versioned objects. If the value is N, this condition is satisfied when there are at least N versions (including the live version) newer than this version of the object.
+ "age": 42, # Age of an object (in days). This condition is satisfied when an object reaches the specified age.
+ "createdBefore": "A String", # A date in RFC 3339 format with only the date part, e.g. "2013-01-15". This condition is satisfied when an object is created before midnight of the specified date in UTC.
+ },
+ },
+ ],
+ },
+ "id": "A String", # The ID of the bucket.
+ "selfLink": "A String", # The URI of this bucket.
+ "storageClass": "A String", # The bucket's storage class. This defines how objects in the bucket will be stored and determines the SLA and the cost of storage. Typical values are STANDARD and DURABLE_REDUCED_AVAILABILITY. Defaults to STANDARD. See the developer's guide for the authoritative list.
+ }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/storage_v1beta2.channels.html b/docs/dyn/storage_v1beta2.channels.html
new file mode 100644
index 0000000..9e1d0f3
--- /dev/null
+++ b/docs/dyn/storage_v1beta2.channels.html
@@ -0,0 +1,106 @@
+<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_v1beta2.html">Cloud Storage API</a> . <a href="storage_v1beta2.channels.html">channels</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#stop">stop(body)</a></code></p>
+<p class="firstline">A description of how to use this function</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="stop">stop(body)</code>
+ <pre>A description of how to use this function
+
+Args:
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{
+ "resourceUri": "A String", # The canonicalized ID of the watched resource.
+ "kind": "api#channel", # A channel watching an API resource
+ "resourceId": "A String", # An opaque id that identifies the resource that is being watched. Stable across different API versions
+ "token": "A String", # An arbitrary string associated with the channel that is delivered to the target address with each event delivered over this channel.
+ "params": { # Additional parameters controlling delivery channel behavior
+ "a_key": "A String", # Declares a new parameter by name.
+ },
+ "expiration": "A String", # The expiration instant for this channel if it is defined.
+ "address": "A String", # The address of the receiving entity where events are delivered. Specific to the channel type.
+ "type": "A String", # The type of delivery mechanism used by this channel
+ "id": "A String", # A UUID for the channel
+ }
+
+</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/storage_v1beta2.defaultObjectAccessControls.html b/docs/dyn/storage_v1beta2.defaultObjectAccessControls.html
new file mode 100644
index 0000000..5409d46
--- /dev/null
+++ b/docs/dyn/storage_v1beta2.defaultObjectAccessControls.html
@@ -0,0 +1,327 @@
+<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_v1beta2.html">Cloud Storage API</a> . <a href="storage_v1beta2.defaultObjectAccessControls.html">defaultObjectAccessControls</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#delete">delete(bucket, entity)</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)</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)</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)</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)</a></code></p>
+<p class="firstline">Updates a default object ACL entry on the specified bucket. This method supports patch semantics.</p>
+<p class="toc_element">
+ <code><a href="#update">update(bucket, entity, body)</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)</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, group-groupId, allUsers, or allAuthenticatedUsers. (required)
+</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="get">get(bucket, entity)</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, group-groupId, 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.
+ "generation": "A String", # The content generation of the object.
+ "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.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "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)</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.
+ "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.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "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.
+ "generation": "A String", # The content generation of the object.
+ "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.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "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)</code>
+ <pre>Retrieves default object ACL entries on the specified bucket.
+
+Args:
+ bucket: string, Name of a bucket. (required)
+
+Returns:
+ An object of the form:
+
+ { # An access-control list.
+ "items": [ # The list of items.
+ "",
+ ],
+ "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)</code>
+ <pre>Updates a default object ACL entry on the specified bucket. This method supports patch semantics.
+
+Args:
+ bucket: string, Name of a bucket. (required)
+ entity: string, The entity holding the permission. Can be user-userId, group-groupId, 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.
+ "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.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "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.
+ "generation": "A String", # The content generation of the object.
+ "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.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "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)</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, group-groupId, 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.
+ "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.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "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.
+ "generation": "A String", # The content generation of the object.
+ "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.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "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>
\ No newline at end of file
diff --git a/docs/dyn/storage_v1beta2.html b/docs/dyn/storage_v1beta2.html
new file mode 100644
index 0000000..31c606a
--- /dev/null
+++ b/docs/dyn/storage_v1beta2.html
@@ -0,0 +1,107 @@
+<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_v1beta2.html">Cloud Storage API</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="storage_v1beta2.bucketAccessControls.html">bucketAccessControls()</a></code>
+</p>
+<p class="firstline">Returns the bucketAccessControls Resource.</p>
+
+<p class="toc_element">
+ <code><a href="storage_v1beta2.buckets.html">buckets()</a></code>
+</p>
+<p class="firstline">Returns the buckets Resource.</p>
+
+<p class="toc_element">
+ <code><a href="storage_v1beta2.channels.html">channels()</a></code>
+</p>
+<p class="firstline">Returns the channels Resource.</p>
+
+<p class="toc_element">
+ <code><a href="storage_v1beta2.defaultObjectAccessControls.html">defaultObjectAccessControls()</a></code>
+</p>
+<p class="firstline">Returns the defaultObjectAccessControls Resource.</p>
+
+<p class="toc_element">
+ <code><a href="storage_v1beta2.objectAccessControls.html">objectAccessControls()</a></code>
+</p>
+<p class="firstline">Returns the objectAccessControls Resource.</p>
+
+<p class="toc_element">
+ <code><a href="storage_v1beta2.objects.html">objects()</a></code>
+</p>
+<p class="firstline">Returns the objects Resource.</p>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/storage_v1beta2.objectAccessControls.html b/docs/dyn/storage_v1beta2.objectAccessControls.html
new file mode 100644
index 0000000..c756438
--- /dev/null
+++ b/docs/dyn/storage_v1beta2.objectAccessControls.html
@@ -0,0 +1,339 @@
+<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_v1beta2.html">Cloud Storage API</a> . <a href="storage_v1beta2.objectAccessControls.html">objectAccessControls</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#delete">delete(bucket, object, entity, generation=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)</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)</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)</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)</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, generation=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)</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. (required)
+ entity: string, The entity holding the permission. Can be user-userId, group-groupId, allUsers, or allAuthenticatedUsers. (required)
+ generation: string, If present, selects a specific revision of this object (as opposed to the latest version, the default).
+</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="get">get(bucket, object, entity, generation=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. (required)
+ entity: string, The entity holding the permission. Can be user-userId, group-groupId, allUsers, or allAuthenticatedUsers. (required)
+ generation: string, If present, selects a specific revision of this object (as opposed to the latest version, the default).
+
+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.
+ "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.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "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)</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.
+ "generation": "A String", # The content generation of the object.
+ "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.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "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).
+
+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.
+ "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.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "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)</code>
+ <pre>Retrieves ACL entries on the specified object.
+
+Args:
+ bucket: string, Name of a bucket. (required)
+ object: string, Name of the object. (required)
+ generation: string, If present, selects a specific revision of this object (as opposed to the latest version, the default).
+
+Returns:
+ An object of the form:
+
+ { # An access-control list.
+ "items": [ # The list of items.
+ "",
+ ],
+ "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)</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, group-groupId, 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.
+ "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.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "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).
+
+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.
+ "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.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "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)</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, group-groupId, 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.
+ "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.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "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).
+
+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.
+ "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.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "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>
\ No newline at end of file
diff --git a/docs/dyn/storage_v1beta2.objects.html b/docs/dyn/storage_v1beta2.objects.html
new file mode 100644
index 0000000..ead03db
--- /dev/null
+++ b/docs/dyn/storage_v1beta2.objects.html
@@ -0,0 +1,1354 @@
+<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_v1beta2.html">Cloud Storage API</a> . <a href="storage_v1beta2.objects.html">objects</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#compose">compose(destinationBucket, destinationObject, body, ifMetagenerationMatch=None, ifGenerationMatch=None)</a></code></p>
+<p class="firstline">Concatenates a list of existing objects into a new object in the same bucket.</p>
+<p class="toc_element">
+ <code><a href="#compose_media">compose_media(destinationBucket, destinationObject, body, ifMetagenerationMatch=None, ifGenerationMatch=None)</a></code></p>
+<p class="firstline">Concatenates a list of existing objects into a new object in the same bucket.</p>
+<p class="toc_element">
+ <code><a href="#copy">copy(sourceBucket, sourceObject, destinationBucket, destinationObject, body, projection=None, sourceGeneration=None, ifSourceGenerationNotMatch=None, ifSourceMetagenerationNotMatch=None, ifGenerationMatch=None, ifGenerationNotMatch=None, ifMetagenerationNotMatch=None, ifSourceGenerationMatch=None, ifSourceMetagenerationMatch=None, ifMetagenerationMatch=None)</a></code></p>
+<p class="firstline">Copies an object to a destination in the same location. Optionally overrides metadata.</p>
+<p class="toc_element">
+ <code><a href="#copy_media">copy_media(sourceBucket, sourceObject, destinationBucket, destinationObject, body, projection=None, sourceGeneration=None, ifSourceGenerationNotMatch=None, ifSourceMetagenerationNotMatch=None, ifGenerationMatch=None, ifGenerationNotMatch=None, ifMetagenerationNotMatch=None, ifSourceGenerationMatch=None, ifSourceMetagenerationMatch=None, ifMetagenerationMatch=None)</a></code></p>
+<p class="firstline">Copies an object to a destination in the same location. Optionally overrides metadata.</p>
+<p class="toc_element">
+ <code><a href="#delete">delete(bucket, object, ifGenerationNotMatch=None, generation=None, ifMetagenerationMatch=None, ifGenerationMatch=None, ifMetagenerationNotMatch=None)</a></code></p>
+<p class="firstline">Deletes data blobs and associated metadata. Deletions are permanent if versioning is not enabled for the bucket, or if the generation parameter is used.</p>
+<p class="toc_element">
+ <code><a href="#get">get(bucket, object, ifGenerationNotMatch=None, generation=None, ifMetagenerationMatch=None, ifGenerationMatch=None, ifMetagenerationNotMatch=None, 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, ifGenerationNotMatch=None, generation=None, ifMetagenerationMatch=None, ifGenerationMatch=None, ifMetagenerationNotMatch=None, 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, projection=None, ifMetagenerationMatch=None, name=None, ifGenerationMatch=None, ifMetagenerationNotMatch=None, ifGenerationNotMatch=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, projection=None, ifMetagenerationMatch=None, name=None, ifGenerationMatch=None, ifMetagenerationNotMatch=None, ifGenerationNotMatch=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, versions=None, delimiter=None, maxResults=None, pageToken=None, prefix=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, ifGenerationNotMatch=None, generation=None, ifMetagenerationMatch=None, ifGenerationMatch=None, ifMetagenerationNotMatch=None, 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, ifGenerationNotMatch=None, generation=None, ifMetagenerationMatch=None, ifGenerationMatch=None, ifMetagenerationNotMatch=None, 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, ifGenerationNotMatch=None, generation=None, ifMetagenerationMatch=None, ifGenerationMatch=None, ifMetagenerationNotMatch=None, projection=None)</a></code></p>
+<p class="firstline">Updates a data blob's associated metadata.</p>
+<p class="toc_element">
+ <code><a href="#watchAll">watchAll(bucket, body, projection=None, versions=None, delimiter=None, maxResults=None, pageToken=None, prefix=None)</a></code></p>
+<p class="firstline">Watch for changes on all objects in a bucket.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="compose">compose(destinationBucket, destinationObject, body, ifMetagenerationMatch=None, ifGenerationMatch=None)</code>
+ <pre>Concatenates a list of existing objects into a new object in the same bucket.
+
+Args:
+ destinationBucket: string, Name of the bucket in which to store the new object. (required)
+ destinationObject: string, Name of the new object. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # A Compose request.
+ "kind": "storage#composeRequest", # The kind of item this is.
+ "destination": { # An object. # Properties of the resulting object
+ "generation": "A String", # The content generation of this object. Used for object versioning.
+ "componentCount": 42, # Number of underlying components that make up this object. Components are accumulated by compose operations and are limited to a count of 32.
+ "mediaLink": "A String", # Media download link.
+ "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.
+ "generation": "A String", # The content generation of the object.
+ "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.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "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.
+ "size": "A String", # Content-Length of the data in bytes.
+ "timeDeleted": "A String", # Deletion time of the object in RFC 3339 format. Will be returned if and only if this version of the object has been deleted.
+ "md5Hash": "A String", # MD5 hash of the data; encoded using base64.
+ "crc32c": "A String", # CRC32c checksum, as described in RFC 4960, Appendix B; encoded using base64.
+ "etag": "A String", # HTTP 1.1 Entity tag for the object.
+ "metadata": { # User-provided metadata, in key/value pairs.
+ "a_key": "A String", # An individual metadata entry.
+ },
+ "updated": "A String", # Modification time of the object metadata in RFC 3339 format.
+ "contentType": "A String", # Content-Type of the object data.
+ "contentLanguage": "A String", # Content-Language of the object data.
+ "metageneration": "A String", # The generation of the metadata for this object at this generation. Used for metadata versioning. Has no meaning outside of the context of this generation.
+ "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.
+ "bucket": "A String", # The bucket containing this object.
+ "contentEncoding": "A String", # Content-Encoding of the object data.
+ "contentDisposition": "A String", # Content-Disposition of the object data.
+ "selfLink": "A String", # The link to this object.
+ },
+ "sourceObjects": [ # The list of source objects that will be concatenated into a single object.
+ {
+ "generation": "A String", # The generation of this object to use as the source.
+ "name": "A String", # The source object's name. The source object's bucket is implicitly the destination bucket.
+ "objectPreconditions": {
+ "ifGenerationMatch": "A String", # Only perform the composition if the generation of the source object that would be used matches this value. If this value and a generation are both specified, they must be the same value or the call will fail.
+ },
+ },
+ ],
+ }
+
+ ifMetagenerationMatch: string, Makes the operation conditional on whether the object's current metageneration matches the given value.
+ ifGenerationMatch: string, Makes the operation conditional on whether the object's current generation matches the given value.
+
+Returns:
+ An object of the form:
+
+ { # An object.
+ "generation": "A String", # The content generation of this object. Used for object versioning.
+ "componentCount": 42, # Number of underlying components that make up this object. Components are accumulated by compose operations and are limited to a count of 32.
+ "mediaLink": "A String", # Media download link.
+ "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.
+ "generation": "A String", # The content generation of the object.
+ "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.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "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.
+ "size": "A String", # Content-Length of the data in bytes.
+ "timeDeleted": "A String", # Deletion time of the object in RFC 3339 format. Will be returned if and only if this version of the object has been deleted.
+ "md5Hash": "A String", # MD5 hash of the data; encoded using base64.
+ "crc32c": "A String", # CRC32c checksum, as described in RFC 4960, Appendix B; encoded using base64.
+ "etag": "A String", # HTTP 1.1 Entity tag for the object.
+ "metadata": { # User-provided metadata, in key/value pairs.
+ "a_key": "A String", # An individual metadata entry.
+ },
+ "updated": "A String", # Modification time of the object metadata in RFC 3339 format.
+ "contentType": "A String", # Content-Type of the object data.
+ "contentLanguage": "A String", # Content-Language of the object data.
+ "metageneration": "A String", # The generation of the metadata for this object at this generation. Used for metadata versioning. Has no meaning outside of the context of this generation.
+ "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.
+ "bucket": "A String", # The bucket containing this object.
+ "contentEncoding": "A String", # Content-Encoding of the object data.
+ "contentDisposition": "A String", # Content-Disposition of the object data.
+ "selfLink": "A String", # The link to this object.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="compose_media">compose_media(destinationBucket, destinationObject, body, ifMetagenerationMatch=None, ifGenerationMatch=None)</code>
+ <pre>Concatenates a list of existing objects into a new object in the same bucket.
+
+Args:
+ destinationBucket: string, Name of the bucket in which to store the new object. (required)
+ destinationObject: string, Name of the new object. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # A Compose request.
+ "kind": "storage#composeRequest", # The kind of item this is.
+ "destination": { # An object. # Properties of the resulting object
+ "generation": "A String", # The content generation of this object. Used for object versioning.
+ "componentCount": 42, # Number of underlying components that make up this object. Components are accumulated by compose operations and are limited to a count of 32.
+ "mediaLink": "A String", # Media download link.
+ "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.
+ "generation": "A String", # The content generation of the object.
+ "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.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "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.
+ "size": "A String", # Content-Length of the data in bytes.
+ "timeDeleted": "A String", # Deletion time of the object in RFC 3339 format. Will be returned if and only if this version of the object has been deleted.
+ "md5Hash": "A String", # MD5 hash of the data; encoded using base64.
+ "crc32c": "A String", # CRC32c checksum, as described in RFC 4960, Appendix B; encoded using base64.
+ "etag": "A String", # HTTP 1.1 Entity tag for the object.
+ "metadata": { # User-provided metadata, in key/value pairs.
+ "a_key": "A String", # An individual metadata entry.
+ },
+ "updated": "A String", # Modification time of the object metadata in RFC 3339 format.
+ "contentType": "A String", # Content-Type of the object data.
+ "contentLanguage": "A String", # Content-Language of the object data.
+ "metageneration": "A String", # The generation of the metadata for this object at this generation. Used for metadata versioning. Has no meaning outside of the context of this generation.
+ "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.
+ "bucket": "A String", # The bucket containing this object.
+ "contentEncoding": "A String", # Content-Encoding of the object data.
+ "contentDisposition": "A String", # Content-Disposition of the object data.
+ "selfLink": "A String", # The link to this object.
+ },
+ "sourceObjects": [ # The list of source objects that will be concatenated into a single object.
+ {
+ "generation": "A String", # The generation of this object to use as the source.
+ "name": "A String", # The source object's name. The source object's bucket is implicitly the destination bucket.
+ "objectPreconditions": {
+ "ifGenerationMatch": "A String", # Only perform the composition if the generation of the source object that would be used matches this value. If this value and a generation are both specified, they must be the same value or the call will fail.
+ },
+ },
+ ],
+ }
+
+ ifMetagenerationMatch: string, Makes the operation conditional on whether the object's current metageneration matches the given value.
+ ifGenerationMatch: string, Makes the operation conditional on whether the object's current generation matches the given value.
+
+Returns:
+ The media object as a string.
+
+ </pre>
+</div>
+
+<div class="method">
+ <code class="details" id="copy">copy(sourceBucket, sourceObject, destinationBucket, destinationObject, body, projection=None, sourceGeneration=None, ifSourceGenerationNotMatch=None, ifSourceMetagenerationNotMatch=None, ifGenerationMatch=None, ifGenerationNotMatch=None, ifMetagenerationNotMatch=None, ifSourceGenerationMatch=None, ifSourceMetagenerationMatch=None, ifMetagenerationMatch=None)</code>
+ <pre>Copies an object to a destination in the same location. Optionally overrides metadata.
+
+Args:
+ sourceBucket: string, Name of the bucket in which to find the source object. (required)
+ sourceObject: string, Name of the source object. (required)
+ destinationBucket: string, Name of the bucket in which to store the new object. Overrides the provided object metadata's bucket value, if any. (required)
+ destinationObject: string, Name of the new object. Required when the object metadata is not otherwise provided. Overrides the object metadata's name value, if any. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # An object.
+ "generation": "A String", # The content generation of this object. Used for object versioning.
+ "componentCount": 42, # Number of underlying components that make up this object. Components are accumulated by compose operations and are limited to a count of 32.
+ "mediaLink": "A String", # Media download link.
+ "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.
+ "generation": "A String", # The content generation of the object.
+ "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.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "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.
+ "size": "A String", # Content-Length of the data in bytes.
+ "timeDeleted": "A String", # Deletion time of the object in RFC 3339 format. Will be returned if and only if this version of the object has been deleted.
+ "md5Hash": "A String", # MD5 hash of the data; encoded using base64.
+ "crc32c": "A String", # CRC32c checksum, as described in RFC 4960, Appendix B; encoded using base64.
+ "etag": "A String", # HTTP 1.1 Entity tag for the object.
+ "metadata": { # User-provided metadata, in key/value pairs.
+ "a_key": "A String", # An individual metadata entry.
+ },
+ "updated": "A String", # Modification time of the object metadata in RFC 3339 format.
+ "contentType": "A String", # Content-Type of the object data.
+ "contentLanguage": "A String", # Content-Language of the object data.
+ "metageneration": "A String", # The generation of the metadata for this object at this generation. Used for metadata versioning. Has no meaning outside of the context of this generation.
+ "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.
+ "bucket": "A String", # The bucket containing this object.
+ "contentEncoding": "A String", # Content-Encoding of the object data.
+ "contentDisposition": "A String", # Content-Disposition of the object data.
+ "selfLink": "A String", # The link to this object.
+ }
+
+ projection: string, Set of properties to return. Defaults to noAcl, unless the object resource specifies the acl property, when it defaults to full.
+ Allowed values
+ full - Include all properties.
+ noAcl - Omit the acl property.
+ sourceGeneration: string, If present, selects a specific revision of the source object (as opposed to the latest version, the default).
+ ifSourceGenerationNotMatch: string, Makes the operation conditional on whether the source object's generation does not match the given value.
+ ifSourceMetagenerationNotMatch: string, Makes the operation conditional on whether the source object's current metageneration does not match the given value.
+ ifGenerationMatch: string, Makes the operation conditional on whether the destination object's current generation matches the given value.
+ ifGenerationNotMatch: string, Makes the operation conditional on whether the destination object's current generation does not match the given value.
+ ifMetagenerationNotMatch: string, Makes the operation conditional on whether the destination object's current metageneration does not match the given value.
+ ifSourceGenerationMatch: string, Makes the operation conditional on whether the source object's generation matches the given value.
+ ifSourceMetagenerationMatch: string, Makes the operation conditional on whether the source object's current metageneration matches the given value.
+ ifMetagenerationMatch: string, Makes the operation conditional on whether the destination object's current metageneration matches the given value.
+
+Returns:
+ An object of the form:
+
+ { # An object.
+ "generation": "A String", # The content generation of this object. Used for object versioning.
+ "componentCount": 42, # Number of underlying components that make up this object. Components are accumulated by compose operations and are limited to a count of 32.
+ "mediaLink": "A String", # Media download link.
+ "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.
+ "generation": "A String", # The content generation of the object.
+ "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.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "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.
+ "size": "A String", # Content-Length of the data in bytes.
+ "timeDeleted": "A String", # Deletion time of the object in RFC 3339 format. Will be returned if and only if this version of the object has been deleted.
+ "md5Hash": "A String", # MD5 hash of the data; encoded using base64.
+ "crc32c": "A String", # CRC32c checksum, as described in RFC 4960, Appendix B; encoded using base64.
+ "etag": "A String", # HTTP 1.1 Entity tag for the object.
+ "metadata": { # User-provided metadata, in key/value pairs.
+ "a_key": "A String", # An individual metadata entry.
+ },
+ "updated": "A String", # Modification time of the object metadata in RFC 3339 format.
+ "contentType": "A String", # Content-Type of the object data.
+ "contentLanguage": "A String", # Content-Language of the object data.
+ "metageneration": "A String", # The generation of the metadata for this object at this generation. Used for metadata versioning. Has no meaning outside of the context of this generation.
+ "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.
+ "bucket": "A String", # The bucket containing this object.
+ "contentEncoding": "A String", # Content-Encoding of the object data.
+ "contentDisposition": "A String", # Content-Disposition of the object data.
+ "selfLink": "A String", # The link to this object.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="copy_media">copy_media(sourceBucket, sourceObject, destinationBucket, destinationObject, body, projection=None, sourceGeneration=None, ifSourceGenerationNotMatch=None, ifSourceMetagenerationNotMatch=None, ifGenerationMatch=None, ifGenerationNotMatch=None, ifMetagenerationNotMatch=None, ifSourceGenerationMatch=None, ifSourceMetagenerationMatch=None, ifMetagenerationMatch=None)</code>
+ <pre>Copies an object to a destination in the same location. Optionally overrides metadata.
+
+Args:
+ sourceBucket: string, Name of the bucket in which to find the source object. (required)
+ sourceObject: string, Name of the source object. (required)
+ destinationBucket: string, Name of the bucket in which to store the new object. Overrides the provided object metadata's bucket value, if any. (required)
+ destinationObject: string, Name of the new object. Required when the object metadata is not otherwise provided. Overrides the object metadata's name value, if any. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # An object.
+ "generation": "A String", # The content generation of this object. Used for object versioning.
+ "componentCount": 42, # Number of underlying components that make up this object. Components are accumulated by compose operations and are limited to a count of 32.
+ "mediaLink": "A String", # Media download link.
+ "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.
+ "generation": "A String", # The content generation of the object.
+ "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.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "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.
+ "size": "A String", # Content-Length of the data in bytes.
+ "timeDeleted": "A String", # Deletion time of the object in RFC 3339 format. Will be returned if and only if this version of the object has been deleted.
+ "md5Hash": "A String", # MD5 hash of the data; encoded using base64.
+ "crc32c": "A String", # CRC32c checksum, as described in RFC 4960, Appendix B; encoded using base64.
+ "etag": "A String", # HTTP 1.1 Entity tag for the object.
+ "metadata": { # User-provided metadata, in key/value pairs.
+ "a_key": "A String", # An individual metadata entry.
+ },
+ "updated": "A String", # Modification time of the object metadata in RFC 3339 format.
+ "contentType": "A String", # Content-Type of the object data.
+ "contentLanguage": "A String", # Content-Language of the object data.
+ "metageneration": "A String", # The generation of the metadata for this object at this generation. Used for metadata versioning. Has no meaning outside of the context of this generation.
+ "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.
+ "bucket": "A String", # The bucket containing this object.
+ "contentEncoding": "A String", # Content-Encoding of the object data.
+ "contentDisposition": "A String", # Content-Disposition of the object data.
+ "selfLink": "A String", # The link to this object.
+ }
+
+ projection: string, Set of properties to return. Defaults to noAcl, unless the object resource specifies the acl property, when it defaults to full.
+ Allowed values
+ full - Include all properties.
+ noAcl - Omit the acl property.
+ sourceGeneration: string, If present, selects a specific revision of the source object (as opposed to the latest version, the default).
+ ifSourceGenerationNotMatch: string, Makes the operation conditional on whether the source object's generation does not match the given value.
+ ifSourceMetagenerationNotMatch: string, Makes the operation conditional on whether the source object's current metageneration does not match the given value.
+ ifGenerationMatch: string, Makes the operation conditional on whether the destination object's current generation matches the given value.
+ ifGenerationNotMatch: string, Makes the operation conditional on whether the destination object's current generation does not match the given value.
+ ifMetagenerationNotMatch: string, Makes the operation conditional on whether the destination object's current metageneration does not match the given value.
+ ifSourceGenerationMatch: string, Makes the operation conditional on whether the source object's generation matches the given value.
+ ifSourceMetagenerationMatch: string, Makes the operation conditional on whether the source object's current metageneration matches the given value.
+ ifMetagenerationMatch: string, Makes the operation conditional on whether the destination object's current metageneration matches the given value.
+
+Returns:
+ The media object as a string.
+
+ </pre>
+</div>
+
+<div class="method">
+ <code class="details" id="delete">delete(bucket, object, ifGenerationNotMatch=None, generation=None, ifMetagenerationMatch=None, ifGenerationMatch=None, ifMetagenerationNotMatch=None)</code>
+ <pre>Deletes data blobs and associated metadata. Deletions are permanent if versioning is not enabled for the bucket, or if the generation parameter is used.
+
+Args:
+ bucket: string, Name of the bucket in which the object resides. (required)
+ object: string, Name of the object. (required)
+ ifGenerationNotMatch: string, Makes the operation conditional on whether the object's current generation does not match the given value.
+ generation: string, If present, permanently deletes a specific revision of this object (as opposed to the latest version, the default).
+ ifMetagenerationMatch: string, Makes the operation conditional on whether the object's current metageneration matches the given value.
+ ifGenerationMatch: string, Makes the operation conditional on whether the object's current generation matches the given value.
+ ifMetagenerationNotMatch: string, Makes the operation conditional on whether the object's current metageneration does not match the given value.
+</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="get">get(bucket, object, ifGenerationNotMatch=None, generation=None, ifMetagenerationMatch=None, ifGenerationMatch=None, ifMetagenerationNotMatch=None, 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)
+ ifGenerationNotMatch: string, Makes the operation conditional on whether the object's generation does not match the given value.
+ generation: string, If present, selects a specific revision of this object (as opposed to the latest version, the default).
+ ifMetagenerationMatch: string, Makes the operation conditional on whether the object's current metageneration matches the given value.
+ ifGenerationMatch: string, Makes the operation conditional on whether the object's generation matches the given value.
+ ifMetagenerationNotMatch: string, Makes the operation conditional on whether the object's current metageneration does not match the given value.
+ projection: string, Set of properties to return. Defaults to noAcl.
+ Allowed values
+ full - Include all properties.
+ noAcl - Omit the acl property.
+
+Returns:
+ An object of the form:
+
+ { # An object.
+ "generation": "A String", # The content generation of this object. Used for object versioning.
+ "componentCount": 42, # Number of underlying components that make up this object. Components are accumulated by compose operations and are limited to a count of 32.
+ "mediaLink": "A String", # Media download link.
+ "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.
+ "generation": "A String", # The content generation of the object.
+ "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.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "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.
+ "size": "A String", # Content-Length of the data in bytes.
+ "timeDeleted": "A String", # Deletion time of the object in RFC 3339 format. Will be returned if and only if this version of the object has been deleted.
+ "md5Hash": "A String", # MD5 hash of the data; encoded using base64.
+ "crc32c": "A String", # CRC32c checksum, as described in RFC 4960, Appendix B; encoded using base64.
+ "etag": "A String", # HTTP 1.1 Entity tag for the object.
+ "metadata": { # User-provided metadata, in key/value pairs.
+ "a_key": "A String", # An individual metadata entry.
+ },
+ "updated": "A String", # Modification time of the object metadata in RFC 3339 format.
+ "contentType": "A String", # Content-Type of the object data.
+ "contentLanguage": "A String", # Content-Language of the object data.
+ "metageneration": "A String", # The generation of the metadata for this object at this generation. Used for metadata versioning. Has no meaning outside of the context of this generation.
+ "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.
+ "bucket": "A String", # The bucket containing this object.
+ "contentEncoding": "A String", # Content-Encoding of the object data.
+ "contentDisposition": "A String", # Content-Disposition of the object data.
+ "selfLink": "A String", # The link to this object.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="get_media">get_media(bucket, object, ifGenerationNotMatch=None, generation=None, ifMetagenerationMatch=None, ifGenerationMatch=None, ifMetagenerationNotMatch=None, 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)
+ ifGenerationNotMatch: string, Makes the operation conditional on whether the object's generation does not match the given value.
+ generation: string, If present, selects a specific revision of this object (as opposed to the latest version, the default).
+ ifMetagenerationMatch: string, Makes the operation conditional on whether the object's current metageneration matches the given value.
+ ifGenerationMatch: string, Makes the operation conditional on whether the object's generation matches the given value.
+ ifMetagenerationNotMatch: string, Makes the operation conditional on whether the object's current metageneration does not match the given value.
+ projection: string, Set of properties to return. Defaults to noAcl.
+ Allowed values
+ full - Include all properties.
+ noAcl - 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, projection=None, ifMetagenerationMatch=None, name=None, ifGenerationMatch=None, ifMetagenerationNotMatch=None, ifGenerationNotMatch=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.
+ "generation": "A String", # The content generation of this object. Used for object versioning.
+ "componentCount": 42, # Number of underlying components that make up this object. Components are accumulated by compose operations and are limited to a count of 32.
+ "mediaLink": "A String", # Media download link.
+ "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.
+ "generation": "A String", # The content generation of the object.
+ "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.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "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.
+ "size": "A String", # Content-Length of the data in bytes.
+ "timeDeleted": "A String", # Deletion time of the object in RFC 3339 format. Will be returned if and only if this version of the object has been deleted.
+ "md5Hash": "A String", # MD5 hash of the data; encoded using base64.
+ "crc32c": "A String", # CRC32c checksum, as described in RFC 4960, Appendix B; encoded using base64.
+ "etag": "A String", # HTTP 1.1 Entity tag for the object.
+ "metadata": { # User-provided metadata, in key/value pairs.
+ "a_key": "A String", # An individual metadata entry.
+ },
+ "updated": "A String", # Modification time of the object metadata in RFC 3339 format.
+ "contentType": "A String", # Content-Type of the object data.
+ "contentLanguage": "A String", # Content-Language of the object data.
+ "metageneration": "A String", # The generation of the metadata for this object at this generation. Used for metadata versioning. Has no meaning outside of the context of this generation.
+ "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.
+ "bucket": "A String", # The bucket containing this object.
+ "contentEncoding": "A String", # Content-Encoding of the object data.
+ "contentDisposition": "A String", # Content-Disposition of the object data.
+ "selfLink": "A String", # The link to this object.
+ }
+
+ media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
+ projection: string, Set of properties to return. Defaults to noAcl, unless the object resource specifies the acl property, when it defaults to full.
+ Allowed values
+ full - Include all properties.
+ noAcl - Omit the acl property.
+ ifMetagenerationMatch: string, Makes the operation conditional on whether the object's current metageneration matches the given value.
+ name: string, Name of the object. Required when the object metadata is not otherwise provided. Overrides the object metadata's name value, if any.
+ ifGenerationMatch: string, Makes the operation conditional on whether the object's current generation matches the given value.
+ ifMetagenerationNotMatch: string, Makes the operation conditional on whether the object's current metageneration does not match the given value.
+ ifGenerationNotMatch: string, Makes the operation conditional on whether the object's current generation does not match the given value.
+
+Returns:
+ An object of the form:
+
+ { # An object.
+ "generation": "A String", # The content generation of this object. Used for object versioning.
+ "componentCount": 42, # Number of underlying components that make up this object. Components are accumulated by compose operations and are limited to a count of 32.
+ "mediaLink": "A String", # Media download link.
+ "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.
+ "generation": "A String", # The content generation of the object.
+ "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.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "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.
+ "size": "A String", # Content-Length of the data in bytes.
+ "timeDeleted": "A String", # Deletion time of the object in RFC 3339 format. Will be returned if and only if this version of the object has been deleted.
+ "md5Hash": "A String", # MD5 hash of the data; encoded using base64.
+ "crc32c": "A String", # CRC32c checksum, as described in RFC 4960, Appendix B; encoded using base64.
+ "etag": "A String", # HTTP 1.1 Entity tag for the object.
+ "metadata": { # User-provided metadata, in key/value pairs.
+ "a_key": "A String", # An individual metadata entry.
+ },
+ "updated": "A String", # Modification time of the object metadata in RFC 3339 format.
+ "contentType": "A String", # Content-Type of the object data.
+ "contentLanguage": "A String", # Content-Language of the object data.
+ "metageneration": "A String", # The generation of the metadata for this object at this generation. Used for metadata versioning. Has no meaning outside of the context of this generation.
+ "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.
+ "bucket": "A String", # The bucket containing this object.
+ "contentEncoding": "A String", # Content-Encoding of the object data.
+ "contentDisposition": "A String", # Content-Disposition of the object data.
+ "selfLink": "A String", # The link to this object.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="insert_media">insert_media(bucket, body=None, media_body=None, projection=None, ifMetagenerationMatch=None, name=None, ifGenerationMatch=None, ifMetagenerationNotMatch=None, ifGenerationNotMatch=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.
+ "generation": "A String", # The content generation of this object. Used for object versioning.
+ "componentCount": 42, # Number of underlying components that make up this object. Components are accumulated by compose operations and are limited to a count of 32.
+ "mediaLink": "A String", # Media download link.
+ "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.
+ "generation": "A String", # The content generation of the object.
+ "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.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "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.
+ "size": "A String", # Content-Length of the data in bytes.
+ "timeDeleted": "A String", # Deletion time of the object in RFC 3339 format. Will be returned if and only if this version of the object has been deleted.
+ "md5Hash": "A String", # MD5 hash of the data; encoded using base64.
+ "crc32c": "A String", # CRC32c checksum, as described in RFC 4960, Appendix B; encoded using base64.
+ "etag": "A String", # HTTP 1.1 Entity tag for the object.
+ "metadata": { # User-provided metadata, in key/value pairs.
+ "a_key": "A String", # An individual metadata entry.
+ },
+ "updated": "A String", # Modification time of the object metadata in RFC 3339 format.
+ "contentType": "A String", # Content-Type of the object data.
+ "contentLanguage": "A String", # Content-Language of the object data.
+ "metageneration": "A String", # The generation of the metadata for this object at this generation. Used for metadata versioning. Has no meaning outside of the context of this generation.
+ "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.
+ "bucket": "A String", # The bucket containing this object.
+ "contentEncoding": "A String", # Content-Encoding of the object data.
+ "contentDisposition": "A String", # Content-Disposition of the object data.
+ "selfLink": "A String", # The link to this object.
+ }
+
+ media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
+ projection: string, Set of properties to return. Defaults to noAcl, unless the object resource specifies the acl property, when it defaults to full.
+ Allowed values
+ full - Include all properties.
+ noAcl - Omit the acl property.
+ ifMetagenerationMatch: string, Makes the operation conditional on whether the object's current metageneration matches the given value.
+ name: string, Name of the object. Required when the object metadata is not otherwise provided. Overrides the object metadata's name value, if any.
+ ifGenerationMatch: string, Makes the operation conditional on whether the object's current generation matches the given value.
+ ifMetagenerationNotMatch: string, Makes the operation conditional on whether the object's current metageneration does not match the given value.
+ ifGenerationNotMatch: string, Makes the operation conditional on whether the object's current generation does not match the given value.
+
+Returns:
+ The media object as a string.
+
+ </pre>
+</div>
+
+<div class="method">
+ <code class="details" id="list">list(bucket, projection=None, versions=None, delimiter=None, maxResults=None, pageToken=None, prefix=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 noAcl.
+ Allowed values
+ full - Include all properties.
+ noAcl - Omit the acl property.
+ versions: boolean, If true, lists all versions of a file as distinct results.
+ 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.
+ maxResults: integer, Maximum number of items plus prefixes to return. As duplicate prefixes are omitted, fewer total results may be returned than requested.
+ pageToken: string, A previously-returned page token representing part of the larger set of results to view.
+ prefix: string, Filter results to objects whose names begin with this prefix.
+
+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.
+ "generation": "A String", # The content generation of this object. Used for object versioning.
+ "componentCount": 42, # Number of underlying components that make up this object. Components are accumulated by compose operations and are limited to a count of 32.
+ "mediaLink": "A String", # Media download link.
+ "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.
+ "generation": "A String", # The content generation of the object.
+ "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.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "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.
+ "size": "A String", # Content-Length of the data in bytes.
+ "timeDeleted": "A String", # Deletion time of the object in RFC 3339 format. Will be returned if and only if this version of the object has been deleted.
+ "md5Hash": "A String", # MD5 hash of the data; encoded using base64.
+ "crc32c": "A String", # CRC32c checksum, as described in RFC 4960, Appendix B; encoded using base64.
+ "etag": "A String", # HTTP 1.1 Entity tag for the object.
+ "metadata": { # User-provided metadata, in key/value pairs.
+ "a_key": "A String", # An individual metadata entry.
+ },
+ "updated": "A String", # Modification time of the object metadata in RFC 3339 format.
+ "contentType": "A String", # Content-Type of the object data.
+ "contentLanguage": "A String", # Content-Language of the object data.
+ "metageneration": "A String", # The generation of the metadata for this object at this generation. Used for metadata versioning. Has no meaning outside of the context of this generation.
+ "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.
+ "bucket": "A String", # The bucket containing this object.
+ "contentEncoding": "A String", # Content-Encoding of the object data.
+ "contentDisposition": "A String", # Content-Disposition of the object data.
+ "selfLink": "A String", # The link to this object.
+ },
+ ],
+ "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, ifGenerationNotMatch=None, generation=None, ifMetagenerationMatch=None, ifGenerationMatch=None, ifMetagenerationNotMatch=None, 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.
+ "generation": "A String", # The content generation of this object. Used for object versioning.
+ "componentCount": 42, # Number of underlying components that make up this object. Components are accumulated by compose operations and are limited to a count of 32.
+ "mediaLink": "A String", # Media download link.
+ "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.
+ "generation": "A String", # The content generation of the object.
+ "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.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "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.
+ "size": "A String", # Content-Length of the data in bytes.
+ "timeDeleted": "A String", # Deletion time of the object in RFC 3339 format. Will be returned if and only if this version of the object has been deleted.
+ "md5Hash": "A String", # MD5 hash of the data; encoded using base64.
+ "crc32c": "A String", # CRC32c checksum, as described in RFC 4960, Appendix B; encoded using base64.
+ "etag": "A String", # HTTP 1.1 Entity tag for the object.
+ "metadata": { # User-provided metadata, in key/value pairs.
+ "a_key": "A String", # An individual metadata entry.
+ },
+ "updated": "A String", # Modification time of the object metadata in RFC 3339 format.
+ "contentType": "A String", # Content-Type of the object data.
+ "contentLanguage": "A String", # Content-Language of the object data.
+ "metageneration": "A String", # The generation of the metadata for this object at this generation. Used for metadata versioning. Has no meaning outside of the context of this generation.
+ "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.
+ "bucket": "A String", # The bucket containing this object.
+ "contentEncoding": "A String", # Content-Encoding of the object data.
+ "contentDisposition": "A String", # Content-Disposition of the object data.
+ "selfLink": "A String", # The link to this object.
+ }
+
+ ifGenerationNotMatch: string, Makes the operation conditional on whether the object's current generation does not match the given value.
+ generation: string, If present, selects a specific revision of this object (as opposed to the latest version, the default).
+ ifMetagenerationMatch: string, Makes the operation conditional on whether the object's current metageneration matches the given value.
+ ifGenerationMatch: string, Makes the operation conditional on whether the object's current generation matches the given value.
+ ifMetagenerationNotMatch: string, Makes the operation conditional on whether the object's current metageneration does not match the given value.
+ projection: string, Set of properties to return. Defaults to full.
+ Allowed values
+ full - Include all properties.
+ noAcl - Omit the acl property.
+
+Returns:
+ An object of the form:
+
+ { # An object.
+ "generation": "A String", # The content generation of this object. Used for object versioning.
+ "componentCount": 42, # Number of underlying components that make up this object. Components are accumulated by compose operations and are limited to a count of 32.
+ "mediaLink": "A String", # Media download link.
+ "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.
+ "generation": "A String", # The content generation of the object.
+ "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.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "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.
+ "size": "A String", # Content-Length of the data in bytes.
+ "timeDeleted": "A String", # Deletion time of the object in RFC 3339 format. Will be returned if and only if this version of the object has been deleted.
+ "md5Hash": "A String", # MD5 hash of the data; encoded using base64.
+ "crc32c": "A String", # CRC32c checksum, as described in RFC 4960, Appendix B; encoded using base64.
+ "etag": "A String", # HTTP 1.1 Entity tag for the object.
+ "metadata": { # User-provided metadata, in key/value pairs.
+ "a_key": "A String", # An individual metadata entry.
+ },
+ "updated": "A String", # Modification time of the object metadata in RFC 3339 format.
+ "contentType": "A String", # Content-Type of the object data.
+ "contentLanguage": "A String", # Content-Language of the object data.
+ "metageneration": "A String", # The generation of the metadata for this object at this generation. Used for metadata versioning. Has no meaning outside of the context of this generation.
+ "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.
+ "bucket": "A String", # The bucket containing this object.
+ "contentEncoding": "A String", # Content-Encoding of the object data.
+ "contentDisposition": "A String", # Content-Disposition of the object data.
+ "selfLink": "A String", # The link to this object.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="update">update(bucket, object, body, ifGenerationNotMatch=None, generation=None, ifMetagenerationMatch=None, ifGenerationMatch=None, ifMetagenerationNotMatch=None, 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.
+ "generation": "A String", # The content generation of this object. Used for object versioning.
+ "componentCount": 42, # Number of underlying components that make up this object. Components are accumulated by compose operations and are limited to a count of 32.
+ "mediaLink": "A String", # Media download link.
+ "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.
+ "generation": "A String", # The content generation of the object.
+ "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.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "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.
+ "size": "A String", # Content-Length of the data in bytes.
+ "timeDeleted": "A String", # Deletion time of the object in RFC 3339 format. Will be returned if and only if this version of the object has been deleted.
+ "md5Hash": "A String", # MD5 hash of the data; encoded using base64.
+ "crc32c": "A String", # CRC32c checksum, as described in RFC 4960, Appendix B; encoded using base64.
+ "etag": "A String", # HTTP 1.1 Entity tag for the object.
+ "metadata": { # User-provided metadata, in key/value pairs.
+ "a_key": "A String", # An individual metadata entry.
+ },
+ "updated": "A String", # Modification time of the object metadata in RFC 3339 format.
+ "contentType": "A String", # Content-Type of the object data.
+ "contentLanguage": "A String", # Content-Language of the object data.
+ "metageneration": "A String", # The generation of the metadata for this object at this generation. Used for metadata versioning. Has no meaning outside of the context of this generation.
+ "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.
+ "bucket": "A String", # The bucket containing this object.
+ "contentEncoding": "A String", # Content-Encoding of the object data.
+ "contentDisposition": "A String", # Content-Disposition of the object data.
+ "selfLink": "A String", # The link to this object.
+ }
+
+ ifGenerationNotMatch: string, Makes the operation conditional on whether the object's current generation does not match the given value.
+ generation: string, If present, selects a specific revision of this object (as opposed to the latest version, the default).
+ ifMetagenerationMatch: string, Makes the operation conditional on whether the object's current metageneration matches the given value.
+ ifGenerationMatch: string, Makes the operation conditional on whether the object's current generation matches the given value.
+ ifMetagenerationNotMatch: string, Makes the operation conditional on whether the object's current metageneration does not match the given value.
+ projection: string, Set of properties to return. Defaults to full.
+ Allowed values
+ full - Include all properties.
+ noAcl - Omit the acl property.
+
+Returns:
+ An object of the form:
+
+ { # An object.
+ "generation": "A String", # The content generation of this object. Used for object versioning.
+ "componentCount": 42, # Number of underlying components that make up this object. Components are accumulated by compose operations and are limited to a count of 32.
+ "mediaLink": "A String", # Media download link.
+ "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.
+ "generation": "A String", # The content generation of the object.
+ "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.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "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.
+ "size": "A String", # Content-Length of the data in bytes.
+ "timeDeleted": "A String", # Deletion time of the object in RFC 3339 format. Will be returned if and only if this version of the object has been deleted.
+ "md5Hash": "A String", # MD5 hash of the data; encoded using base64.
+ "crc32c": "A String", # CRC32c checksum, as described in RFC 4960, Appendix B; encoded using base64.
+ "etag": "A String", # HTTP 1.1 Entity tag for the object.
+ "metadata": { # User-provided metadata, in key/value pairs.
+ "a_key": "A String", # An individual metadata entry.
+ },
+ "updated": "A String", # Modification time of the object metadata in RFC 3339 format.
+ "contentType": "A String", # Content-Type of the object data.
+ "contentLanguage": "A String", # Content-Language of the object data.
+ "metageneration": "A String", # The generation of the metadata for this object at this generation. Used for metadata versioning. Has no meaning outside of the context of this generation.
+ "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.
+ "bucket": "A String", # The bucket containing this object.
+ "contentEncoding": "A String", # Content-Encoding of the object data.
+ "contentDisposition": "A String", # Content-Disposition of the object data.
+ "selfLink": "A String", # The link to this object.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="update_media">update_media(bucket, object, body, ifGenerationNotMatch=None, generation=None, ifMetagenerationMatch=None, ifGenerationMatch=None, ifMetagenerationNotMatch=None, 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.
+ "generation": "A String", # The content generation of this object. Used for object versioning.
+ "componentCount": 42, # Number of underlying components that make up this object. Components are accumulated by compose operations and are limited to a count of 32.
+ "mediaLink": "A String", # Media download link.
+ "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.
+ "generation": "A String", # The content generation of the object.
+ "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.
+ "entity": "A String", # The entity holding the permission, in one of the following forms:
+ # - user-userId
+ # - user-email
+ # - group-groupId
+ # - group-email
+ # - allUsers
+ # - allAuthenticatedUsers
+ "etag": "A String", # HTTP 1.1 Entity tag for the access-control entry.
+ "role": "A String", # The access permission for the entity. Can be READER or OWNER.
+ "id": "A String", # The ID of the access-control entry.
+ "entityId": "A String", # The ID for the entity, if any.
+ "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.
+ "size": "A String", # Content-Length of the data in bytes.
+ "timeDeleted": "A String", # Deletion time of the object in RFC 3339 format. Will be returned if and only if this version of the object has been deleted.
+ "md5Hash": "A String", # MD5 hash of the data; encoded using base64.
+ "crc32c": "A String", # CRC32c checksum, as described in RFC 4960, Appendix B; encoded using base64.
+ "etag": "A String", # HTTP 1.1 Entity tag for the object.
+ "metadata": { # User-provided metadata, in key/value pairs.
+ "a_key": "A String", # An individual metadata entry.
+ },
+ "updated": "A String", # Modification time of the object metadata in RFC 3339 format.
+ "contentType": "A String", # Content-Type of the object data.
+ "contentLanguage": "A String", # Content-Language of the object data.
+ "metageneration": "A String", # The generation of the metadata for this object at this generation. Used for metadata versioning. Has no meaning outside of the context of this generation.
+ "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.
+ "bucket": "A String", # The bucket containing this object.
+ "contentEncoding": "A String", # Content-Encoding of the object data.
+ "contentDisposition": "A String", # Content-Disposition of the object data.
+ "selfLink": "A String", # The link to this object.
+ }
+
+ ifGenerationNotMatch: string, Makes the operation conditional on whether the object's current generation does not match the given value.
+ generation: string, If present, selects a specific revision of this object (as opposed to the latest version, the default).
+ ifMetagenerationMatch: string, Makes the operation conditional on whether the object's current metageneration matches the given value.
+ ifGenerationMatch: string, Makes the operation conditional on whether the object's current generation matches the given value.
+ ifMetagenerationNotMatch: string, Makes the operation conditional on whether the object's current metageneration does not match the given value.
+ projection: string, Set of properties to return. Defaults to full.
+ Allowed values
+ full - Include all properties.
+ noAcl - Omit the acl property.
+
+Returns:
+ The media object as a string.
+
+ </pre>
+</div>
+
+<div class="method">
+ <code class="details" id="watchAll">watchAll(bucket, body, projection=None, versions=None, delimiter=None, maxResults=None, pageToken=None, prefix=None)</code>
+ <pre>Watch for changes on all objects in a bucket.
+
+Args:
+ bucket: string, Name of the bucket in which to look for objects. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{
+ "resourceUri": "A String", # The canonicalized ID of the watched resource.
+ "kind": "api#channel", # A channel watching an API resource
+ "resourceId": "A String", # An opaque id that identifies the resource that is being watched. Stable across different API versions
+ "token": "A String", # An arbitrary string associated with the channel that is delivered to the target address with each event delivered over this channel.
+ "params": { # Additional parameters controlling delivery channel behavior
+ "a_key": "A String", # Declares a new parameter by name.
+ },
+ "expiration": "A String", # The expiration instant for this channel if it is defined.
+ "address": "A String", # The address of the receiving entity where events are delivered. Specific to the channel type.
+ "type": "A String", # The type of delivery mechanism used by this channel
+ "id": "A String", # A UUID for the channel
+ }
+
+ projection: string, Set of properties to return. Defaults to noAcl.
+ Allowed values
+ full - Include all properties.
+ noAcl - Omit the acl property.
+ versions: boolean, If true, lists all versions of a file as distinct results.
+ 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.
+ maxResults: integer, Maximum number of items plus prefixes to return. As duplicate prefixes are omitted, fewer total results may be returned than requested.
+ pageToken: string, A previously-returned page token representing part of the larger set of results to view.
+ prefix: string, Filter results to objects whose names begin with this prefix.
+
+Returns:
+ An object of the form:
+
+ {
+ "resourceUri": "A String", # The canonicalized ID of the watched resource.
+ "kind": "api#channel", # A channel watching an API resource
+ "resourceId": "A String", # An opaque id that identifies the resource that is being watched. Stable across different API versions
+ "token": "A String", # An arbitrary string associated with the channel that is delivered to the target address with each event delivered over this channel.
+ "params": { # Additional parameters controlling delivery channel behavior
+ "a_key": "A String", # Declares a new parameter by name.
+ },
+ "expiration": "A String", # The expiration instant for this channel if it is defined.
+ "address": "A String", # The address of the receiving entity where events are delivered. Specific to the channel type.
+ "type": "A String", # The type of delivery mechanism used by this channel
+ "id": "A String", # A UUID for the channel
+ }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/taskqueue_v1beta2.tasks.html b/docs/dyn/taskqueue_v1beta2.tasks.html
index 939311e..c9fbb64 100644
--- a/docs/dyn/taskqueue_v1beta2.tasks.html
+++ b/docs/dyn/taskqueue_v1beta2.tasks.html
@@ -123,6 +123,7 @@
"kind": "taskqueues#task", # The kind of object returned, in this case set to task.
"leaseTimestamp": "A String", # Time (in seconds since the epoch) at which the task lease will expire. This value is 0 if the task isnt currently leased out to a worker.
"id": "A String", # Name of the task.
+ "retry_count": 42, # The number of leases applied to this task.
"tag": "A String", # Tag for the task, could be used later to lease tasks grouped by a specific tag.
"payloadBase64": "A String", # A bag of bytes which is the task payload. The payload on the JSON side is always Base64 encoded.
"queueName": "A String", # Name of the queue that the task is in.
@@ -144,6 +145,7 @@
"kind": "taskqueues#task", # The kind of object returned, in this case set to task.
"leaseTimestamp": "A String", # Time (in seconds since the epoch) at which the task lease will expire. This value is 0 if the task isnt currently leased out to a worker.
"id": "A String", # Name of the task.
+ "retry_count": 42, # The number of leases applied to this task.
"tag": "A String", # Tag for the task, could be used later to lease tasks grouped by a specific tag.
"payloadBase64": "A String", # A bag of bytes which is the task payload. The payload on the JSON side is always Base64 encoded.
"queueName": "A String", # Name of the queue that the task is in.
@@ -158,6 +160,7 @@
"kind": "taskqueues#task", # The kind of object returned, in this case set to task.
"leaseTimestamp": "A String", # Time (in seconds since the epoch) at which the task lease will expire. This value is 0 if the task isnt currently leased out to a worker.
"id": "A String", # Name of the task.
+ "retry_count": 42, # The number of leases applied to this task.
"tag": "A String", # Tag for the task, could be used later to lease tasks grouped by a specific tag.
"payloadBase64": "A String", # A bag of bytes which is the task payload. The payload on the JSON side is always Base64 encoded.
"queueName": "A String", # Name of the queue that the task is in.
@@ -186,6 +189,7 @@
"kind": "taskqueues#task", # The kind of object returned, in this case set to task.
"leaseTimestamp": "A String", # Time (in seconds since the epoch) at which the task lease will expire. This value is 0 if the task isnt currently leased out to a worker.
"id": "A String", # Name of the task.
+ "retry_count": 42, # The number of leases applied to this task.
"tag": "A String", # Tag for the task, could be used later to lease tasks grouped by a specific tag.
"payloadBase64": "A String", # A bag of bytes which is the task payload. The payload on the JSON side is always Base64 encoded.
"queueName": "A String", # Name of the queue that the task is in.
@@ -213,6 +217,7 @@
"kind": "taskqueues#task", # The kind of object returned, in this case set to task.
"leaseTimestamp": "A String", # Time (in seconds since the epoch) at which the task lease will expire. This value is 0 if the task isnt currently leased out to a worker.
"id": "A String", # Name of the task.
+ "retry_count": 42, # The number of leases applied to this task.
"tag": "A String", # Tag for the task, could be used later to lease tasks grouped by a specific tag.
"payloadBase64": "A String", # A bag of bytes which is the task payload. The payload on the JSON side is always Base64 encoded.
"queueName": "A String", # Name of the queue that the task is in.
@@ -239,6 +244,7 @@
"kind": "taskqueues#task", # The kind of object returned, in this case set to task.
"leaseTimestamp": "A String", # Time (in seconds since the epoch) at which the task lease will expire. This value is 0 if the task isnt currently leased out to a worker.
"id": "A String", # Name of the task.
+ "retry_count": 42, # The number of leases applied to this task.
"tag": "A String", # Tag for the task, could be used later to lease tasks grouped by a specific tag.
"payloadBase64": "A String", # A bag of bytes which is the task payload. The payload on the JSON side is always Base64 encoded.
"queueName": "A String", # Name of the queue that the task is in.
@@ -253,6 +259,7 @@
"kind": "taskqueues#task", # The kind of object returned, in this case set to task.
"leaseTimestamp": "A String", # Time (in seconds since the epoch) at which the task lease will expire. This value is 0 if the task isnt currently leased out to a worker.
"id": "A String", # Name of the task.
+ "retry_count": 42, # The number of leases applied to this task.
"tag": "A String", # Tag for the task, could be used later to lease tasks grouped by a specific tag.
"payloadBase64": "A String", # A bag of bytes which is the task payload. The payload on the JSON side is always Base64 encoded.
"queueName": "A String", # Name of the queue that the task is in.
@@ -276,6 +283,7 @@
"kind": "taskqueues#task", # The kind of object returned, in this case set to task.
"leaseTimestamp": "A String", # Time (in seconds since the epoch) at which the task lease will expire. This value is 0 if the task isnt currently leased out to a worker.
"id": "A String", # Name of the task.
+ "retry_count": 42, # The number of leases applied to this task.
"tag": "A String", # Tag for the task, could be used later to lease tasks grouped by a specific tag.
"payloadBase64": "A String", # A bag of bytes which is the task payload. The payload on the JSON side is always Base64 encoded.
"queueName": "A String", # Name of the queue that the task is in.
@@ -290,6 +298,7 @@
"kind": "taskqueues#task", # The kind of object returned, in this case set to task.
"leaseTimestamp": "A String", # Time (in seconds since the epoch) at which the task lease will expire. This value is 0 if the task isnt currently leased out to a worker.
"id": "A String", # Name of the task.
+ "retry_count": 42, # The number of leases applied to this task.
"tag": "A String", # Tag for the task, could be used later to lease tasks grouped by a specific tag.
"payloadBase64": "A String", # A bag of bytes which is the task payload. The payload on the JSON side is always Base64 encoded.
"queueName": "A String", # Name of the queue that the task is in.
diff --git a/docs/dyn/v1dev_v1dev.channels.html b/docs/dyn/v1dev_v1dev.channels.html
new file mode 100644
index 0000000..70cd2c8
--- /dev/null
+++ b/docs/dyn/v1dev_v1dev.channels.html
@@ -0,0 +1,106 @@
+<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="v1dev_v1dev.html">Wax API</a> . <a href="v1dev_v1dev.channels.html">channels</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#stop">stop(body)</a></code></p>
+<p class="firstline">A description of how to use this function</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="stop">stop(body)</code>
+ <pre>A description of how to use this function
+
+Args:
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{
+ "resourceUri": "A String", # The canonicalized ID of the watched resource.
+ "kind": "api#channel", # A channel watching an API resource
+ "resourceId": "A String", # An opaque id that identifies the resource that is being watched. Stable across different API versions
+ "token": "A String", # An arbitrary string associated with the channel that is delivered to the target address with each event delivered over this channel.
+ "params": { # Additional parameters controlling delivery channel behavior
+ "a_key": "A String", # Declares a new parameter by name.
+ },
+ "expiration": "A String", # The expiration instant for this channel if it is defined.
+ "address": "A String", # The address of the receiving entity where events are delivered. Specific to the channel type.
+ "type": "A String", # The type of delivery mechanism used by this channel
+ "id": "A String", # A UUID for the channel
+ }
+
+</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/v1dev_v1dev.html b/docs/dyn/v1dev_v1dev.html
new file mode 100644
index 0000000..f692b42
--- /dev/null
+++ b/docs/dyn/v1dev_v1dev.html
@@ -0,0 +1,92 @@
+<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="v1dev_v1dev.html">Wax API</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="v1dev_v1dev.channels.html">channels()</a></code>
+</p>
+<p class="firstline">Returns the channels Resource.</p>
+
+<p class="toc_element">
+ <code><a href="v1dev_v1dev.items.html">items()</a></code>
+</p>
+<p class="firstline">Returns the items Resource.</p>
+
+<p class="toc_element">
+ <code><a href="v1dev_v1dev.sessions.html">sessions()</a></code>
+</p>
+<p class="firstline">Returns the sessions Resource.</p>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/v1dev_v1dev.items.html b/docs/dyn/v1dev_v1dev.items.html
new file mode 100644
index 0000000..f6c6908
--- /dev/null
+++ b/docs/dyn/v1dev_v1dev.items.html
@@ -0,0 +1,333 @@
+<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="v1dev_v1dev.html">Wax API</a> . <a href="v1dev_v1dev.items.html">items</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#delete">delete(sessionId, itemId)</a></code></p>
+<p class="firstline">Deletes an item.</p>
+<p class="toc_element">
+ <code><a href="#get">get(sessionId, itemId)</a></code></p>
+<p class="firstline">Gets one item by ID.</p>
+<p class="toc_element">
+ <code><a href="#insert">insert(sessionId, body)</a></code></p>
+<p class="firstline">Inserts a new item into this session.</p>
+<p class="toc_element">
+ <code><a href="#list">list(sessionId)</a></code></p>
+<p class="firstline">Retrieves a list of items in a session.</p>
+<p class="toc_element">
+ <code><a href="#patch">patch(sessionId, itemId, body)</a></code></p>
+<p class="firstline">Updates an existing item. This method supports patch semantics.</p>
+<p class="toc_element">
+ <code><a href="#update">update(sessionId, itemId, body)</a></code></p>
+<p class="firstline">Updates an existing item.</p>
+<p class="toc_element">
+ <code><a href="#watch">watch(sessionId, body)</a></code></p>
+<p class="firstline">Subscribe to changes to any item in a session.</p>
+<p class="toc_element">
+ <code><a href="#watchToOneItem">watchToOneItem(sessionId, itemId, body)</a></code></p>
+<p class="firstline">Subscribe to changes to one item in a session.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="delete">delete(sessionId, itemId)</code>
+ <pre>Deletes an item.
+
+Args:
+ sessionId: string, The session ID. (required)
+ itemId: string, The item ID. (required)
+</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="get">get(sessionId, itemId)</code>
+ <pre>Gets one item by ID.
+
+Args:
+ sessionId: string, The session ID. (required)
+ itemId: string, The item ID. (required)
+
+Returns:
+ An object of the form:
+
+ {
+ "blobOfData": "A String", # A blob of data stored in the item.
+ "sizeInBytes": 42, # The size (in bytes) of the blob of data.
+ "kind": "wax#waxDataItem", # The kind of object this is.
+ "id": "A String", # The item ID.
+ "name": "A String", # The name of the item.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="insert">insert(sessionId, body)</code>
+ <pre>Inserts a new item into this session.
+
+Args:
+ sessionId: string, The session ID. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{
+ "blobOfData": "A String", # A blob of data stored in the item.
+ "sizeInBytes": 42, # The size (in bytes) of the blob of data.
+ "kind": "wax#waxDataItem", # The kind of object this is.
+ "id": "A String", # The item ID.
+ "name": "A String", # The name of the item.
+ }
+
+
+Returns:
+ An object of the form:
+
+ {
+ "blobOfData": "A String", # A blob of data stored in the item.
+ "sizeInBytes": 42, # The size (in bytes) of the blob of data.
+ "kind": "wax#waxDataItem", # The kind of object this is.
+ "id": "A String", # The item ID.
+ "name": "A String", # The name of the item.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="list">list(sessionId)</code>
+ <pre>Retrieves a list of items in a session.
+
+Args:
+ sessionId: string, The session ID. (required)
+
+Returns:
+ An object of the form:
+
+ {
+ "items": [ # The list of Wax items.
+ {
+ "blobOfData": "A String", # A blob of data stored in the item.
+ "sizeInBytes": 42, # The size (in bytes) of the blob of data.
+ "kind": "wax#waxDataItem", # The kind of object this is.
+ "id": "A String", # The item ID.
+ "name": "A String", # The name of the item.
+ },
+ ],
+ "kind": "wax#waxList", # The kind of object this is.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="patch">patch(sessionId, itemId, body)</code>
+ <pre>Updates an existing item. This method supports patch semantics.
+
+Args:
+ sessionId: string, The session ID. (required)
+ itemId: string, The item ID. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{
+ "blobOfData": "A String", # A blob of data stored in the item.
+ "sizeInBytes": 42, # The size (in bytes) of the blob of data.
+ "kind": "wax#waxDataItem", # The kind of object this is.
+ "id": "A String", # The item ID.
+ "name": "A String", # The name of the item.
+ }
+
+
+Returns:
+ An object of the form:
+
+ {
+ "blobOfData": "A String", # A blob of data stored in the item.
+ "sizeInBytes": 42, # The size (in bytes) of the blob of data.
+ "kind": "wax#waxDataItem", # The kind of object this is.
+ "id": "A String", # The item ID.
+ "name": "A String", # The name of the item.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="update">update(sessionId, itemId, body)</code>
+ <pre>Updates an existing item.
+
+Args:
+ sessionId: string, The session ID. (required)
+ itemId: string, The item ID. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{
+ "blobOfData": "A String", # A blob of data stored in the item.
+ "sizeInBytes": 42, # The size (in bytes) of the blob of data.
+ "kind": "wax#waxDataItem", # The kind of object this is.
+ "id": "A String", # The item ID.
+ "name": "A String", # The name of the item.
+ }
+
+
+Returns:
+ An object of the form:
+
+ {
+ "blobOfData": "A String", # A blob of data stored in the item.
+ "sizeInBytes": 42, # The size (in bytes) of the blob of data.
+ "kind": "wax#waxDataItem", # The kind of object this is.
+ "id": "A String", # The item ID.
+ "name": "A String", # The name of the item.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="watch">watch(sessionId, body)</code>
+ <pre>Subscribe to changes to any item in a session.
+
+Args:
+ sessionId: string, The session ID. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{
+ "resourceUri": "A String", # The canonicalized ID of the watched resource.
+ "kind": "api#channel", # A channel watching an API resource
+ "resourceId": "A String", # An opaque id that identifies the resource that is being watched. Stable across different API versions
+ "token": "A String", # An arbitrary string associated with the channel that is delivered to the target address with each event delivered over this channel.
+ "params": { # Additional parameters controlling delivery channel behavior
+ "a_key": "A String", # Declares a new parameter by name.
+ },
+ "expiration": "A String", # The expiration instant for this channel if it is defined.
+ "address": "A String", # The address of the receiving entity where events are delivered. Specific to the channel type.
+ "type": "A String", # The type of delivery mechanism used by this channel
+ "id": "A String", # A UUID for the channel
+ }
+
+
+Returns:
+ An object of the form:
+
+ {
+ "resourceUri": "A String", # The canonicalized ID of the watched resource.
+ "kind": "api#channel", # A channel watching an API resource
+ "resourceId": "A String", # An opaque id that identifies the resource that is being watched. Stable across different API versions
+ "token": "A String", # An arbitrary string associated with the channel that is delivered to the target address with each event delivered over this channel.
+ "params": { # Additional parameters controlling delivery channel behavior
+ "a_key": "A String", # Declares a new parameter by name.
+ },
+ "expiration": "A String", # The expiration instant for this channel if it is defined.
+ "address": "A String", # The address of the receiving entity where events are delivered. Specific to the channel type.
+ "type": "A String", # The type of delivery mechanism used by this channel
+ "id": "A String", # A UUID for the channel
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="watchToOneItem">watchToOneItem(sessionId, itemId, body)</code>
+ <pre>Subscribe to changes to one item in a session.
+
+Args:
+ sessionId: string, The session ID. (required)
+ itemId: string, The item ID. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{
+ "resourceUri": "A String", # The canonicalized ID of the watched resource.
+ "kind": "api#channel", # A channel watching an API resource
+ "resourceId": "A String", # An opaque id that identifies the resource that is being watched. Stable across different API versions
+ "token": "A String", # An arbitrary string associated with the channel that is delivered to the target address with each event delivered over this channel.
+ "params": { # Additional parameters controlling delivery channel behavior
+ "a_key": "A String", # Declares a new parameter by name.
+ },
+ "expiration": "A String", # The expiration instant for this channel if it is defined.
+ "address": "A String", # The address of the receiving entity where events are delivered. Specific to the channel type.
+ "type": "A String", # The type of delivery mechanism used by this channel
+ "id": "A String", # A UUID for the channel
+ }
+
+
+Returns:
+ An object of the form:
+
+ {
+ "resourceUri": "A String", # The canonicalized ID of the watched resource.
+ "kind": "api#channel", # A channel watching an API resource
+ "resourceId": "A String", # An opaque id that identifies the resource that is being watched. Stable across different API versions
+ "token": "A String", # An arbitrary string associated with the channel that is delivered to the target address with each event delivered over this channel.
+ "params": { # Additional parameters controlling delivery channel behavior
+ "a_key": "A String", # Declares a new parameter by name.
+ },
+ "expiration": "A String", # The expiration instant for this channel if it is defined.
+ "address": "A String", # The address of the receiving entity where events are delivered. Specific to the channel type.
+ "type": "A String", # The type of delivery mechanism used by this channel
+ "id": "A String", # A UUID for the channel
+ }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/v1dev_v1dev.sessions.html b/docs/dyn/v1dev_v1dev.sessions.html
new file mode 100644
index 0000000..f3c8574
--- /dev/null
+++ b/docs/dyn/v1dev_v1dev.sessions.html
@@ -0,0 +1,160 @@
+<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="v1dev_v1dev.html">Wax API</a> . <a href="v1dev_v1dev.sessions.html">sessions</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#create">create(body)</a></code></p>
+<p class="firstline">Creates a new session. New sessions are initialized with two pre-defined items. Just like wax.sessions.newsession, but matches other implementations of Wax in Endpoints.</p>
+<p class="toc_element">
+ <code><a href="#newSession">newSession(body, sessionName=None)</a></code></p>
+<p class="firstline">Creates a new session. New sessions are initialized with two pre-defined items.</p>
+<p class="toc_element">
+ <code><a href="#removeSession">removeSession(body, sessionId=None)</a></code></p>
+<p class="firstline">Removes a session. Clients that create sessions with long or infinite durations should call this method to clean up after themselves.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="create">create(body)</code>
+ <pre>Creates a new session. New sessions are initialized with two pre-defined items. Just like wax.sessions.newsession, but matches other implementations of Wax in Endpoints.
+
+Args:
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{
+ "sessionName": "A String", # Usually a short, human-readable name that describes a session. This name will appear as part of the session ID, which is generated by the API when the session is created.
+ "durationInMillis": "A String", # Session duration in milliseconds.
+ }
+
+
+Returns:
+ An object of the form:
+
+ {
+ "newSessionId": "A String", # The session ID.
+ "kind": "wax#waxNewSession", # The kind of object this is.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="newSession">newSession(body, sessionName=None)</code>
+ <pre>Creates a new session. New sessions are initialized with two pre-defined items.
+
+Args:
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{
+ "newSessionParams": { # Parameters used when requesting a new session.
+ "kind": "wax#waxNewSessionParams", # The kind of object this is.
+ "durationInMillis": "A String", # Session duration in milliseconds.
+ },
+ "sessionName": "A String", # Usually a short, human-readable name that describes a session. This name will appear as part of the session ID, which is generated by the API when the session is created.
+ }
+
+ sessionName: string, Human-readable name that describes a session. This name will be part of the session ID.
+
+Returns:
+ An object of the form:
+
+ {
+ "newSessionId": "A String", # The session ID.
+ "kind": "wax#waxNewSession", # The kind of object this is.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="removeSession">removeSession(body, sessionId=None)</code>
+ <pre>Removes a session. Clients that create sessions with long or infinite durations should call this method to clean up after themselves.
+
+Args:
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{
+ "sessionId": "A String", # The ID corresponding to the session to be removed.
+ }
+
+ sessionId: string, The session ID.
+
+Returns:
+ An object of the form:
+
+ {
+ "kind": "wax#waxRemoveSession", # The kind of object this is.
+ "removedSessionId": "A String", # The ID corresponding to the session that was removed.
+ }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/webfonts_v1.html b/docs/dyn/webfonts_v1.html
index 791bdf6..2ae835b 100644
--- a/docs/dyn/webfonts_v1.html
+++ b/docs/dyn/webfonts_v1.html
@@ -72,7 +72,7 @@
</style>
-<h1><a href="webfonts_v1.html">Google Web Fonts Developer API</a></h1>
+<h1><a href="webfonts_v1.html">Google Fonts Developer API</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
<code><a href="webfonts_v1.webfonts.html">webfonts()</a></code>
diff --git a/docs/dyn/webfonts_v1.webfonts.html b/docs/dyn/webfonts_v1.webfonts.html
index 730ecec..a4abc9e 100644
--- a/docs/dyn/webfonts_v1.webfonts.html
+++ b/docs/dyn/webfonts_v1.webfonts.html
@@ -72,15 +72,15 @@
</style>
-<h1><a href="webfonts_v1.html">Google Web Fonts Developer API</a> . <a href="webfonts_v1.webfonts.html">webfonts</a></h1>
+<h1><a href="webfonts_v1.html">Google Fonts Developer API</a> . <a href="webfonts_v1.webfonts.html">webfonts</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
<code><a href="#list">list(sort=None)</a></code></p>
-<p class="firstline">Retrieves the list of fonts currently served by the Google Web Fonts Developer API</p>
+<p class="firstline">Retrieves the list of fonts currently served by the Google Fonts Developer API</p>
<h3>Method Details</h3>
<div class="method">
<code class="details" id="list">list(sort=None)</code>
- <pre>Retrieves the list of fonts currently served by the Google Web Fonts Developer API
+ <pre>Retrieves the list of fonts currently served by the Google Fonts Developer API
Args:
sort: string, Enables sorting of the list
@@ -97,10 +97,19 @@
{
"items": [ # The list of fonts currently served by the Google Fonts API.
{
+ "files": { # The font files (with all supported scripts) for each one of the available variants, as a key : value map.
+ "a_key": "A String", # The font file URL (value) for an specific variant (key).
+ },
"kind": "webfonts#webfont", # This kind represents a webfont object in the webfonts service.
- "variants": "", # The available variants for the font.
- "subsets": "", # The scripts supported by the font.
- "family": "", # The name of the font.
+ "family": "A String", # The name of the font.
+ "subsets": [ # The scripts supported by the font.
+ "A String",
+ ],
+ "lastModified": "A String", # The date (format "yyyy-MM-dd") the font was modified for the last time.
+ "version": "A String", # The font version.
+ "variants": [ # The available variants for the font.
+ "A String",
+ ],
},
],
"kind": "webfonts#webfontList", # This kind represents a list of webfont objects in the webfonts service.
diff --git a/docs/dyn/youtube_v3.activities.html b/docs/dyn/youtube_v3.activities.html
index 4f7c0aa..d2744cb 100644
--- a/docs/dyn/youtube_v3.activities.html
+++ b/docs/dyn/youtube_v3.activities.html
@@ -78,7 +78,7 @@
<code><a href="#insert">insert(part=None, body)</a></code></p>
<p class="firstline">Posts a bulletin for a specific channel. (The user submitting the request must be authorized to act on the channel's behalf.)</p>
<p class="toc_element">
- <code><a href="#list">list(part=None, pageToken=None, publishedBefore=None, channelId=None, mine=None, maxResults=None, home=None, publishedAfter=None)</a></code></p>
+ <code><a href="#list">list(part=None, pageToken=None, publishedBefore=None, channelId=None, mine=None, maxResults=None, regionCode=None, home=None, publishedAfter=None)</a></code></p>
<p class="firstline">Returns a list of channel activity events that match the request criteria. For example, you can retrieve events associated with a particular channel, events associated with the user's subscriptions and Google+ friends, or the YouTube home page feed, which is customized for each user.</p>
<p class="toc_element">
<code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
@@ -95,10 +95,30 @@
body: object, The request body. (required)
The object takes the form of:
-{ # An activity resource contains information about an action that a particular channel, or user, has taken on YouTube. The actions reported in activity feeds include rating a video, sharing a video, marking a video as a favorite, commenting on a video, uploading a video, and so forth. Each activity resource identifies the type of action, the channel associated with the action, and the resource(s) associated with the action, such as the video that was rated or uploaded.
+{ # An activity resource contains information about an action that a particular channel, or user, has taken on YouTube.The actions reported in activity feeds include rating a video, sharing a video, marking a video as a favorite, commenting on a video, uploading a video, and so forth. Each activity resource identifies the type of action, the channel associated with the action, and the resource(s) associated with the action, such as the video that was rated or uploaded.
"snippet": { # Basic details about an activity, including title, description, thumbnails, activity type and group. # The snippet object contains basic details about the activity, including the activity's type and group ID.
- "thumbnails": { # A map of thumbnail images associated with the resource that is primarily associated with the activity. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
- "a_key": { # A thumbnail is an image representing a YouTube resource. # Name of the thumbnail, to easily identify it. The set of names is dependent on the resource the thumbnail is for.
+ "thumbnails": { # Internal representation of thumbnails for a YouTube resource. # A map of thumbnail images associated with the resource that is primarily associated with the activity. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+ "default": { # A thumbnail is an image representing a YouTube resource. # The default image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "high": { # A thumbnail is an image representing a YouTube resource. # The high quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "medium": { # A thumbnail is an image representing a YouTube resource. # The medium quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "maxres": { # A thumbnail is an image representing a YouTube resource. # The maximum resolution quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "standard": { # A thumbnail is an image representing a YouTube resource. # The standard quality image for this resource.
"url": "A String", # The thumbnail image's URL.
"width": 42, # (Optional) Width of the thumbnail image.
"height": 42, # (Optional) Height of the thumbnail image.
@@ -113,17 +133,17 @@
"description": "A String", # The description of the resource primarily associated with the activity.
},
"contentDetails": { # Details about the content of an activity: the video that was shared, the channel that was subscribed to, etc. # The contentDetails object contains information about the content associated with the activity. For example, if the snippet.type value is videoRated, then the contentDetails object's content identifies the rated video.
- "comment": { # The comment object contains information about a resource that received a comment. This property is only present if the snippet.type is comment.
+ "comment": { # Information about a resource that received a comment. # The comment object contains information about a resource that received a comment. This property is only present if the snippet.type is comment.
"resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object contains information that identifies the resource associated with the comment.
- "kind": "A String", # The kind, or type, of the referred resource.
+ "kind": "A String", # The type of the API resource.
"channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
"playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
"videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
},
},
- "playlistItem": { # The playlistItem object contains information about a new playlist item. This property is only present if the snippet.type is playlistItem.
+ "playlistItem": { # Information about a new playlist item. # The playlistItem object contains information about a new playlist item. This property is only present if the snippet.type is playlistItem.
"resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object contains information about the resource that was added to the playlist.
- "kind": "A String", # The kind, or type, of the referred resource.
+ "kind": "A String", # The type of the API resource.
"channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
"playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
"videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
@@ -131,17 +151,26 @@
"playlistId": "A String", # The value that YouTube uses to uniquely identify the playlist.
"playlistItemId": "A String", # ID of the item within the playlist.
},
- "like": { # The like object contains information about a resource that received a positive (like) rating. This property is only present if the snippet.type is like.
+ "like": { # Information about a resource that received a positive (like) rating. # The like object contains information about a resource that received a positive (like) rating. This property is only present if the snippet.type is like.
"resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object contains information that identifies the rated resource.
- "kind": "A String", # The kind, or type, of the referred resource.
+ "kind": "A String", # The type of the API resource.
"channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
"playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
"videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
},
},
- "social": { # The social object contains details about a social network post. This property is only present if the snippet.type is social.
+ "promotedItem": { # Details about a resource which is being promoted. # The promotedItem object contains details about a resource which is being promoted. This property is only present if the snippet.type is promotedItem.
+ "ctaType": "A String", # The type of call-to-action, a message to the user indicating action that can be taken.
+ "adTag": "A String", # The URL the client should fetch to request a promoted item.
+ "destinationUrl": "A String", # The URL the client should direct the user to, if the user chooses to visit the advertiser's website.
+ "creativeViewUrl": "A String", # The URL the client should ping to indicate that the user was shown this promoted item.
+ "videoId": "A String", # The ID that YouTube uses to uniquely identify the promoted video.
+ "descriptionText": "A String", # The text description to accompany the promoted item.
+ "clickTrackingUrl": "A String", # The URL the client should ping to indicate that the user clicked through on this promoted item.
+ },
+ "social": { # Details about a social network post. # The social object contains details about a social network post. This property is only present if the snippet.type is social.
"resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object encapsulates information that identifies the resource associated with a social network post.
- "kind": "A String", # The kind, or type, of the referred resource.
+ "kind": "A String", # The type of the API resource.
"channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
"playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
"videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
@@ -151,59 +180,59 @@
"referenceUrl": "A String", # The URL of the social network post.
"author": "A String", # The author of the social network post.
},
- "favorite": { # The favorite object contains information about a video that was marked as a favorite video. This property is only present if the snippet.type is favorite.
+ "favorite": { # Information about a video that was marked as a favorite video. # The favorite object contains information about a video that was marked as a favorite video. This property is only present if the snippet.type is favorite.
"resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object contains information that identifies the resource that was marked as a favorite.
- "kind": "A String", # The kind, or type, of the referred resource.
+ "kind": "A String", # The type of the API resource.
"channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
"playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
"videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
},
},
- "upload": { # The upload object contains information about the uploaded video. This property is only present if the snippet.type is upload.
+ "upload": { # Information about the uploaded video. # The upload object contains information about the uploaded video. This property is only present if the snippet.type is upload.
"videoId": "A String", # The ID that YouTube uses to uniquely identify the uploaded video.
},
- "recommendation": { # The recommendation object contains information about a recommended resource. This property is only present if the snippet.type is recommendation.
+ "recommendation": { # Information that identifies the recommended resource. # The recommendation object contains information about a recommended resource. This property is only present if the snippet.type is recommendation.
"resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object contains information that identifies the recommended resource.
- "kind": "A String", # The kind, or type, of the referred resource.
+ "kind": "A String", # The type of the API resource.
"channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
"playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
"videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
},
"reason": "A String", # The reason that the resource is recommended to the user.
"seedResourceId": { # A resource id is a generic reference that points to another YouTube resource. # The seedResourceId object contains information about the resource that caused the recommendation.
- "kind": "A String", # The kind, or type, of the referred resource.
+ "kind": "A String", # The type of the API resource.
"channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
"playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
"videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
},
},
- "subscription": { # The subscription object contains information about a channel that a user subscribed to. This property is only present if the snippet.type is subscription.
+ "subscription": { # Information about a channel that a user subscribed to. # The subscription object contains information about a channel that a user subscribed to. This property is only present if the snippet.type is subscription.
"resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object contains information that identifies the resource that the user subscribed to.
- "kind": "A String", # The kind, or type, of the referred resource.
+ "kind": "A String", # The type of the API resource.
"channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
"playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
"videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
},
},
- "bulletin": { # The bulletin object contains details about a channel bulletin post. This object is only present if the snippet.type is bulletin.
+ "bulletin": { # Details about a channel bulletin post. # The bulletin object contains details about a channel bulletin post. This object is only present if the snippet.type is bulletin.
"resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object contains information that identifies the resource associated with a bulletin post.
- "kind": "A String", # The kind, or type, of the referred resource.
+ "kind": "A String", # The type of the API resource.
"channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
"playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
"videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
},
},
- "channelItem": { # The channelItem object contains details about a resource which was added to a channel. This property is only present if the snippet.type is channelItem.
+ "channelItem": { # Details about a resource which was added to a channel. # The channelItem object contains details about a resource which was added to a channel. This property is only present if the snippet.type is channelItem.
"resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object contains information that identifies the resource that was added to the channel.
- "kind": "A String", # The kind, or type, of the referred resource.
+ "kind": "A String", # The type of the API resource.
"channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
"playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
"videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
},
},
},
- "kind": "youtube#activity", # The type of the API resource. For activity resources, the value will be youtube#activity.
- "etag": "A String", # The ETag of the activity resource.
+ "kind": "youtube#activity", # The kind, fixed to "youtube#activity".
+ "etag": "A String", # Etag of this resource.
"id": "A String", # The ID that YouTube uses to uniquely identify the activity.
}
@@ -211,10 +240,30 @@
Returns:
An object of the form:
- { # An activity resource contains information about an action that a particular channel, or user, has taken on YouTube. The actions reported in activity feeds include rating a video, sharing a video, marking a video as a favorite, commenting on a video, uploading a video, and so forth. Each activity resource identifies the type of action, the channel associated with the action, and the resource(s) associated with the action, such as the video that was rated or uploaded.
+ { # An activity resource contains information about an action that a particular channel, or user, has taken on YouTube.The actions reported in activity feeds include rating a video, sharing a video, marking a video as a favorite, commenting on a video, uploading a video, and so forth. Each activity resource identifies the type of action, the channel associated with the action, and the resource(s) associated with the action, such as the video that was rated or uploaded.
"snippet": { # Basic details about an activity, including title, description, thumbnails, activity type and group. # The snippet object contains basic details about the activity, including the activity's type and group ID.
- "thumbnails": { # A map of thumbnail images associated with the resource that is primarily associated with the activity. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
- "a_key": { # A thumbnail is an image representing a YouTube resource. # Name of the thumbnail, to easily identify it. The set of names is dependent on the resource the thumbnail is for.
+ "thumbnails": { # Internal representation of thumbnails for a YouTube resource. # A map of thumbnail images associated with the resource that is primarily associated with the activity. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+ "default": { # A thumbnail is an image representing a YouTube resource. # The default image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "high": { # A thumbnail is an image representing a YouTube resource. # The high quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "medium": { # A thumbnail is an image representing a YouTube resource. # The medium quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "maxres": { # A thumbnail is an image representing a YouTube resource. # The maximum resolution quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "standard": { # A thumbnail is an image representing a YouTube resource. # The standard quality image for this resource.
"url": "A String", # The thumbnail image's URL.
"width": 42, # (Optional) Width of the thumbnail image.
"height": 42, # (Optional) Height of the thumbnail image.
@@ -229,17 +278,17 @@
"description": "A String", # The description of the resource primarily associated with the activity.
},
"contentDetails": { # Details about the content of an activity: the video that was shared, the channel that was subscribed to, etc. # The contentDetails object contains information about the content associated with the activity. For example, if the snippet.type value is videoRated, then the contentDetails object's content identifies the rated video.
- "comment": { # The comment object contains information about a resource that received a comment. This property is only present if the snippet.type is comment.
+ "comment": { # Information about a resource that received a comment. # The comment object contains information about a resource that received a comment. This property is only present if the snippet.type is comment.
"resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object contains information that identifies the resource associated with the comment.
- "kind": "A String", # The kind, or type, of the referred resource.
+ "kind": "A String", # The type of the API resource.
"channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
"playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
"videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
},
},
- "playlistItem": { # The playlistItem object contains information about a new playlist item. This property is only present if the snippet.type is playlistItem.
+ "playlistItem": { # Information about a new playlist item. # The playlistItem object contains information about a new playlist item. This property is only present if the snippet.type is playlistItem.
"resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object contains information about the resource that was added to the playlist.
- "kind": "A String", # The kind, or type, of the referred resource.
+ "kind": "A String", # The type of the API resource.
"channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
"playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
"videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
@@ -247,17 +296,26 @@
"playlistId": "A String", # The value that YouTube uses to uniquely identify the playlist.
"playlistItemId": "A String", # ID of the item within the playlist.
},
- "like": { # The like object contains information about a resource that received a positive (like) rating. This property is only present if the snippet.type is like.
+ "like": { # Information about a resource that received a positive (like) rating. # The like object contains information about a resource that received a positive (like) rating. This property is only present if the snippet.type is like.
"resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object contains information that identifies the rated resource.
- "kind": "A String", # The kind, or type, of the referred resource.
+ "kind": "A String", # The type of the API resource.
"channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
"playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
"videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
},
},
- "social": { # The social object contains details about a social network post. This property is only present if the snippet.type is social.
+ "promotedItem": { # Details about a resource which is being promoted. # The promotedItem object contains details about a resource which is being promoted. This property is only present if the snippet.type is promotedItem.
+ "ctaType": "A String", # The type of call-to-action, a message to the user indicating action that can be taken.
+ "adTag": "A String", # The URL the client should fetch to request a promoted item.
+ "destinationUrl": "A String", # The URL the client should direct the user to, if the user chooses to visit the advertiser's website.
+ "creativeViewUrl": "A String", # The URL the client should ping to indicate that the user was shown this promoted item.
+ "videoId": "A String", # The ID that YouTube uses to uniquely identify the promoted video.
+ "descriptionText": "A String", # The text description to accompany the promoted item.
+ "clickTrackingUrl": "A String", # The URL the client should ping to indicate that the user clicked through on this promoted item.
+ },
+ "social": { # Details about a social network post. # The social object contains details about a social network post. This property is only present if the snippet.type is social.
"resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object encapsulates information that identifies the resource associated with a social network post.
- "kind": "A String", # The kind, or type, of the referred resource.
+ "kind": "A String", # The type of the API resource.
"channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
"playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
"videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
@@ -267,65 +325,65 @@
"referenceUrl": "A String", # The URL of the social network post.
"author": "A String", # The author of the social network post.
},
- "favorite": { # The favorite object contains information about a video that was marked as a favorite video. This property is only present if the snippet.type is favorite.
+ "favorite": { # Information about a video that was marked as a favorite video. # The favorite object contains information about a video that was marked as a favorite video. This property is only present if the snippet.type is favorite.
"resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object contains information that identifies the resource that was marked as a favorite.
- "kind": "A String", # The kind, or type, of the referred resource.
+ "kind": "A String", # The type of the API resource.
"channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
"playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
"videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
},
},
- "upload": { # The upload object contains information about the uploaded video. This property is only present if the snippet.type is upload.
+ "upload": { # Information about the uploaded video. # The upload object contains information about the uploaded video. This property is only present if the snippet.type is upload.
"videoId": "A String", # The ID that YouTube uses to uniquely identify the uploaded video.
},
- "recommendation": { # The recommendation object contains information about a recommended resource. This property is only present if the snippet.type is recommendation.
+ "recommendation": { # Information that identifies the recommended resource. # The recommendation object contains information about a recommended resource. This property is only present if the snippet.type is recommendation.
"resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object contains information that identifies the recommended resource.
- "kind": "A String", # The kind, or type, of the referred resource.
+ "kind": "A String", # The type of the API resource.
"channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
"playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
"videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
},
"reason": "A String", # The reason that the resource is recommended to the user.
"seedResourceId": { # A resource id is a generic reference that points to another YouTube resource. # The seedResourceId object contains information about the resource that caused the recommendation.
- "kind": "A String", # The kind, or type, of the referred resource.
+ "kind": "A String", # The type of the API resource.
"channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
"playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
"videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
},
},
- "subscription": { # The subscription object contains information about a channel that a user subscribed to. This property is only present if the snippet.type is subscription.
+ "subscription": { # Information about a channel that a user subscribed to. # The subscription object contains information about a channel that a user subscribed to. This property is only present if the snippet.type is subscription.
"resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object contains information that identifies the resource that the user subscribed to.
- "kind": "A String", # The kind, or type, of the referred resource.
+ "kind": "A String", # The type of the API resource.
"channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
"playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
"videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
},
},
- "bulletin": { # The bulletin object contains details about a channel bulletin post. This object is only present if the snippet.type is bulletin.
+ "bulletin": { # Details about a channel bulletin post. # The bulletin object contains details about a channel bulletin post. This object is only present if the snippet.type is bulletin.
"resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object contains information that identifies the resource associated with a bulletin post.
- "kind": "A String", # The kind, or type, of the referred resource.
+ "kind": "A String", # The type of the API resource.
"channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
"playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
"videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
},
},
- "channelItem": { # The channelItem object contains details about a resource which was added to a channel. This property is only present if the snippet.type is channelItem.
+ "channelItem": { # Details about a resource which was added to a channel. # The channelItem object contains details about a resource which was added to a channel. This property is only present if the snippet.type is channelItem.
"resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object contains information that identifies the resource that was added to the channel.
- "kind": "A String", # The kind, or type, of the referred resource.
+ "kind": "A String", # The type of the API resource.
"channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
"playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
"videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
},
},
},
- "kind": "youtube#activity", # The type of the API resource. For activity resources, the value will be youtube#activity.
- "etag": "A String", # The ETag of the activity resource.
+ "kind": "youtube#activity", # The kind, fixed to "youtube#activity".
+ "etag": "A String", # Etag of this resource.
"id": "A String", # The ID that YouTube uses to uniquely identify the activity.
}</pre>
</div>
<div class="method">
- <code class="details" id="list">list(part=None, pageToken=None, publishedBefore=None, channelId=None, mine=None, maxResults=None, home=None, publishedAfter=None)</code>
+ <code class="details" id="list">list(part=None, pageToken=None, publishedBefore=None, channelId=None, mine=None, maxResults=None, regionCode=None, home=None, publishedAfter=None)</code>
<pre>Returns a list of channel activity events that match the request criteria. For example, you can retrieve events associated with a particular channel, events associated with the user's subscriptions and Google+ friends, or the YouTube home page feed, which is customized for each user.
Args:
@@ -337,20 +395,43 @@
channelId: string, The channelId parameter specifies a unique YouTube channel ID. The API will then return a list of that channel's activities.
mine: boolean, Set this parameter's value to true to retrieve a feed of the authenticated user's activities.
maxResults: integer, USE_DESCRIPTION --- channels:list:maxResults
- home: string, Set this parameter's value to true to retrieve the activity feed that displays on the YouTube home page for the currently authenticated user.
+ regionCode: string, The regionCode parameter instructs the API to return results for the specified country. The parameter value is an ISO 3166-1 alpha-2 country code.
+ home: boolean, Set this parameter's value to true to retrieve the activity feed that displays on the YouTube home page for the currently authenticated user.
publishedAfter: string, The publishedAfter parameter specifies the earliest date and time that an activity could have occurred for that activity to be included in the API response. If the parameter value specifies a day, but not a time, then any activities that occurred that day will be included in the result set. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
Returns:
An object of the form:
{ # A paginated list of activities returned as a response to youtube.activities.list calls.
+ "eventId": "A String", # Serialized EventId of the request which produced this response.
"nextPageToken": "A String", # The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set.
"kind": "youtube#activityListResponse", # The type of the API response. For this operation, the value will be youtube#activityListResponse.
+ "visitorId": "A String", # The visitorId identifies the visitor.
"items": [ # A list of activities, or events, that match the request criteria.
- { # An activity resource contains information about an action that a particular channel, or user, has taken on YouTube. The actions reported in activity feeds include rating a video, sharing a video, marking a video as a favorite, commenting on a video, uploading a video, and so forth. Each activity resource identifies the type of action, the channel associated with the action, and the resource(s) associated with the action, such as the video that was rated or uploaded.
+ { # An activity resource contains information about an action that a particular channel, or user, has taken on YouTube.The actions reported in activity feeds include rating a video, sharing a video, marking a video as a favorite, commenting on a video, uploading a video, and so forth. Each activity resource identifies the type of action, the channel associated with the action, and the resource(s) associated with the action, such as the video that was rated or uploaded.
"snippet": { # Basic details about an activity, including title, description, thumbnails, activity type and group. # The snippet object contains basic details about the activity, including the activity's type and group ID.
- "thumbnails": { # A map of thumbnail images associated with the resource that is primarily associated with the activity. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
- "a_key": { # A thumbnail is an image representing a YouTube resource. # Name of the thumbnail, to easily identify it. The set of names is dependent on the resource the thumbnail is for.
+ "thumbnails": { # Internal representation of thumbnails for a YouTube resource. # A map of thumbnail images associated with the resource that is primarily associated with the activity. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+ "default": { # A thumbnail is an image representing a YouTube resource. # The default image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "high": { # A thumbnail is an image representing a YouTube resource. # The high quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "medium": { # A thumbnail is an image representing a YouTube resource. # The medium quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "maxres": { # A thumbnail is an image representing a YouTube resource. # The maximum resolution quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "standard": { # A thumbnail is an image representing a YouTube resource. # The standard quality image for this resource.
"url": "A String", # The thumbnail image's URL.
"width": 42, # (Optional) Width of the thumbnail image.
"height": 42, # (Optional) Height of the thumbnail image.
@@ -365,17 +446,17 @@
"description": "A String", # The description of the resource primarily associated with the activity.
},
"contentDetails": { # Details about the content of an activity: the video that was shared, the channel that was subscribed to, etc. # The contentDetails object contains information about the content associated with the activity. For example, if the snippet.type value is videoRated, then the contentDetails object's content identifies the rated video.
- "comment": { # The comment object contains information about a resource that received a comment. This property is only present if the snippet.type is comment.
+ "comment": { # Information about a resource that received a comment. # The comment object contains information about a resource that received a comment. This property is only present if the snippet.type is comment.
"resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object contains information that identifies the resource associated with the comment.
- "kind": "A String", # The kind, or type, of the referred resource.
+ "kind": "A String", # The type of the API resource.
"channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
"playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
"videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
},
},
- "playlistItem": { # The playlistItem object contains information about a new playlist item. This property is only present if the snippet.type is playlistItem.
+ "playlistItem": { # Information about a new playlist item. # The playlistItem object contains information about a new playlist item. This property is only present if the snippet.type is playlistItem.
"resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object contains information about the resource that was added to the playlist.
- "kind": "A String", # The kind, or type, of the referred resource.
+ "kind": "A String", # The type of the API resource.
"channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
"playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
"videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
@@ -383,17 +464,26 @@
"playlistId": "A String", # The value that YouTube uses to uniquely identify the playlist.
"playlistItemId": "A String", # ID of the item within the playlist.
},
- "like": { # The like object contains information about a resource that received a positive (like) rating. This property is only present if the snippet.type is like.
+ "like": { # Information about a resource that received a positive (like) rating. # The like object contains information about a resource that received a positive (like) rating. This property is only present if the snippet.type is like.
"resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object contains information that identifies the rated resource.
- "kind": "A String", # The kind, or type, of the referred resource.
+ "kind": "A String", # The type of the API resource.
"channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
"playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
"videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
},
},
- "social": { # The social object contains details about a social network post. This property is only present if the snippet.type is social.
+ "promotedItem": { # Details about a resource which is being promoted. # The promotedItem object contains details about a resource which is being promoted. This property is only present if the snippet.type is promotedItem.
+ "ctaType": "A String", # The type of call-to-action, a message to the user indicating action that can be taken.
+ "adTag": "A String", # The URL the client should fetch to request a promoted item.
+ "destinationUrl": "A String", # The URL the client should direct the user to, if the user chooses to visit the advertiser's website.
+ "creativeViewUrl": "A String", # The URL the client should ping to indicate that the user was shown this promoted item.
+ "videoId": "A String", # The ID that YouTube uses to uniquely identify the promoted video.
+ "descriptionText": "A String", # The text description to accompany the promoted item.
+ "clickTrackingUrl": "A String", # The URL the client should ping to indicate that the user clicked through on this promoted item.
+ },
+ "social": { # Details about a social network post. # The social object contains details about a social network post. This property is only present if the snippet.type is social.
"resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object encapsulates information that identifies the resource associated with a social network post.
- "kind": "A String", # The kind, or type, of the referred resource.
+ "kind": "A String", # The type of the API resource.
"channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
"playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
"videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
@@ -403,59 +493,59 @@
"referenceUrl": "A String", # The URL of the social network post.
"author": "A String", # The author of the social network post.
},
- "favorite": { # The favorite object contains information about a video that was marked as a favorite video. This property is only present if the snippet.type is favorite.
+ "favorite": { # Information about a video that was marked as a favorite video. # The favorite object contains information about a video that was marked as a favorite video. This property is only present if the snippet.type is favorite.
"resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object contains information that identifies the resource that was marked as a favorite.
- "kind": "A String", # The kind, or type, of the referred resource.
+ "kind": "A String", # The type of the API resource.
"channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
"playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
"videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
},
},
- "upload": { # The upload object contains information about the uploaded video. This property is only present if the snippet.type is upload.
+ "upload": { # Information about the uploaded video. # The upload object contains information about the uploaded video. This property is only present if the snippet.type is upload.
"videoId": "A String", # The ID that YouTube uses to uniquely identify the uploaded video.
},
- "recommendation": { # The recommendation object contains information about a recommended resource. This property is only present if the snippet.type is recommendation.
+ "recommendation": { # Information that identifies the recommended resource. # The recommendation object contains information about a recommended resource. This property is only present if the snippet.type is recommendation.
"resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object contains information that identifies the recommended resource.
- "kind": "A String", # The kind, or type, of the referred resource.
+ "kind": "A String", # The type of the API resource.
"channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
"playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
"videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
},
"reason": "A String", # The reason that the resource is recommended to the user.
"seedResourceId": { # A resource id is a generic reference that points to another YouTube resource. # The seedResourceId object contains information about the resource that caused the recommendation.
- "kind": "A String", # The kind, or type, of the referred resource.
+ "kind": "A String", # The type of the API resource.
"channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
"playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
"videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
},
},
- "subscription": { # The subscription object contains information about a channel that a user subscribed to. This property is only present if the snippet.type is subscription.
+ "subscription": { # Information about a channel that a user subscribed to. # The subscription object contains information about a channel that a user subscribed to. This property is only present if the snippet.type is subscription.
"resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object contains information that identifies the resource that the user subscribed to.
- "kind": "A String", # The kind, or type, of the referred resource.
+ "kind": "A String", # The type of the API resource.
"channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
"playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
"videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
},
},
- "bulletin": { # The bulletin object contains details about a channel bulletin post. This object is only present if the snippet.type is bulletin.
+ "bulletin": { # Details about a channel bulletin post. # The bulletin object contains details about a channel bulletin post. This object is only present if the snippet.type is bulletin.
"resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object contains information that identifies the resource associated with a bulletin post.
- "kind": "A String", # The kind, or type, of the referred resource.
+ "kind": "A String", # The type of the API resource.
"channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
"playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
"videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
},
},
- "channelItem": { # The channelItem object contains details about a resource which was added to a channel. This property is only present if the snippet.type is channelItem.
+ "channelItem": { # Details about a resource which was added to a channel. # The channelItem object contains details about a resource which was added to a channel. This property is only present if the snippet.type is channelItem.
"resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The resourceId object contains information that identifies the resource that was added to the channel.
- "kind": "A String", # The kind, or type, of the referred resource.
+ "kind": "A String", # The type of the API resource.
"channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
"playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
"videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
},
},
},
- "kind": "youtube#activity", # The type of the API resource. For activity resources, the value will be youtube#activity.
- "etag": "A String", # The ETag of the activity resource.
+ "kind": "youtube#activity", # The kind, fixed to "youtube#activity".
+ "etag": "A String", # Etag of this resource.
"id": "A String", # The ID that YouTube uses to uniquely identify the activity.
},
],
diff --git a/docs/dyn/youtube_v3.channelBanners.html b/docs/dyn/youtube_v3.channelBanners.html
new file mode 100644
index 0000000..b567a25
--- /dev/null
+++ b/docs/dyn/youtube_v3.channelBanners.html
@@ -0,0 +1,108 @@
+<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="youtube_v3.html">YouTube Data API</a> . <a href="youtube_v3.channelBanners.html">channelBanners</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#insert">insert(body=None, media_body=None, onBehalfOfContentOwner=None)</a></code></p>
+<p class="firstline">Uploads a channel banner to YouTube.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="insert">insert(body=None, media_body=None, onBehalfOfContentOwner=None)</code>
+ <pre>Uploads a channel banner to YouTube.
+
+Args:
+ body: object, The request body.
+ The object takes the form of:
+
+{ # A channel banner returned as the response to a channel_banner.insert call.
+ "url": "A String", # The URL of this banner image.
+ "kind": "youtube#channelBannerResource", # The kind, fixed to "youtube#channelBannerResource".
+ "etag": "A String", # Etag of this resource.
+ }
+
+ media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
+ onBehalfOfContentOwner: string, USE_DESCRIPTION --- channels:list:onBehalfOfContentOwner
+
+Returns:
+ An object of the form:
+
+ { # A channel banner returned as the response to a channel_banner.insert call.
+ "url": "A String", # The URL of this banner image.
+ "kind": "youtube#channelBannerResource", # The kind, fixed to "youtube#channelBannerResource".
+ "etag": "A String", # Etag of this resource.
+ }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/youtube_v3.channels.html b/docs/dyn/youtube_v3.channels.html
index 5748601..56de365 100644
--- a/docs/dyn/youtube_v3.channels.html
+++ b/docs/dyn/youtube_v3.channels.html
@@ -75,137 +75,190 @@
<h1><a href="youtube_v3.html">YouTube Data API</a> . <a href="youtube_v3.channels.html">channels</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
- <code><a href="#list">list(part=None, onBehalfOfContentOwner=None, pageToken=None, categoryId=None, maxResults=None, mine=None, mySubscribers=None, id=None)</a></code></p>
+ <code><a href="#list">list(part=None, managedByMe=None, onBehalfOfContentOwner=None, forUsername=None, pageToken=None, categoryId=None, maxResults=None, mine=None, mySubscribers=None, id=None)</a></code></p>
<p class="firstline">Returns a collection of zero or more channel resources that match the request 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="#update">update(part=None, body, onBehalfOfContentOwner=None)</a></code></p>
+<p class="firstline">Updates a channel's metadata.</p>
<h3>Method Details</h3>
<div class="method">
- <code class="details" id="list">list(part=None, onBehalfOfContentOwner=None, pageToken=None, categoryId=None, maxResults=None, mine=None, mySubscribers=None, id=None)</code>
+ <code class="details" id="list">list(part=None, managedByMe=None, onBehalfOfContentOwner=None, forUsername=None, pageToken=None, categoryId=None, maxResults=None, mine=None, mySubscribers=None, id=None)</code>
<pre>Returns a collection of zero or more channel resources that match the request criteria.
Args:
- part: string, The part parameter specifies a comma-separated list of one or more channel resource properties that the API response will include. The part names that you can include in the parameter value are id, snippet, contentDetails, statistics, and topicDetails.
+ part: string, The part parameter specifies a comma-separated list of one or more channel resource properties that the API response will include. The part names that you can include in the parameter value are id, snippet, contentDetails, statistics, topicDetails, and invideoPromotion.
If the parameter identifies a property that contains child properties, the child properties will be included in the response. For example, in a channel resource, the contentDetails property contains other properties, such as the uploads properties. As such, if you set part=contentDetails, the API response will also contain all of those nested properties. (required)
+ managedByMe: boolean, Set this parameter's value to true to instruct the API to only return channels managed by the content owner that the onBehalfOfContentOwner parameter specifies. The user must be authenticated as a CMS account linked to the specified content owner and onBehalfOfContentOwner must be provided.
onBehalfOfContentOwner: string, The onBehalfOfContentOwner parameter indicates that the authenticated user is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The actual CMS account that the user authenticates with needs to be linked to the specified YouTube content owner.
+ forUsername: string, The forUsername parameter specifies a YouTube username, thereby requesting the channel associated with that username.
pageToken: string, The pageToken parameter identifies a specific page in the result set that should be returned. In an API response, the nextPageToken and prevPageToken properties identify other pages that could be retrieved.
categoryId: string, The categoryId parameter specifies a YouTube guide category, thereby requesting YouTube channels associated with that category.
maxResults: integer, The maxResults parameter specifies the maximum number of items that should be returned in the result set.
mine: boolean, Set this parameter's value to true to instruct the API to only return channels owned by the authenticated user.
- mySubscribers: string, Set this parameter's value to true to retrieve a list of channels that subscribed to the authenticated user's channel.
+ mySubscribers: boolean, Set this parameter's value to true to retrieve a list of channels that subscribed to the authenticated user's channel.
id: string, The id parameter specifies a comma-separated list of the YouTube channel ID(s) for the resource(s) that are being retrieved. In a channel resource, the id property specifies the channel's YouTube channel ID.
Returns:
An object of the form:
{ # A paginated list of channels returned as the response to a youtube.channels.list call.
+ "eventId": "A String", # Serialized EventId of the request which produced this response.
"nextPageToken": "A String", # The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set.
"kind": "youtube#channelListResponse", # The type of the API response. For this operation, the value will be youtube#channelListResponse.
+ "visitorId": "A String", # The visitorId identifies the visitor.
"items": [ # A list of channels that match the request criteria.
{ # A channel resource contains information about a YouTube channel.
"status": { # JSON template for the status part of a channel. # The status object encapsulates information about the privacy status of the channel.
"privacyStatus": "A String", # Privacy status of the channel.
+ "isLinked": True or False, # If true, then the user is linked to either a YouTube username or G+ account. Otherwise, the user doesn't have a public YouTube identity.
},
- "topicDetails": { # Freebase topic information related to the channel. # The topicDetails object encapsulates information about Freebase topics associated with the channel.
- "topicIds": [ # A list of Freebase topic IDs associated with the channel. You can retrieve information about each topic using the Freebase Topic API.
- "A String",
+ "invideoPromotion": { # Describes an invideo promotion campaign consisting of multiple promoted items. A campaign belongs to a single channel_id. # The invideoPromotion object encapsulates information about promotion campaign associated with the channel.
+ "defaultTiming": { # Describes a temporal position of a visual widget inside a video. # The default temporal position within the video where the promoted item will be displayed. Can be overriden by more specific timing in the item.
+ "offsetMs": "A String", # Defines the time at which the promotion will appear. Depending on the value of type the value of the offsetMs field will represent a time offset from the start or from the end of the video, expressed in milliseconds.
+ "type": "A String", # Describes a timing type. If the value is offsetFromStart, then the offsetMs field represents an offset from the start of the video. If the value is offsetFromEnd, then the offsetMs field represents an offset from the end of the video.
+ "durationMs": "A String", # Defines the duration in milliseconds for which the promotion should be displayed. If missing, the client should use the default.
+ },
+ "items": [ # List of promoted items in decreasing priority.
+ { # Describes a single promoted item.
+ "timing": { # Describes a temporal position of a visual widget inside a video. # The temporal position within the video where the promoted item will be displayed. If present, it overrides the default timing.
+ "offsetMs": "A String", # Defines the time at which the promotion will appear. Depending on the value of type the value of the offsetMs field will represent a time offset from the start or from the end of the video, expressed in milliseconds.
+ "type": "A String", # Describes a timing type. If the value is offsetFromStart, then the offsetMs field represents an offset from the start of the video. If the value is offsetFromEnd, then the offsetMs field represents an offset from the end of the video.
+ "durationMs": "A String", # Defines the duration in milliseconds for which the promotion should be displayed. If missing, the client should use the default.
+ },
+ "customMessage": "A String", # A custom message to display for this promotion. This field is currently ignored unless the promoted item is a website.
+ "id": { # Describes a single promoted item id. It is a union of various possible types. # Identifies the promoted item.
+ "websiteUrl": "A String", # If the promoted item represents a website, this field represents the url pointing to the website. This field will be present only if type has the value website.
+ "type": "A String", # Describes the type of the promoted item.
+ "videoId": "A String", # If the promoted item represents a video, this field represents the unique YouTube ID identifying it. This field will be present only if type has the value video.
+ },
+ },
],
+ "position": { # Describes the spatial position of a visual widget inside a video. It is a union of various position types, out of which only will be set one. # The spatial position within the video where the promoted item will be displayed.
+ "cornerPosition": "A String", # Describes in which corner of the video the visual widget will appear.
+ "type": "A String", # Defines the position type.
+ },
},
- "kind": "youtube#channel", # The type of the API resource. For channel resources, the value will be youtube#channel.
+ "kind": "youtube#channel", # The kind, fixed to "youtube#channel".
"statistics": { # Statistics about a channel: number of subscribers, number of videos in the channel, etc. # The statistics object encapsulates statistics for the channel.
"commentCount": "A String", # The number of comments for the channel.
"subscriberCount": "A String", # The number of subscribers that the channel has.
"videoCount": "A String", # The number of videos uploaded to the channel.
"viewCount": "A String", # The number of times the channel has been viewed.
},
+ "topicDetails": { # Freebase topic information related to the channel. # The topicDetails object encapsulates information about Freebase topics associated with the channel.
+ "topicIds": [ # A list of Freebase topic IDs associated with the channel. You can retrieve information about each topic using the Freebase Topic API.
+ "A String",
+ ],
+ },
"contentDetails": { # Details about the content of a channel. # The contentDetails object encapsulates information about the channel's content.
- "relatedPlaylists": { # The relatedPlaylists object is a map that identifies playlists associated with the channel, such as the channel's uploaded videos or favorite videos. You can retrieve any of these playlists using the playlists.list method.
- "watchLater": "A String", # The ID of the channel's watch later playlist. Use the playlistItems.insert and playlistItems.delete to add or remove items from that list.
- "watchHistory": "A String", # The ID of the playlist that contains the channel's watch history. Use the playlistItems.insert and playlistItems.delete to add or remove items from that list.
- "likes": "A String", # The ID of the playlist that contains the channel's liked videos. Use the playlistItems.insert and playlistItems.delete to add or remove items from that list.
- "favorites": "A String", # The ID of the playlist that contains the channel's favorite videos. Use the playlistItems.insert and playlistItems.delete to add or remove items from that list.
- "uploads": "A String", # The ID of the playlist that contains the channel's uploaded videos. Use the videos.insert method to upload new videos and the videos.delete method to delete previously uploaded videos.
+ "relatedPlaylists": {
+ "watchLater": "A String", # The ID of the playlist that contains the channel"s watch later playlist. Use the playlistItems.insert and playlistItems.delete to add or remove items from that list.
+ "watchHistory": "A String", # The ID of the playlist that contains the channel"s watch history. Use the playlistItems.insert and playlistItems.delete to add or remove items from that list.
+ "likes": "A String", # The ID of the playlist that contains the channel"s liked videos. Use the playlistItems.insert and playlistItems.delete to add or remove items from that list.
+ "favorites": "A String", # The ID of the playlist that contains the channel"s favorite videos. Use the playlistItems.insert and playlistItems.delete to add or remove items from that list.
+ "uploads": "A String", # The ID of the playlist that contains the channel"s uploaded videos. Use the videos.insert method to upload new videos and the videos.delete method to delete previously uploaded videos.
},
"googlePlusUserId": "A String", # The googlePlusUserId object identifies the Google+ profile ID associated with this channel.
},
"brandingSettings": { # Branding properties of a YouTube channel. # The brandingSettings object encapsulates information about the branding of the channel.
- "image": {
- "largeBrandedBannerImageUrl": { # Represent a property available in different languages.
- "default": "A String",
- "localizeds": [
+ "image": { # Branding properties for images associated with the channel. # Branding properties for branding images.
+ "largeBrandedBannerImageUrl": { # Represent a property available in different languages. # The URL for the 854px by 70px image that appears below the video player in the expanded video view of the video watch page.
+ "default": "A String", # Default value for the localized property.
+ "localized": [ # The localized values.
{ # A localized string.
- "value": "A String",
- "language": "A String",
+ "value": "A String", # Value of the property.
+ "language": "A String", # Language associated to this value.
},
],
},
- "bannerImageUrl": "A String",
- "backgroundImageUrl": { # Represent a property available in different languages.
- "default": "A String",
- "localizeds": [
+ "bannerImageUrl": "A String", # Banner image. Desktop size (1060x175).
+ "backgroundImageUrl": { # Represent a property available in different languages. # The URL for the background image shown on the video watch page. The image should be 1200px by 615px, with a maximum file size of 128k.
+ "default": "A String", # Default value for the localized property.
+ "localized": [ # The localized values.
{ # A localized string.
- "value": "A String",
- "language": "A String",
+ "value": "A String", # Value of the property.
+ "language": "A String", # Language associated to this value.
},
],
},
- "largeBrandedBannerImageImapScript": { # Represent a property available in different languages.
- "default": "A String",
- "localizeds": [
+ "largeBrandedBannerImageImapScript": { # Represent a property available in different languages. # The image map script for the large banner image.
+ "default": "A String", # Default value for the localized property.
+ "localized": [ # The localized values.
{ # A localized string.
- "value": "A String",
- "language": "A String",
+ "value": "A String", # Value of the property.
+ "language": "A String", # Language associated to this value.
},
],
},
- "bannerMobileImageUrl": "A String",
- "smallBrandedBannerImageUrl": { # Represent a property available in different languages.
- "default": "A String",
- "localizeds": [
+ "bannerMobileImageUrl": "A String", # Banner image. Mobile size (640x175).
+ "smallBrandedBannerImageImapScript": { # Represent a property available in different languages. # The image map script for the small banner image.
+ "default": "A String", # Default value for the localized property.
+ "localized": [ # The localized values.
{ # A localized string.
- "value": "A String",
- "language": "A String",
+ "value": "A String", # Value of the property.
+ "language": "A String", # Language associated to this value.
},
],
},
- "smallBrandedBannerImageImapScript": { # Represent a property available in different languages.
- "default": "A String",
- "localizeds": [
+ "smallBrandedBannerImageUrl": { # Represent a property available in different languages. # The URL for the 640px by 70px banner image that appears below the video player in the default view of the video watch page.
+ "default": "A String", # Default value for the localized property.
+ "localized": [ # The localized values.
{ # A localized string.
- "value": "A String",
- "language": "A String",
+ "value": "A String", # Value of the property.
+ "language": "A String", # Language associated to this value.
},
],
},
- "trackingImageUrl": "A String",
- "watchIconImageUrl": "A String",
+ "bannerTabletHdImageUrl": "A String", # Banner image. Tablet size high resolution (2276x377).
+ "bannerTabletLowImageUrl": "A String", # Banner image. Tablet size low resolution (1138x188).
+ "trackingImageUrl": "A String", # The URL for a 1px by 1px tracking pixel that can be used to collect statistics for views of the channel or video pages.
+ "bannerMobileMediumHdImageUrl": "A String", # Banner image. Mobile size medium/high resolution (960x263).
+ "bannerMobileHdImageUrl": "A String", # Banner image. Mobile size high resolution (1280x360).
+ "bannerExternalUrl": "A String", # This is used only in update requests; if it's set, we use this URL to generate all of the above banner URLs.
+ "bannerTabletImageUrl": "A String", # Banner image. Tablet size (1707x283).
+ "bannerMobileExtraHdImageUrl": "A String", # Banner image. Mobile size high resolution (1440x395).
+ "bannerMobileLowImageUrl": "A String", # Banner image. Mobile size low resolution (320x88).
+ "watchIconImageUrl": "A String", # The URL for the image that appears above the top-left corner of the video player. This is a 25-pixel-high image with a flexible width that cannot exceed 170 pixels.
+ "bannerTvImageUrl": "A String", # Banner image. TV size (2120x1192).
+ "bannerTabletExtraHdImageUrl": "A String", # Banner image. Tablet size extra high resolution (2560x424).
},
- "watch": { # Branding properties for the watch.
- "textColor": "A String",
- "featuredPlaylistId": "A String",
- "backgroundColor": "A String",
+ "watch": { # Branding properties for the watch. # Branding properties for the watch page.
+ "textColor": "A String", # The background color for the video watch page's branded area.
+ "featuredPlaylistId": "A String", # An ID that uniquely identifies a playlist that displays next to the video player.
+ "backgroundColor": "A String", # The text color for the video watch page's branded area.
},
- "channel": { # Branding properties for the channel view.
- "description": "A String",
- "title": "A String",
- "moderateComments": True or False,
- "showBrowseView": True or False,
- "featuredChannelsTitle": "A String",
- "unsubscribedTrailer": "A String",
- "keywords": "A String",
- "defaultTab": "A String",
- "featuredChannelsUrls": [
+ "channel": { # Branding properties for the channel view. # Branding properties for the channel view.
+ "description": "A String", # Specifies the channel description.
+ "title": "A String", # Specifies the channel title.
+ "moderateComments": True or False, # Whether user-submitted comments left on the channel page need to be approved by the channel owner to be publicly visible.
+ "showBrowseView": True or False, # Whether the tab to browse the videos should be displayed.
+ "featuredChannelsTitle": "A String", # Title for the featured channels tab.
+ "unsubscribedTrailer": "A String", # The trailer of the channel, for users that are not subscribers.
+ "keywords": "A String", # Lists keywords associated with the channel, comma-separated.
+ "profileColor": "A String", # A prominent color that can be rendered on this channel page.
+ "defaultTab": "A String", # Which content tab users should see when viewing the channel.
+ "featuredChannelsUrls": [ # The list of featured channels.
"A String",
],
- "trackingAnalyticsAccountId": "A String",
- "showRelatedChannels": True or False,
+ "trackingAnalyticsAccountId": "A String", # The ID for a Google Analytics account to track and measure traffic to the channels.
+ "showRelatedChannels": True or False, # Whether related channels should be proposed.
},
- "hints": [
- { # A key value for the experimental branding properties.
- "property": "A String",
- "value": "A String",
+ "hints": [ # Additional experimental branding properties.
+ { # A pair Property / Value.
+ "property": "A String", # A property.
+ "value": "A String", # The property's value.
+ },
+ ],
+ },
+ "conversionPings": { # The conversionPings object encapsulates information about conversion pings that need to be respected by the channel. # The conversionPings object encapsulates information about conversion pings that need to be respected by the channel.
+ "pings": [ # Pings that the app shall fire (authenticated by biscotti cookie). Each ping has a context, in which the app must fire the ping, and a url identifying the ping.
+ { # Pings that the app shall fire (authenticated by biscotti cookie). Each ping has a context, in which the app must fire the ping, and a url identifying the ping.
+ "conversionUrl": "A String", # The url (without the schema) that the player shall send the ping to. It's at caller's descretion to decide which schema to use (http vs https) Example of a returned url: //googleads.g.doubleclick.net/pagead/ viewthroughconversion/962985656/?data=path%3DtHe_path%3Btype%3D cview%3Butuid%3DGISQtTNGYqaYl4sKxoVvKA&labe=default The caller must append biscotti authentication (ms param in case of mobile, for example) to this ping.
+ "context": "A String", # Defines the context of the ping.
},
],
},
@@ -213,15 +266,35 @@
"title": "A String", # The channel's title.
"description": "A String", # The description of the channel.
"publishedAt": "A String", # The date and time that the channel was created. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
- "thumbnails": { # A map of thumbnail images associated with the channel. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
- "a_key": { # A thumbnail is an image representing a YouTube resource. # Name of the thumbnail, to easily identify it. The set of names is dependent on the resource the thumbnail is for.
+ "thumbnails": { # Internal representation of thumbnails for a YouTube resource. # A map of thumbnail images associated with the channel. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+ "default": { # A thumbnail is an image representing a YouTube resource. # The default image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "high": { # A thumbnail is an image representing a YouTube resource. # The high quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "medium": { # A thumbnail is an image representing a YouTube resource. # The medium quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "maxres": { # A thumbnail is an image representing a YouTube resource. # The maximum resolution quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "standard": { # A thumbnail is an image representing a YouTube resource. # The standard quality image for this resource.
"url": "A String", # The thumbnail image's URL.
"width": 42, # (Optional) Width of the thumbnail image.
"height": 42, # (Optional) Height of the thumbnail image.
},
},
},
- "etag": "A String", # The ETag for the channel resource.
+ "etag": "A String", # Etag of this resource.
"id": "A String", # The ID that YouTube uses to uniquely identify the channel.
},
],
@@ -248,4 +321,397 @@
</pre>
</div>
+<div class="method">
+ <code class="details" id="update">update(part=None, body, onBehalfOfContentOwner=None)</code>
+ <pre>Updates a channel's metadata.
+
+Args:
+ part: string, The part parameter serves two purposes in this operation. It identifies the properties that the write operation will set as well as the properties that the API response will include.
+
+The part names that you can include in the parameter value are id and invideoPromotion.
+
+Note that this method will override the existing values for all of the mutable properties that are contained in any parts that the parameter value specifies. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # A channel resource contains information about a YouTube channel.
+ "status": { # JSON template for the status part of a channel. # The status object encapsulates information about the privacy status of the channel.
+ "privacyStatus": "A String", # Privacy status of the channel.
+ "isLinked": True or False, # If true, then the user is linked to either a YouTube username or G+ account. Otherwise, the user doesn't have a public YouTube identity.
+ },
+ "invideoPromotion": { # Describes an invideo promotion campaign consisting of multiple promoted items. A campaign belongs to a single channel_id. # The invideoPromotion object encapsulates information about promotion campaign associated with the channel.
+ "defaultTiming": { # Describes a temporal position of a visual widget inside a video. # The default temporal position within the video where the promoted item will be displayed. Can be overriden by more specific timing in the item.
+ "offsetMs": "A String", # Defines the time at which the promotion will appear. Depending on the value of type the value of the offsetMs field will represent a time offset from the start or from the end of the video, expressed in milliseconds.
+ "type": "A String", # Describes a timing type. If the value is offsetFromStart, then the offsetMs field represents an offset from the start of the video. If the value is offsetFromEnd, then the offsetMs field represents an offset from the end of the video.
+ "durationMs": "A String", # Defines the duration in milliseconds for which the promotion should be displayed. If missing, the client should use the default.
+ },
+ "items": [ # List of promoted items in decreasing priority.
+ { # Describes a single promoted item.
+ "timing": { # Describes a temporal position of a visual widget inside a video. # The temporal position within the video where the promoted item will be displayed. If present, it overrides the default timing.
+ "offsetMs": "A String", # Defines the time at which the promotion will appear. Depending on the value of type the value of the offsetMs field will represent a time offset from the start or from the end of the video, expressed in milliseconds.
+ "type": "A String", # Describes a timing type. If the value is offsetFromStart, then the offsetMs field represents an offset from the start of the video. If the value is offsetFromEnd, then the offsetMs field represents an offset from the end of the video.
+ "durationMs": "A String", # Defines the duration in milliseconds for which the promotion should be displayed. If missing, the client should use the default.
+ },
+ "customMessage": "A String", # A custom message to display for this promotion. This field is currently ignored unless the promoted item is a website.
+ "id": { # Describes a single promoted item id. It is a union of various possible types. # Identifies the promoted item.
+ "websiteUrl": "A String", # If the promoted item represents a website, this field represents the url pointing to the website. This field will be present only if type has the value website.
+ "type": "A String", # Describes the type of the promoted item.
+ "videoId": "A String", # If the promoted item represents a video, this field represents the unique YouTube ID identifying it. This field will be present only if type has the value video.
+ },
+ },
+ ],
+ "position": { # Describes the spatial position of a visual widget inside a video. It is a union of various position types, out of which only will be set one. # The spatial position within the video where the promoted item will be displayed.
+ "cornerPosition": "A String", # Describes in which corner of the video the visual widget will appear.
+ "type": "A String", # Defines the position type.
+ },
+ },
+ "kind": "youtube#channel", # The kind, fixed to "youtube#channel".
+ "statistics": { # Statistics about a channel: number of subscribers, number of videos in the channel, etc. # The statistics object encapsulates statistics for the channel.
+ "commentCount": "A String", # The number of comments for the channel.
+ "subscriberCount": "A String", # The number of subscribers that the channel has.
+ "videoCount": "A String", # The number of videos uploaded to the channel.
+ "viewCount": "A String", # The number of times the channel has been viewed.
+ },
+ "topicDetails": { # Freebase topic information related to the channel. # The topicDetails object encapsulates information about Freebase topics associated with the channel.
+ "topicIds": [ # A list of Freebase topic IDs associated with the channel. You can retrieve information about each topic using the Freebase Topic API.
+ "A String",
+ ],
+ },
+ "contentDetails": { # Details about the content of a channel. # The contentDetails object encapsulates information about the channel's content.
+ "relatedPlaylists": {
+ "watchLater": "A String", # The ID of the playlist that contains the channel"s watch later playlist. Use the playlistItems.insert and playlistItems.delete to add or remove items from that list.
+ "watchHistory": "A String", # The ID of the playlist that contains the channel"s watch history. Use the playlistItems.insert and playlistItems.delete to add or remove items from that list.
+ "likes": "A String", # The ID of the playlist that contains the channel"s liked videos. Use the playlistItems.insert and playlistItems.delete to add or remove items from that list.
+ "favorites": "A String", # The ID of the playlist that contains the channel"s favorite videos. Use the playlistItems.insert and playlistItems.delete to add or remove items from that list.
+ "uploads": "A String", # The ID of the playlist that contains the channel"s uploaded videos. Use the videos.insert method to upload new videos and the videos.delete method to delete previously uploaded videos.
+ },
+ "googlePlusUserId": "A String", # The googlePlusUserId object identifies the Google+ profile ID associated with this channel.
+ },
+ "brandingSettings": { # Branding properties of a YouTube channel. # The brandingSettings object encapsulates information about the branding of the channel.
+ "image": { # Branding properties for images associated with the channel. # Branding properties for branding images.
+ "largeBrandedBannerImageUrl": { # Represent a property available in different languages. # The URL for the 854px by 70px image that appears below the video player in the expanded video view of the video watch page.
+ "default": "A String", # Default value for the localized property.
+ "localized": [ # The localized values.
+ { # A localized string.
+ "value": "A String", # Value of the property.
+ "language": "A String", # Language associated to this value.
+ },
+ ],
+ },
+ "bannerImageUrl": "A String", # Banner image. Desktop size (1060x175).
+ "backgroundImageUrl": { # Represent a property available in different languages. # The URL for the background image shown on the video watch page. The image should be 1200px by 615px, with a maximum file size of 128k.
+ "default": "A String", # Default value for the localized property.
+ "localized": [ # The localized values.
+ { # A localized string.
+ "value": "A String", # Value of the property.
+ "language": "A String", # Language associated to this value.
+ },
+ ],
+ },
+ "largeBrandedBannerImageImapScript": { # Represent a property available in different languages. # The image map script for the large banner image.
+ "default": "A String", # Default value for the localized property.
+ "localized": [ # The localized values.
+ { # A localized string.
+ "value": "A String", # Value of the property.
+ "language": "A String", # Language associated to this value.
+ },
+ ],
+ },
+ "bannerMobileImageUrl": "A String", # Banner image. Mobile size (640x175).
+ "smallBrandedBannerImageImapScript": { # Represent a property available in different languages. # The image map script for the small banner image.
+ "default": "A String", # Default value for the localized property.
+ "localized": [ # The localized values.
+ { # A localized string.
+ "value": "A String", # Value of the property.
+ "language": "A String", # Language associated to this value.
+ },
+ ],
+ },
+ "smallBrandedBannerImageUrl": { # Represent a property available in different languages. # The URL for the 640px by 70px banner image that appears below the video player in the default view of the video watch page.
+ "default": "A String", # Default value for the localized property.
+ "localized": [ # The localized values.
+ { # A localized string.
+ "value": "A String", # Value of the property.
+ "language": "A String", # Language associated to this value.
+ },
+ ],
+ },
+ "bannerTabletHdImageUrl": "A String", # Banner image. Tablet size high resolution (2276x377).
+ "bannerTabletLowImageUrl": "A String", # Banner image. Tablet size low resolution (1138x188).
+ "trackingImageUrl": "A String", # The URL for a 1px by 1px tracking pixel that can be used to collect statistics for views of the channel or video pages.
+ "bannerMobileMediumHdImageUrl": "A String", # Banner image. Mobile size medium/high resolution (960x263).
+ "bannerMobileHdImageUrl": "A String", # Banner image. Mobile size high resolution (1280x360).
+ "bannerExternalUrl": "A String", # This is used only in update requests; if it's set, we use this URL to generate all of the above banner URLs.
+ "bannerTabletImageUrl": "A String", # Banner image. Tablet size (1707x283).
+ "bannerMobileExtraHdImageUrl": "A String", # Banner image. Mobile size high resolution (1440x395).
+ "bannerMobileLowImageUrl": "A String", # Banner image. Mobile size low resolution (320x88).
+ "watchIconImageUrl": "A String", # The URL for the image that appears above the top-left corner of the video player. This is a 25-pixel-high image with a flexible width that cannot exceed 170 pixels.
+ "bannerTvImageUrl": "A String", # Banner image. TV size (2120x1192).
+ "bannerTabletExtraHdImageUrl": "A String", # Banner image. Tablet size extra high resolution (2560x424).
+ },
+ "watch": { # Branding properties for the watch. # Branding properties for the watch page.
+ "textColor": "A String", # The background color for the video watch page's branded area.
+ "featuredPlaylistId": "A String", # An ID that uniquely identifies a playlist that displays next to the video player.
+ "backgroundColor": "A String", # The text color for the video watch page's branded area.
+ },
+ "channel": { # Branding properties for the channel view. # Branding properties for the channel view.
+ "description": "A String", # Specifies the channel description.
+ "title": "A String", # Specifies the channel title.
+ "moderateComments": True or False, # Whether user-submitted comments left on the channel page need to be approved by the channel owner to be publicly visible.
+ "showBrowseView": True or False, # Whether the tab to browse the videos should be displayed.
+ "featuredChannelsTitle": "A String", # Title for the featured channels tab.
+ "unsubscribedTrailer": "A String", # The trailer of the channel, for users that are not subscribers.
+ "keywords": "A String", # Lists keywords associated with the channel, comma-separated.
+ "profileColor": "A String", # A prominent color that can be rendered on this channel page.
+ "defaultTab": "A String", # Which content tab users should see when viewing the channel.
+ "featuredChannelsUrls": [ # The list of featured channels.
+ "A String",
+ ],
+ "trackingAnalyticsAccountId": "A String", # The ID for a Google Analytics account to track and measure traffic to the channels.
+ "showRelatedChannels": True or False, # Whether related channels should be proposed.
+ },
+ "hints": [ # Additional experimental branding properties.
+ { # A pair Property / Value.
+ "property": "A String", # A property.
+ "value": "A String", # The property's value.
+ },
+ ],
+ },
+ "conversionPings": { # The conversionPings object encapsulates information about conversion pings that need to be respected by the channel. # The conversionPings object encapsulates information about conversion pings that need to be respected by the channel.
+ "pings": [ # Pings that the app shall fire (authenticated by biscotti cookie). Each ping has a context, in which the app must fire the ping, and a url identifying the ping.
+ { # Pings that the app shall fire (authenticated by biscotti cookie). Each ping has a context, in which the app must fire the ping, and a url identifying the ping.
+ "conversionUrl": "A String", # The url (without the schema) that the player shall send the ping to. It's at caller's descretion to decide which schema to use (http vs https) Example of a returned url: //googleads.g.doubleclick.net/pagead/ viewthroughconversion/962985656/?data=path%3DtHe_path%3Btype%3D cview%3Butuid%3DGISQtTNGYqaYl4sKxoVvKA&labe=default The caller must append biscotti authentication (ms param in case of mobile, for example) to this ping.
+ "context": "A String", # Defines the context of the ping.
+ },
+ ],
+ },
+ "snippet": { # Basic details about a channel, including title, description and thumbnails. # The snippet object contains basic details about the channel, such as its title, description, and thumbnail images.
+ "title": "A String", # The channel's title.
+ "description": "A String", # The description of the channel.
+ "publishedAt": "A String", # The date and time that the channel was created. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "thumbnails": { # Internal representation of thumbnails for a YouTube resource. # A map of thumbnail images associated with the channel. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+ "default": { # A thumbnail is an image representing a YouTube resource. # The default image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "high": { # A thumbnail is an image representing a YouTube resource. # The high quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "medium": { # A thumbnail is an image representing a YouTube resource. # The medium quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "maxres": { # A thumbnail is an image representing a YouTube resource. # The maximum resolution quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "standard": { # A thumbnail is an image representing a YouTube resource. # The standard quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ },
+ },
+ "etag": "A String", # Etag of this resource.
+ "id": "A String", # The ID that YouTube uses to uniquely identify the channel.
+}
+
+ onBehalfOfContentOwner: string, The onBehalfOfContentOwner parameter indicates that the authenticated user is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The actual CMS account that the user authenticates with needs to be linked to the specified YouTube content owner.
+
+Returns:
+ An object of the form:
+
+ { # A channel resource contains information about a YouTube channel.
+ "status": { # JSON template for the status part of a channel. # The status object encapsulates information about the privacy status of the channel.
+ "privacyStatus": "A String", # Privacy status of the channel.
+ "isLinked": True or False, # If true, then the user is linked to either a YouTube username or G+ account. Otherwise, the user doesn't have a public YouTube identity.
+ },
+ "invideoPromotion": { # Describes an invideo promotion campaign consisting of multiple promoted items. A campaign belongs to a single channel_id. # The invideoPromotion object encapsulates information about promotion campaign associated with the channel.
+ "defaultTiming": { # Describes a temporal position of a visual widget inside a video. # The default temporal position within the video where the promoted item will be displayed. Can be overriden by more specific timing in the item.
+ "offsetMs": "A String", # Defines the time at which the promotion will appear. Depending on the value of type the value of the offsetMs field will represent a time offset from the start or from the end of the video, expressed in milliseconds.
+ "type": "A String", # Describes a timing type. If the value is offsetFromStart, then the offsetMs field represents an offset from the start of the video. If the value is offsetFromEnd, then the offsetMs field represents an offset from the end of the video.
+ "durationMs": "A String", # Defines the duration in milliseconds for which the promotion should be displayed. If missing, the client should use the default.
+ },
+ "items": [ # List of promoted items in decreasing priority.
+ { # Describes a single promoted item.
+ "timing": { # Describes a temporal position of a visual widget inside a video. # The temporal position within the video where the promoted item will be displayed. If present, it overrides the default timing.
+ "offsetMs": "A String", # Defines the time at which the promotion will appear. Depending on the value of type the value of the offsetMs field will represent a time offset from the start or from the end of the video, expressed in milliseconds.
+ "type": "A String", # Describes a timing type. If the value is offsetFromStart, then the offsetMs field represents an offset from the start of the video. If the value is offsetFromEnd, then the offsetMs field represents an offset from the end of the video.
+ "durationMs": "A String", # Defines the duration in milliseconds for which the promotion should be displayed. If missing, the client should use the default.
+ },
+ "customMessage": "A String", # A custom message to display for this promotion. This field is currently ignored unless the promoted item is a website.
+ "id": { # Describes a single promoted item id. It is a union of various possible types. # Identifies the promoted item.
+ "websiteUrl": "A String", # If the promoted item represents a website, this field represents the url pointing to the website. This field will be present only if type has the value website.
+ "type": "A String", # Describes the type of the promoted item.
+ "videoId": "A String", # If the promoted item represents a video, this field represents the unique YouTube ID identifying it. This field will be present only if type has the value video.
+ },
+ },
+ ],
+ "position": { # Describes the spatial position of a visual widget inside a video. It is a union of various position types, out of which only will be set one. # The spatial position within the video where the promoted item will be displayed.
+ "cornerPosition": "A String", # Describes in which corner of the video the visual widget will appear.
+ "type": "A String", # Defines the position type.
+ },
+ },
+ "kind": "youtube#channel", # The kind, fixed to "youtube#channel".
+ "statistics": { # Statistics about a channel: number of subscribers, number of videos in the channel, etc. # The statistics object encapsulates statistics for the channel.
+ "commentCount": "A String", # The number of comments for the channel.
+ "subscriberCount": "A String", # The number of subscribers that the channel has.
+ "videoCount": "A String", # The number of videos uploaded to the channel.
+ "viewCount": "A String", # The number of times the channel has been viewed.
+ },
+ "topicDetails": { # Freebase topic information related to the channel. # The topicDetails object encapsulates information about Freebase topics associated with the channel.
+ "topicIds": [ # A list of Freebase topic IDs associated with the channel. You can retrieve information about each topic using the Freebase Topic API.
+ "A String",
+ ],
+ },
+ "contentDetails": { # Details about the content of a channel. # The contentDetails object encapsulates information about the channel's content.
+ "relatedPlaylists": {
+ "watchLater": "A String", # The ID of the playlist that contains the channel"s watch later playlist. Use the playlistItems.insert and playlistItems.delete to add or remove items from that list.
+ "watchHistory": "A String", # The ID of the playlist that contains the channel"s watch history. Use the playlistItems.insert and playlistItems.delete to add or remove items from that list.
+ "likes": "A String", # The ID of the playlist that contains the channel"s liked videos. Use the playlistItems.insert and playlistItems.delete to add or remove items from that list.
+ "favorites": "A String", # The ID of the playlist that contains the channel"s favorite videos. Use the playlistItems.insert and playlistItems.delete to add or remove items from that list.
+ "uploads": "A String", # The ID of the playlist that contains the channel"s uploaded videos. Use the videos.insert method to upload new videos and the videos.delete method to delete previously uploaded videos.
+ },
+ "googlePlusUserId": "A String", # The googlePlusUserId object identifies the Google+ profile ID associated with this channel.
+ },
+ "brandingSettings": { # Branding properties of a YouTube channel. # The brandingSettings object encapsulates information about the branding of the channel.
+ "image": { # Branding properties for images associated with the channel. # Branding properties for branding images.
+ "largeBrandedBannerImageUrl": { # Represent a property available in different languages. # The URL for the 854px by 70px image that appears below the video player in the expanded video view of the video watch page.
+ "default": "A String", # Default value for the localized property.
+ "localized": [ # The localized values.
+ { # A localized string.
+ "value": "A String", # Value of the property.
+ "language": "A String", # Language associated to this value.
+ },
+ ],
+ },
+ "bannerImageUrl": "A String", # Banner image. Desktop size (1060x175).
+ "backgroundImageUrl": { # Represent a property available in different languages. # The URL for the background image shown on the video watch page. The image should be 1200px by 615px, with a maximum file size of 128k.
+ "default": "A String", # Default value for the localized property.
+ "localized": [ # The localized values.
+ { # A localized string.
+ "value": "A String", # Value of the property.
+ "language": "A String", # Language associated to this value.
+ },
+ ],
+ },
+ "largeBrandedBannerImageImapScript": { # Represent a property available in different languages. # The image map script for the large banner image.
+ "default": "A String", # Default value for the localized property.
+ "localized": [ # The localized values.
+ { # A localized string.
+ "value": "A String", # Value of the property.
+ "language": "A String", # Language associated to this value.
+ },
+ ],
+ },
+ "bannerMobileImageUrl": "A String", # Banner image. Mobile size (640x175).
+ "smallBrandedBannerImageImapScript": { # Represent a property available in different languages. # The image map script for the small banner image.
+ "default": "A String", # Default value for the localized property.
+ "localized": [ # The localized values.
+ { # A localized string.
+ "value": "A String", # Value of the property.
+ "language": "A String", # Language associated to this value.
+ },
+ ],
+ },
+ "smallBrandedBannerImageUrl": { # Represent a property available in different languages. # The URL for the 640px by 70px banner image that appears below the video player in the default view of the video watch page.
+ "default": "A String", # Default value for the localized property.
+ "localized": [ # The localized values.
+ { # A localized string.
+ "value": "A String", # Value of the property.
+ "language": "A String", # Language associated to this value.
+ },
+ ],
+ },
+ "bannerTabletHdImageUrl": "A String", # Banner image. Tablet size high resolution (2276x377).
+ "bannerTabletLowImageUrl": "A String", # Banner image. Tablet size low resolution (1138x188).
+ "trackingImageUrl": "A String", # The URL for a 1px by 1px tracking pixel that can be used to collect statistics for views of the channel or video pages.
+ "bannerMobileMediumHdImageUrl": "A String", # Banner image. Mobile size medium/high resolution (960x263).
+ "bannerMobileHdImageUrl": "A String", # Banner image. Mobile size high resolution (1280x360).
+ "bannerExternalUrl": "A String", # This is used only in update requests; if it's set, we use this URL to generate all of the above banner URLs.
+ "bannerTabletImageUrl": "A String", # Banner image. Tablet size (1707x283).
+ "bannerMobileExtraHdImageUrl": "A String", # Banner image. Mobile size high resolution (1440x395).
+ "bannerMobileLowImageUrl": "A String", # Banner image. Mobile size low resolution (320x88).
+ "watchIconImageUrl": "A String", # The URL for the image that appears above the top-left corner of the video player. This is a 25-pixel-high image with a flexible width that cannot exceed 170 pixels.
+ "bannerTvImageUrl": "A String", # Banner image. TV size (2120x1192).
+ "bannerTabletExtraHdImageUrl": "A String", # Banner image. Tablet size extra high resolution (2560x424).
+ },
+ "watch": { # Branding properties for the watch. # Branding properties for the watch page.
+ "textColor": "A String", # The background color for the video watch page's branded area.
+ "featuredPlaylistId": "A String", # An ID that uniquely identifies a playlist that displays next to the video player.
+ "backgroundColor": "A String", # The text color for the video watch page's branded area.
+ },
+ "channel": { # Branding properties for the channel view. # Branding properties for the channel view.
+ "description": "A String", # Specifies the channel description.
+ "title": "A String", # Specifies the channel title.
+ "moderateComments": True or False, # Whether user-submitted comments left on the channel page need to be approved by the channel owner to be publicly visible.
+ "showBrowseView": True or False, # Whether the tab to browse the videos should be displayed.
+ "featuredChannelsTitle": "A String", # Title for the featured channels tab.
+ "unsubscribedTrailer": "A String", # The trailer of the channel, for users that are not subscribers.
+ "keywords": "A String", # Lists keywords associated with the channel, comma-separated.
+ "profileColor": "A String", # A prominent color that can be rendered on this channel page.
+ "defaultTab": "A String", # Which content tab users should see when viewing the channel.
+ "featuredChannelsUrls": [ # The list of featured channels.
+ "A String",
+ ],
+ "trackingAnalyticsAccountId": "A String", # The ID for a Google Analytics account to track and measure traffic to the channels.
+ "showRelatedChannels": True or False, # Whether related channels should be proposed.
+ },
+ "hints": [ # Additional experimental branding properties.
+ { # A pair Property / Value.
+ "property": "A String", # A property.
+ "value": "A String", # The property's value.
+ },
+ ],
+ },
+ "conversionPings": { # The conversionPings object encapsulates information about conversion pings that need to be respected by the channel. # The conversionPings object encapsulates information about conversion pings that need to be respected by the channel.
+ "pings": [ # Pings that the app shall fire (authenticated by biscotti cookie). Each ping has a context, in which the app must fire the ping, and a url identifying the ping.
+ { # Pings that the app shall fire (authenticated by biscotti cookie). Each ping has a context, in which the app must fire the ping, and a url identifying the ping.
+ "conversionUrl": "A String", # The url (without the schema) that the player shall send the ping to. It's at caller's descretion to decide which schema to use (http vs https) Example of a returned url: //googleads.g.doubleclick.net/pagead/ viewthroughconversion/962985656/?data=path%3DtHe_path%3Btype%3D cview%3Butuid%3DGISQtTNGYqaYl4sKxoVvKA&labe=default The caller must append biscotti authentication (ms param in case of mobile, for example) to this ping.
+ "context": "A String", # Defines the context of the ping.
+ },
+ ],
+ },
+ "snippet": { # Basic details about a channel, including title, description and thumbnails. # The snippet object contains basic details about the channel, such as its title, description, and thumbnail images.
+ "title": "A String", # The channel's title.
+ "description": "A String", # The description of the channel.
+ "publishedAt": "A String", # The date and time that the channel was created. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "thumbnails": { # Internal representation of thumbnails for a YouTube resource. # A map of thumbnail images associated with the channel. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+ "default": { # A thumbnail is an image representing a YouTube resource. # The default image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "high": { # A thumbnail is an image representing a YouTube resource. # The high quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "medium": { # A thumbnail is an image representing a YouTube resource. # The medium quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "maxres": { # A thumbnail is an image representing a YouTube resource. # The maximum resolution quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "standard": { # A thumbnail is an image representing a YouTube resource. # The standard quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ },
+ },
+ "etag": "A String", # Etag of this resource.
+ "id": "A String", # The ID that YouTube uses to uniquely identify the channel.
+ }</pre>
+</div>
+
</body></html>
\ No newline at end of file
diff --git a/docs/dyn/youtube_v3.guideCategories.html b/docs/dyn/youtube_v3.guideCategories.html
index 073293e..38cd259 100644
--- a/docs/dyn/youtube_v3.guideCategories.html
+++ b/docs/dyn/youtube_v3.guideCategories.html
@@ -94,19 +94,21 @@
An object of the form:
{ # A paginated list of guide categories returned as the response to a youtube.guideCategories.list call.
+ "eventId": "A String", # Serialized EventId of the request which produced this response.
"items": [ # A list of categories that can be associated with YouTube channels. In this map, the category ID is the map key, and its value is the corresponding guideCategory resource.
{ # A guideCategory resource identifies a category that YouTube algorithmically assigns based on a channel's content or other indicators, such as the channel's popularity. The list is similar to video categories, with the difference being that a video's uploader can assign a video category but only YouTube can assign a channel category.
"snippet": { # Basic details about a guide category. # The snippet object contains basic details about the category, such as its title.
- "channelId": "UCBR8-60-B28hp2BmDPdntcQ", # The ID that YouTube uses to uniquely identify the channel publishing the guide category.
- "title": "A String", # The category's title.
+ "channelId": "UCBR8-60-B28hp2BmDPdntcQ",
+ "title": "A String", # Description of the guide category.
},
- "kind": "youtube#guideCategory", # The type of the API resource. For guideCategory resources, the value will be youtube#guideCategory/code>.
- "etag": "A String", # The ETag of the guideCategory resource.
+ "kind": "youtube#guideCategory", # The kind, fixed to "youtube#guideCategory".
+ "etag": "A String", # Etag of this resource.
"id": "A String", # The ID that YouTube uses to uniquely identify the guide category.
},
],
"kind": "youtube#guideCategoryListResponse", # The type of the API response. For this operation, the value will be youtube#guideCategoryListResponse.
"etag": "A String", # The ETag of the response.
+ "visitorId": "A String", # The visitorId identifies the visitor.
}</pre>
</div>
diff --git a/docs/dyn/youtube_v3.html b/docs/dyn/youtube_v3.html
index 4f8da3d..ee5a74d 100644
--- a/docs/dyn/youtube_v3.html
+++ b/docs/dyn/youtube_v3.html
@@ -80,6 +80,11 @@
<p class="firstline">Returns the activities Resource.</p>
<p class="toc_element">
+ <code><a href="youtube_v3.channelBanners.html">channelBanners()</a></code>
+</p>
+<p class="firstline">Returns the channelBanners Resource.</p>
+
+<p class="toc_element">
<code><a href="youtube_v3.channels.html">channels()</a></code>
</p>
<p class="firstline">Returns the channels Resource.</p>
@@ -120,6 +125,11 @@
<p class="firstline">Returns the subscriptions Resource.</p>
<p class="toc_element">
+ <code><a href="youtube_v3.thumbnails.html">thumbnails()</a></code>
+</p>
+<p class="firstline">Returns the thumbnails Resource.</p>
+
+<p class="toc_element">
<code><a href="youtube_v3.videoCategories.html">videoCategories()</a></code>
</p>
<p class="firstline">Returns the videoCategories Resource.</p>
diff --git a/docs/dyn/youtube_v3.liveBroadcasts.html b/docs/dyn/youtube_v3.liveBroadcasts.html
index b7957f2..143e8a0 100644
--- a/docs/dyn/youtube_v3.liveBroadcasts.html
+++ b/docs/dyn/youtube_v3.liveBroadcasts.html
@@ -75,295 +75,485 @@
<h1><a href="youtube_v3.html">YouTube Data API</a> . <a href="youtube_v3.liveBroadcasts.html">liveBroadcasts</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
- <code><a href="#bind">bind(id, part, streamId=None)</a></code></p>
-<p class="firstline">Bind a YouTube live broadcast to a stream.</p>
+ <code><a href="#bind">bind(id, part, onBehalfOfContentOwner=None, streamId=None)</a></code></p>
+<p class="firstline">Binds a YouTube broadcast to a stream or removes an existing binding between a broadcast and a stream. A broadcast can only be bound to one video stream.</p>
<p class="toc_element">
- <code><a href="#delete">delete(id)</a></code></p>
-<p class="firstline">Delete a YouTube live broadcast.</p>
+ <code><a href="#control">control(id, part, onBehalfOfContentOwner=None, displaySlate=None, offsetTimeMs=None)</a></code></p>
+<p class="firstline">Control the slate of the broadacast.</p>
<p class="toc_element">
- <code><a href="#insert">insert(part, body)</a></code></p>
-<p class="firstline">Insert a YouTube live broadcast.</p>
+ <code><a href="#delete">delete(id, onBehalfOfContentOwner=None)</a></code></p>
+<p class="firstline">Deletes a broadcast.</p>
<p class="toc_element">
- <code><a href="#list">list(part, broadcastStatus=None, onBehalfOf=None, pageToken=None, maxResults=None, mine=None, id=None)</a></code></p>
-<p class="firstline">Browse the YouTube broadcast collection.</p>
+ <code><a href="#insert">insert(part=None, body, onBehalfOfContentOwner=None)</a></code></p>
+<p class="firstline">Creates a broadcast.</p>
+<p class="toc_element">
+ <code><a href="#list">list(part, broadcastStatus=None, pageToken=None, mine=None, maxResults=None, id=None)</a></code></p>
+<p class="firstline">Returns a list of YouTube broadcasts that match the API request parameters.</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="#transition">transition(broadcastStatus, id, part)</a></code></p>
-<p class="firstline">Change the broadcasting status of a YouTube live broadcast and start all the processes associated with it.</p>
+ <code><a href="#transition">transition(broadcastStatus, id, part, onBehalfOfContentOwner=None)</a></code></p>
+<p class="firstline">Changes the status of a YouTube live broadcast and initiates any processes associated with the new status. For example, when you transition a broadcast's status to testing, YouTube starts to transmit video to that broadcast's monitor stream.</p>
<p class="toc_element">
- <code><a href="#update">update(part=None, body)</a></code></p>
-<p class="firstline">Update a YouTube live broadcast.</p>
+ <code><a href="#update">update(part=None, body, onBehalfOfContentOwner=None)</a></code></p>
+<p class="firstline">Updates a broadcast. For example, you could modify the broadcast settings defined in the liveBroadcast resource's contentDetails object.</p>
<h3>Method Details</h3>
<div class="method">
- <code class="details" id="bind">bind(id, part, streamId=None)</code>
- <pre>Bind a YouTube live broadcast to a stream.
+ <code class="details" id="bind">bind(id, part, onBehalfOfContentOwner=None, streamId=None)</code>
+ <pre>Binds a YouTube broadcast to a stream or removes an existing binding between a broadcast and a stream. A broadcast can only be bound to one video stream.
Args:
- id: string, ID of the broadcast to which the stream will be bound (required)
- part: string, Live broadcast parts to be returned in the response. Valid values are: id, snippet, status, slateSettings, contentDetails. (required)
- streamId: string, ID of the stream to bind to the broadcast
+ id: string, The id parameter specifies the unique ID of the broadcast that is being bound to a video stream. (required)
+ part: string, The part parameter specifies a comma-separated list of one or more liveBroadcast resource properties that the API response will include. The part names that you can include in the parameter value are id, snippet, contentDetails, and status. (required)
+ onBehalfOfContentOwner: string, USE_DESCRIPTION --- channels:list:onBehalfOfContentOwner
+ streamId: string, The streamId parameter specifies the unique ID of the video stream that is being bound to a broadcast. If this parameter is omitted, the API will remove any existing binding between the broadcast and a video stream.
Returns:
An object of the form:
- { # A live broadcast describes live event configuration.
- "status": { # The status of a live broadcast. # The status of the live broadcast.
- "privacyStatus": "A String", # Privacy settings of the live broadcast. Allowed values: private, unlisted, public.
- "lifeCycleStatus": "A String", # Life status of the live broadcast.
- },
- "kind": "youtube#liveBroadcast", # The type of this API resource.
- "contentDetails": { # Slate settings of a broadcast. # The content details of the live broadcast.
- "enableArchive": True or False, # Whether the live event will be archived or not.
- "boundStreamId": "A String", # The id of the stream bound to the broadcast.
- "startWithSlateCuepoint": True or False, # Automatically start with a slate cuepoint.
- "enableEmbed": True or False, # Whether to allow the broadcast to be played in an embedded player.
- "enableContentEncryption": True or False, # Whether to enable or disable content encryption.
- "enableDvr": True or False, # Whether the dvr (digital video recording) is enabled or not.
- "monitorStream": { # Information about the monitor stream which helps the broadcaster to review the event content before shown to the public.
- "broadcastStreamDelayMs": 42, # If enableMonitorStream is true, the public broadcast will be delayed by this value.
- "embedHtml": "A String", # The html code of the embedded player for the monitor stream.
- "enableMonitorStream": True or False, # Whether to enable the monitor stream for the broadcast.
- },
- },
- "slateSettings": { # Slate settings of a broadcast. # The slate settings of the live broadcast.
- "slates": { # Broadcast slates.
- "a_key": { # Locale code indicating in which region should the slate be displayed.
- "backgroundUrl": "A String", # Url of the background image.
- "textLines": [ # Multi-line message showing in the slate.
- "A String",
- ],
- },
- },
- "enableSlates": True or False, # Whether slate is enabled or not.
- },
- "snippet": { # Basic details about a live broadcast, including title, description and thumbnails. # Basic details about the live broadcast.
- "actualEndTime": "A String", # Date and time the broadcast is actual to end. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
- "description": "A String", # Description of the broadcast.
- "title": "A String", # Title of the broadcast.
- "channelId": "A String", # Channel publishing the broadcast.
- "publishedAt": "A String", # Date and time the broadcast was published at. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
- "scheduledStartTime": "A String", # Date and time the broadcast is scheduled to start. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
- "actualStartTime": "A String", # Date and time the broadcast is actual to start. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
- "scheduledEndTime": "A String", # Date and time the broadcast is scheduled to end. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
- "thumbnails": { # Video thumbnails.
- "a_key": { # A thumbnail is an image representing a YouTube resource. # A map of thumbnails by their name.
- "url": "A String", # The thumbnail image's URL.
- "width": 42, # (Optional) Width of the thumbnail image.
- "height": 42, # (Optional) Height of the thumbnail image.
- },
- },
- },
- "etag": "A String", # The eTag of the broadcast.
- "id": "A String", # The unique id of the broadcast.
- }</pre>
-</div>
-
-<div class="method">
- <code class="details" id="delete">delete(id)</code>
- <pre>Delete a YouTube live broadcast.
-
-Args:
- id: string, The id parameter specifies the YouTube live broadcast ID for the resource that is being deleted. (required)
-</pre>
-</div>
-
-<div class="method">
- <code class="details" id="insert">insert(part, body)</code>
- <pre>Insert a YouTube live broadcast.
-
-Args:
- part: string, Live broadcast parts to be set for the broadcast as well as included in the returned response. Valid values are: snippet, status, slateSettings, contentDetails. (required)
- body: object, The request body. (required)
- The object takes the form of:
-
-{ # A live broadcast describes live event configuration.
- "status": { # The status of a live broadcast. # The status of the live broadcast.
- "privacyStatus": "A String", # Privacy settings of the live broadcast. Allowed values: private, unlisted, public.
- "lifeCycleStatus": "A String", # Life status of the live broadcast.
+ { # A liveBroadcast resource represents an event that will be streamed, via live video, on YouTube.
+ "status": { # The status object contains information about the event's status.
+ "recordingStatus": "A String", # The broadcast's recording status.
+ "privacyStatus": "A String", # The broadcast's privacy status. Note that the broadcast represents exactly one YouTube video, so the privacy settings are identical to those supported for videos. In addition, you can set this field by modifying the broadcast resource or by setting the privacyStatus field of the corresponding video resource.
+ "lifeCycleStatus": "A String", # The broadcast's status. The status can be updated using the API's liveBroadcasts.transition method.
},
- "kind": "youtube#liveBroadcast", # The type of this API resource.
- "contentDetails": { # Slate settings of a broadcast. # The content details of the live broadcast.
- "enableArchive": True or False, # Whether the live event will be archived or not.
- "boundStreamId": "A String", # The id of the stream bound to the broadcast.
- "startWithSlateCuepoint": True or False, # Automatically start with a slate cuepoint.
- "enableEmbed": True or False, # Whether to allow the broadcast to be played in an embedded player.
- "enableContentEncryption": True or False, # Whether to enable or disable content encryption.
- "enableDvr": True or False, # Whether the dvr (digital video recording) is enabled or not.
- "monitorStream": { # Information about the monitor stream which helps the broadcaster to review the event content before shown to the public.
- "broadcastStreamDelayMs": 42, # If enableMonitorStream is true, the public broadcast will be delayed by this value.
- "embedHtml": "A String", # The html code of the embedded player for the monitor stream.
- "enableMonitorStream": True or False, # Whether to enable the monitor stream for the broadcast.
+ "kind": "youtube#liveBroadcast", # The kind, fixed to "youtube#liveBroadcast".
+ "contentDetails": { # Detailed settings of a broadcast. # The contentDetails object contains information about the event's video content, such as whether the content can be shown in an embedded video player or if it will be archived and therefore available for viewing after the event has concluded.
+ "startWithSlate": True or False, # This setting indicates whether the broadcast should automatically begin with an in-stream slate when you update the broadcast's status to live. After updating the status, you then need to send a liveCuepoints.insert request that sets the cuepoint's eventState to end to remove the in-stream slate and make your broadcast stream visible to viewers.
+ "boundStreamId": "A String", # This value uniquely identifies the live stream bound to the broadcast.
+ "enableEmbed": True or False, # This setting indicates whether the broadcast video can be played in an embedded player. If you choose to archive the video (using the enableArchive property), this setting will also apply to the archived video.
+ "enableClosedCaptions": True or False, # This setting indicates whether closed captioning is enabled for this broadcast. The ingestion URL of the closed captions is returned through the liveStreams API.
+ "enableContentEncryption": True or False, # This setting indicates whether YouTube should enable content encryption for the broadcast.
+ "recordFromStart": True or False, # Automatically start recording after the event goes live. The default value for this property is true.
+ #
+ #
+ #
+ # Important: You must also set the enableDvr property's value to true if you want the playback to be available immediately after the broadcast ends. If you set this property's value to true but do not also set the enableDvr property to true, there may be a delay of around one day before the archived video will be available for playback.
+ "enableDvr": True or False, # This setting determines whether viewers can access DVR controls while watching the video. DVR controls enable the viewer to control the video playback experience by pausing, rewinding, or fast forwarding content. The default value for this property is true.
+ #
+ #
+ #
+ # Important: You must set the value to true and also set the enableArchive property's value to true if you want to make playback available immediately after the broadcast ends.
+ "monitorStream": { # Settings and Info of the monitor stream # The monitorStream object contains information about the monitor stream, which the broadcaster can use to review the event content before the broadcast stream is shown publicly.
+ "broadcastStreamDelayMs": 42, # If you have set the enableMonitorStream property to true, then this property determines the length of the live broadcast delay.
+ "embedHtml": "A String", # HTML code that embeds a player that plays the monitor stream.
+ "enableMonitorStream": True or False, # This value determines whether the monitor stream is enabled for the broadcast. If the monitor stream is enabled, then YouTube will broadcast the event content on a special stream intended only for the broadcaster's consumption. The broadcaster can use the stream to review the event content and also to identify the optimal times to insert cuepoints.
+ #
+ # You need to set this value to true if you intend to have a broadcast delay for your event.
+ #
+ # Note: This property cannot be updated once the broadcast is in the testing or live state.
},
},
- "slateSettings": { # Slate settings of a broadcast. # The slate settings of the live broadcast.
- "slates": { # Broadcast slates.
- "a_key": { # Locale code indicating in which region should the slate be displayed.
- "backgroundUrl": "A String", # Url of the background image.
- "textLines": [ # Multi-line message showing in the slate.
- "A String",
- ],
+ "snippet": { # The snippet object contains basic details about the event, including its title, description, start time, and end time.
+ "actualEndTime": "A String", # The date and time that the broadcast actually ended. This information is only available once the broadcast's state is complete. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "description": "A String", # The broadcast's description. As with the title, you can set this field by modifying the broadcast resource or by setting the description field of the corresponding video resource.
+ "title": "A String", # The broadcast's title. Note that the broadcast represents exactly one YouTube video. You can set this field by modifying the broadcast resource or by setting the title field of the corresponding video resource.
+ "channelId": "A String", # The ID that YouTube uses to uniquely identify the channel that is publishing the broadcast.
+ "publishedAt": "A String", # The date and time that the broadcast was added to YouTube's live broadcast schedule. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "scheduledStartTime": "A String", # The date and time that the broadcast is scheduled to start. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "actualStartTime": "A String", # The date and time that the broadcast actually started. This information is only available once the broadcast's state is live. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "scheduledEndTime": "A String", # The date and time that the broadcast is scheduled to end. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "thumbnails": { # Internal representation of thumbnails for a YouTube resource. # A map of thumbnail images associated with the broadcast. For each nested object in this object, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+ "default": { # A thumbnail is an image representing a YouTube resource. # The default image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
},
- },
- "enableSlates": True or False, # Whether slate is enabled or not.
- },
- "snippet": { # Basic details about a live broadcast, including title, description and thumbnails. # Basic details about the live broadcast.
- "actualEndTime": "A String", # Date and time the broadcast is actual to end. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
- "description": "A String", # Description of the broadcast.
- "title": "A String", # Title of the broadcast.
- "channelId": "A String", # Channel publishing the broadcast.
- "publishedAt": "A String", # Date and time the broadcast was published at. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
- "scheduledStartTime": "A String", # Date and time the broadcast is scheduled to start. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
- "actualStartTime": "A String", # Date and time the broadcast is actual to start. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
- "scheduledEndTime": "A String", # Date and time the broadcast is scheduled to end. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
- "thumbnails": { # Video thumbnails.
- "a_key": { # A thumbnail is an image representing a YouTube resource. # A map of thumbnails by their name.
+ "high": { # A thumbnail is an image representing a YouTube resource. # The high quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "medium": { # A thumbnail is an image representing a YouTube resource. # The medium quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "maxres": { # A thumbnail is an image representing a YouTube resource. # The maximum resolution quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "standard": { # A thumbnail is an image representing a YouTube resource. # The standard quality image for this resource.
"url": "A String", # The thumbnail image's URL.
"width": 42, # (Optional) Width of the thumbnail image.
"height": 42, # (Optional) Height of the thumbnail image.
},
},
},
- "etag": "A String", # The eTag of the broadcast.
- "id": "A String", # The unique id of the broadcast.
- }
+ "etag": "A String", # Etag of this resource.
+ "id": "A String", # The ID that YouTube assigns to uniquely identify the broadcast.
+ }</pre>
+</div>
+<div class="method">
+ <code class="details" id="control">control(id, part, onBehalfOfContentOwner=None, displaySlate=None, offsetTimeMs=None)</code>
+ <pre>Control the slate of the broadacast.
+
+Args:
+ id: string, The id parameter specifies the YouTube live broadcast ID for the resource that is being deleted. (required)
+ part: string, The part parameter specifies a comma-separated list of one or more liveBroadcast resource properties that the API response will include. The part names that you can include in the parameter value are id, snippet, contentDetails, and status. (required)
+ onBehalfOfContentOwner: string, USE_DESCRIPTION --- channels:list:onBehalfOfContentOwner
+ displaySlate: boolean, The displaySlate parameter specifies whether to enable or disable the slate.
+ offsetTimeMs: string, The offsetTimeMs parameter specifies a point in time in the video when the specified action (e.g. display a slate) is executed. The property value identifies a positive time offset, in milliseconds, from the beginning of the monitor stream. Though measured in milliseconds, the value is actually an approximation, and YouTube will act as closely as possible to that time. If not specified, it indicates that the action should be performed as soon as possible. If your broadcast stream is not delayed, then it should not be specified. However, if your broadcast stream is delayed, then the parameter can specify the time when the operation should be executed. See the Getting started guide for more details. Note: The offset is measured from the time that the testing phase began.
Returns:
An object of the form:
- { # A live broadcast describes live event configuration.
- "status": { # The status of a live broadcast. # The status of the live broadcast.
- "privacyStatus": "A String", # Privacy settings of the live broadcast. Allowed values: private, unlisted, public.
- "lifeCycleStatus": "A String", # Life status of the live broadcast.
+ { # A liveBroadcast resource represents an event that will be streamed, via live video, on YouTube.
+ "status": { # The status object contains information about the event's status.
+ "recordingStatus": "A String", # The broadcast's recording status.
+ "privacyStatus": "A String", # The broadcast's privacy status. Note that the broadcast represents exactly one YouTube video, so the privacy settings are identical to those supported for videos. In addition, you can set this field by modifying the broadcast resource or by setting the privacyStatus field of the corresponding video resource.
+ "lifeCycleStatus": "A String", # The broadcast's status. The status can be updated using the API's liveBroadcasts.transition method.
+ },
+ "kind": "youtube#liveBroadcast", # The kind, fixed to "youtube#liveBroadcast".
+ "contentDetails": { # Detailed settings of a broadcast. # The contentDetails object contains information about the event's video content, such as whether the content can be shown in an embedded video player or if it will be archived and therefore available for viewing after the event has concluded.
+ "startWithSlate": True or False, # This setting indicates whether the broadcast should automatically begin with an in-stream slate when you update the broadcast's status to live. After updating the status, you then need to send a liveCuepoints.insert request that sets the cuepoint's eventState to end to remove the in-stream slate and make your broadcast stream visible to viewers.
+ "boundStreamId": "A String", # This value uniquely identifies the live stream bound to the broadcast.
+ "enableEmbed": True or False, # This setting indicates whether the broadcast video can be played in an embedded player. If you choose to archive the video (using the enableArchive property), this setting will also apply to the archived video.
+ "enableClosedCaptions": True or False, # This setting indicates whether closed captioning is enabled for this broadcast. The ingestion URL of the closed captions is returned through the liveStreams API.
+ "enableContentEncryption": True or False, # This setting indicates whether YouTube should enable content encryption for the broadcast.
+ "recordFromStart": True or False, # Automatically start recording after the event goes live. The default value for this property is true.
+ #
+ #
+ #
+ # Important: You must also set the enableDvr property's value to true if you want the playback to be available immediately after the broadcast ends. If you set this property's value to true but do not also set the enableDvr property to true, there may be a delay of around one day before the archived video will be available for playback.
+ "enableDvr": True or False, # This setting determines whether viewers can access DVR controls while watching the video. DVR controls enable the viewer to control the video playback experience by pausing, rewinding, or fast forwarding content. The default value for this property is true.
+ #
+ #
+ #
+ # Important: You must set the value to true and also set the enableArchive property's value to true if you want to make playback available immediately after the broadcast ends.
+ "monitorStream": { # Settings and Info of the monitor stream # The monitorStream object contains information about the monitor stream, which the broadcaster can use to review the event content before the broadcast stream is shown publicly.
+ "broadcastStreamDelayMs": 42, # If you have set the enableMonitorStream property to true, then this property determines the length of the live broadcast delay.
+ "embedHtml": "A String", # HTML code that embeds a player that plays the monitor stream.
+ "enableMonitorStream": True or False, # This value determines whether the monitor stream is enabled for the broadcast. If the monitor stream is enabled, then YouTube will broadcast the event content on a special stream intended only for the broadcaster's consumption. The broadcaster can use the stream to review the event content and also to identify the optimal times to insert cuepoints.
+ #
+ # You need to set this value to true if you intend to have a broadcast delay for your event.
+ #
+ # Note: This property cannot be updated once the broadcast is in the testing or live state.
},
- "kind": "youtube#liveBroadcast", # The type of this API resource.
- "contentDetails": { # Slate settings of a broadcast. # The content details of the live broadcast.
- "enableArchive": True or False, # Whether the live event will be archived or not.
- "boundStreamId": "A String", # The id of the stream bound to the broadcast.
- "startWithSlateCuepoint": True or False, # Automatically start with a slate cuepoint.
- "enableEmbed": True or False, # Whether to allow the broadcast to be played in an embedded player.
- "enableContentEncryption": True or False, # Whether to enable or disable content encryption.
- "enableDvr": True or False, # Whether the dvr (digital video recording) is enabled or not.
- "monitorStream": { # Information about the monitor stream which helps the broadcaster to review the event content before shown to the public.
- "broadcastStreamDelayMs": 42, # If enableMonitorStream is true, the public broadcast will be delayed by this value.
- "embedHtml": "A String", # The html code of the embedded player for the monitor stream.
- "enableMonitorStream": True or False, # Whether to enable the monitor stream for the broadcast.
+ },
+ "snippet": { # The snippet object contains basic details about the event, including its title, description, start time, and end time.
+ "actualEndTime": "A String", # The date and time that the broadcast actually ended. This information is only available once the broadcast's state is complete. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "description": "A String", # The broadcast's description. As with the title, you can set this field by modifying the broadcast resource or by setting the description field of the corresponding video resource.
+ "title": "A String", # The broadcast's title. Note that the broadcast represents exactly one YouTube video. You can set this field by modifying the broadcast resource or by setting the title field of the corresponding video resource.
+ "channelId": "A String", # The ID that YouTube uses to uniquely identify the channel that is publishing the broadcast.
+ "publishedAt": "A String", # The date and time that the broadcast was added to YouTube's live broadcast schedule. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "scheduledStartTime": "A String", # The date and time that the broadcast is scheduled to start. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "actualStartTime": "A String", # The date and time that the broadcast actually started. This information is only available once the broadcast's state is live. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "scheduledEndTime": "A String", # The date and time that the broadcast is scheduled to end. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "thumbnails": { # Internal representation of thumbnails for a YouTube resource. # A map of thumbnail images associated with the broadcast. For each nested object in this object, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+ "default": { # A thumbnail is an image representing a YouTube resource. # The default image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "high": { # A thumbnail is an image representing a YouTube resource. # The high quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "medium": { # A thumbnail is an image representing a YouTube resource. # The medium quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "maxres": { # A thumbnail is an image representing a YouTube resource. # The maximum resolution quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "standard": { # A thumbnail is an image representing a YouTube resource. # The standard quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
},
},
- "slateSettings": { # Slate settings of a broadcast. # The slate settings of the live broadcast.
- "slates": { # Broadcast slates.
- "a_key": { # Locale code indicating in which region should the slate be displayed.
- "backgroundUrl": "A String", # Url of the background image.
- "textLines": [ # Multi-line message showing in the slate.
- "A String",
- ],
- },
- },
- "enableSlates": True or False, # Whether slate is enabled or not.
- },
- "snippet": { # Basic details about a live broadcast, including title, description and thumbnails. # Basic details about the live broadcast.
- "actualEndTime": "A String", # Date and time the broadcast is actual to end. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
- "description": "A String", # Description of the broadcast.
- "title": "A String", # Title of the broadcast.
- "channelId": "A String", # Channel publishing the broadcast.
- "publishedAt": "A String", # Date and time the broadcast was published at. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
- "scheduledStartTime": "A String", # Date and time the broadcast is scheduled to start. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
- "actualStartTime": "A String", # Date and time the broadcast is actual to start. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
- "scheduledEndTime": "A String", # Date and time the broadcast is scheduled to end. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
- "thumbnails": { # Video thumbnails.
- "a_key": { # A thumbnail is an image representing a YouTube resource. # A map of thumbnails by their name.
- "url": "A String", # The thumbnail image's URL.
- "width": 42, # (Optional) Width of the thumbnail image.
- "height": 42, # (Optional) Height of the thumbnail image.
- },
- },
- },
- "etag": "A String", # The eTag of the broadcast.
- "id": "A String", # The unique id of the broadcast.
- }</pre>
+ },
+ "etag": "A String", # Etag of this resource.
+ "id": "A String", # The ID that YouTube assigns to uniquely identify the broadcast.
+ }</pre>
</div>
<div class="method">
- <code class="details" id="list">list(part, broadcastStatus=None, onBehalfOf=None, pageToken=None, maxResults=None, mine=None, id=None)</code>
- <pre>Browse the YouTube broadcast collection.
+ <code class="details" id="delete">delete(id, onBehalfOfContentOwner=None)</code>
+ <pre>Deletes a broadcast.
Args:
- part: string, Live broadcast parts to include in the returned response. Valid values are: id, snippet, status, slateSettings, contentDetails. (required)
- broadcastStatus: string, Filter to only return broadcasts with the given status by the authenticated user.
+ id: string, The id parameter specifies the YouTube live broadcast ID for the resource that is being deleted. (required)
+ onBehalfOfContentOwner: string, USE_DESCRIPTION --- channels:list:onBehalfOfContentOwner
+</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="insert">insert(part=None, body, onBehalfOfContentOwner=None)</code>
+ <pre>Creates a broadcast.
+
+Args:
+ part: string, The part parameter serves two purposes in this operation. It identifies the properties that the write operation will set as well as the properties that the API response will include.
+
+The part properties that you can include in the parameter value are id, snippet, contentDetails, and status. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # A liveBroadcast resource represents an event that will be streamed, via live video, on YouTube.
+ "status": { # The status object contains information about the event's status.
+ "recordingStatus": "A String", # The broadcast's recording status.
+ "privacyStatus": "A String", # The broadcast's privacy status. Note that the broadcast represents exactly one YouTube video, so the privacy settings are identical to those supported for videos. In addition, you can set this field by modifying the broadcast resource or by setting the privacyStatus field of the corresponding video resource.
+ "lifeCycleStatus": "A String", # The broadcast's status. The status can be updated using the API's liveBroadcasts.transition method.
+ },
+ "kind": "youtube#liveBroadcast", # The kind, fixed to "youtube#liveBroadcast".
+ "contentDetails": { # Detailed settings of a broadcast. # The contentDetails object contains information about the event's video content, such as whether the content can be shown in an embedded video player or if it will be archived and therefore available for viewing after the event has concluded.
+ "startWithSlate": True or False, # This setting indicates whether the broadcast should automatically begin with an in-stream slate when you update the broadcast's status to live. After updating the status, you then need to send a liveCuepoints.insert request that sets the cuepoint's eventState to end to remove the in-stream slate and make your broadcast stream visible to viewers.
+ "boundStreamId": "A String", # This value uniquely identifies the live stream bound to the broadcast.
+ "enableEmbed": True or False, # This setting indicates whether the broadcast video can be played in an embedded player. If you choose to archive the video (using the enableArchive property), this setting will also apply to the archived video.
+ "enableClosedCaptions": True or False, # This setting indicates whether closed captioning is enabled for this broadcast. The ingestion URL of the closed captions is returned through the liveStreams API.
+ "enableContentEncryption": True or False, # This setting indicates whether YouTube should enable content encryption for the broadcast.
+ "recordFromStart": True or False, # Automatically start recording after the event goes live. The default value for this property is true.
+ #
+ #
+ #
+ # Important: You must also set the enableDvr property's value to true if you want the playback to be available immediately after the broadcast ends. If you set this property's value to true but do not also set the enableDvr property to true, there may be a delay of around one day before the archived video will be available for playback.
+ "enableDvr": True or False, # This setting determines whether viewers can access DVR controls while watching the video. DVR controls enable the viewer to control the video playback experience by pausing, rewinding, or fast forwarding content. The default value for this property is true.
+ #
+ #
+ #
+ # Important: You must set the value to true and also set the enableArchive property's value to true if you want to make playback available immediately after the broadcast ends.
+ "monitorStream": { # Settings and Info of the monitor stream # The monitorStream object contains information about the monitor stream, which the broadcaster can use to review the event content before the broadcast stream is shown publicly.
+ "broadcastStreamDelayMs": 42, # If you have set the enableMonitorStream property to true, then this property determines the length of the live broadcast delay.
+ "embedHtml": "A String", # HTML code that embeds a player that plays the monitor stream.
+ "enableMonitorStream": True or False, # This value determines whether the monitor stream is enabled for the broadcast. If the monitor stream is enabled, then YouTube will broadcast the event content on a special stream intended only for the broadcaster's consumption. The broadcaster can use the stream to review the event content and also to identify the optimal times to insert cuepoints.
+ #
+ # You need to set this value to true if you intend to have a broadcast delay for your event.
+ #
+ # Note: This property cannot be updated once the broadcast is in the testing or live state.
+ },
+ },
+ "snippet": { # The snippet object contains basic details about the event, including its title, description, start time, and end time.
+ "actualEndTime": "A String", # The date and time that the broadcast actually ended. This information is only available once the broadcast's state is complete. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "description": "A String", # The broadcast's description. As with the title, you can set this field by modifying the broadcast resource or by setting the description field of the corresponding video resource.
+ "title": "A String", # The broadcast's title. Note that the broadcast represents exactly one YouTube video. You can set this field by modifying the broadcast resource or by setting the title field of the corresponding video resource.
+ "channelId": "A String", # The ID that YouTube uses to uniquely identify the channel that is publishing the broadcast.
+ "publishedAt": "A String", # The date and time that the broadcast was added to YouTube's live broadcast schedule. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "scheduledStartTime": "A String", # The date and time that the broadcast is scheduled to start. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "actualStartTime": "A String", # The date and time that the broadcast actually started. This information is only available once the broadcast's state is live. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "scheduledEndTime": "A String", # The date and time that the broadcast is scheduled to end. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "thumbnails": { # Internal representation of thumbnails for a YouTube resource. # A map of thumbnail images associated with the broadcast. For each nested object in this object, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+ "default": { # A thumbnail is an image representing a YouTube resource. # The default image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "high": { # A thumbnail is an image representing a YouTube resource. # The high quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "medium": { # A thumbnail is an image representing a YouTube resource. # The medium quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "maxres": { # A thumbnail is an image representing a YouTube resource. # The maximum resolution quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "standard": { # A thumbnail is an image representing a YouTube resource. # The standard quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ },
+ },
+ "etag": "A String", # Etag of this resource.
+ "id": "A String", # The ID that YouTube assigns to uniquely identify the broadcast.
+}
+
+ onBehalfOfContentOwner: string, USE_DESCRIPTION --- channels:list:onBehalfOfContentOwner
+
+Returns:
+ An object of the form:
+
+ { # A liveBroadcast resource represents an event that will be streamed, via live video, on YouTube.
+ "status": { # The status object contains information about the event's status.
+ "recordingStatus": "A String", # The broadcast's recording status.
+ "privacyStatus": "A String", # The broadcast's privacy status. Note that the broadcast represents exactly one YouTube video, so the privacy settings are identical to those supported for videos. In addition, you can set this field by modifying the broadcast resource or by setting the privacyStatus field of the corresponding video resource.
+ "lifeCycleStatus": "A String", # The broadcast's status. The status can be updated using the API's liveBroadcasts.transition method.
+ },
+ "kind": "youtube#liveBroadcast", # The kind, fixed to "youtube#liveBroadcast".
+ "contentDetails": { # Detailed settings of a broadcast. # The contentDetails object contains information about the event's video content, such as whether the content can be shown in an embedded video player or if it will be archived and therefore available for viewing after the event has concluded.
+ "startWithSlate": True or False, # This setting indicates whether the broadcast should automatically begin with an in-stream slate when you update the broadcast's status to live. After updating the status, you then need to send a liveCuepoints.insert request that sets the cuepoint's eventState to end to remove the in-stream slate and make your broadcast stream visible to viewers.
+ "boundStreamId": "A String", # This value uniquely identifies the live stream bound to the broadcast.
+ "enableEmbed": True or False, # This setting indicates whether the broadcast video can be played in an embedded player. If you choose to archive the video (using the enableArchive property), this setting will also apply to the archived video.
+ "enableClosedCaptions": True or False, # This setting indicates whether closed captioning is enabled for this broadcast. The ingestion URL of the closed captions is returned through the liveStreams API.
+ "enableContentEncryption": True or False, # This setting indicates whether YouTube should enable content encryption for the broadcast.
+ "recordFromStart": True or False, # Automatically start recording after the event goes live. The default value for this property is true.
+ #
+ #
+ #
+ # Important: You must also set the enableDvr property's value to true if you want the playback to be available immediately after the broadcast ends. If you set this property's value to true but do not also set the enableDvr property to true, there may be a delay of around one day before the archived video will be available for playback.
+ "enableDvr": True or False, # This setting determines whether viewers can access DVR controls while watching the video. DVR controls enable the viewer to control the video playback experience by pausing, rewinding, or fast forwarding content. The default value for this property is true.
+ #
+ #
+ #
+ # Important: You must set the value to true and also set the enableArchive property's value to true if you want to make playback available immediately after the broadcast ends.
+ "monitorStream": { # Settings and Info of the monitor stream # The monitorStream object contains information about the monitor stream, which the broadcaster can use to review the event content before the broadcast stream is shown publicly.
+ "broadcastStreamDelayMs": 42, # If you have set the enableMonitorStream property to true, then this property determines the length of the live broadcast delay.
+ "embedHtml": "A String", # HTML code that embeds a player that plays the monitor stream.
+ "enableMonitorStream": True or False, # This value determines whether the monitor stream is enabled for the broadcast. If the monitor stream is enabled, then YouTube will broadcast the event content on a special stream intended only for the broadcaster's consumption. The broadcaster can use the stream to review the event content and also to identify the optimal times to insert cuepoints.
+ #
+ # You need to set this value to true if you intend to have a broadcast delay for your event.
+ #
+ # Note: This property cannot be updated once the broadcast is in the testing or live state.
+ },
+ },
+ "snippet": { # The snippet object contains basic details about the event, including its title, description, start time, and end time.
+ "actualEndTime": "A String", # The date and time that the broadcast actually ended. This information is only available once the broadcast's state is complete. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "description": "A String", # The broadcast's description. As with the title, you can set this field by modifying the broadcast resource or by setting the description field of the corresponding video resource.
+ "title": "A String", # The broadcast's title. Note that the broadcast represents exactly one YouTube video. You can set this field by modifying the broadcast resource or by setting the title field of the corresponding video resource.
+ "channelId": "A String", # The ID that YouTube uses to uniquely identify the channel that is publishing the broadcast.
+ "publishedAt": "A String", # The date and time that the broadcast was added to YouTube's live broadcast schedule. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "scheduledStartTime": "A String", # The date and time that the broadcast is scheduled to start. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "actualStartTime": "A String", # The date and time that the broadcast actually started. This information is only available once the broadcast's state is live. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "scheduledEndTime": "A String", # The date and time that the broadcast is scheduled to end. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "thumbnails": { # Internal representation of thumbnails for a YouTube resource. # A map of thumbnail images associated with the broadcast. For each nested object in this object, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+ "default": { # A thumbnail is an image representing a YouTube resource. # The default image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "high": { # A thumbnail is an image representing a YouTube resource. # The high quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "medium": { # A thumbnail is an image representing a YouTube resource. # The medium quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "maxres": { # A thumbnail is an image representing a YouTube resource. # The maximum resolution quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "standard": { # A thumbnail is an image representing a YouTube resource. # The standard quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ },
+ },
+ "etag": "A String", # Etag of this resource.
+ "id": "A String", # The ID that YouTube assigns to uniquely identify the broadcast.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="list">list(part, broadcastStatus=None, pageToken=None, mine=None, maxResults=None, id=None)</code>
+ <pre>Returns a list of YouTube broadcasts that match the API request parameters.
+
+Args:
+ part: string, The part parameter specifies a comma-separated list of one or more liveBroadcast resource properties that the API response will include. The part names that you can include in the parameter value are id, snippet, contentDetails, and status. (required)
+ broadcastStatus: string, The broadcastStatus parameter filters the API response to only include broadcasts with the specified status.
Allowed values
- active - Return active broadcasts.
- all - Return all the broadcasts.
- completed - Return previously completed broadcasts.
- upcoming - Return upcoming broadcasts.
- onBehalfOf: string, ID of the Google+ Page for the channel that the request is be on behalf of
- pageToken: string, Token for the page selection.
- maxResults: integer, Maximum number of results to return
- mine: boolean, Filter to only return broadcasts owned by authenticated user.
- id: string, IDs of the live broadcasts to be returned.
+ active - Return current live broadcasts.
+ all - Return all broadcasts.
+ completed - Return broadcasts that have already ended.
+ upcoming - Return broadcasts that have not yet started.
+ pageToken: string, The pageToken parameter identifies a specific page in the result set that should be returned. In an API response, the nextPageToken and prevPageToken properties identify other pages that could be retrieved.
+ mine: boolean, The mine parameter can be used to instruct the API to only return broadcasts owned by the authenticated user. Set the parameter value to true to only retrieve your own broadcasts.
+ maxResults: integer, The maxResults parameter specifies the maximum number of items that should be returned in the result set. Acceptable values are 0 to 50, inclusive. The default value is 5.
+ id: string, The id parameter specifies a comma-separated list of YouTube broadcast IDs that identify the broadcasts being retrieved. In a liveBroadcast resource, the id property specifies the broadcast's ID.
Returns:
An object of the form:
{ # JSON template for list of broadcasts.
- "nextPageToken": "A String", # The token that can be used as the value of the {@code pageInfo} parameter to retrieve the next page in the result set.
- "kind": "youtube#liveBroadcastList", # The type of this API resource.
+ "eventId": "A String", # Serialized EventId of the request which produced this response.
+ "nextPageToken": "A String", # The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set.
+ "kind": "youtube#liveBroadcastList", # The type of the API response. For this operation, the value will be youtube#liveBroadcastList.
+ "visitorId": "A String", # The visitorId identifies the visitor.
"items": [ # A list of broadcasts that match the request criteria.
- { # A live broadcast describes live event configuration.
- "status": { # The status of a live broadcast. # The status of the live broadcast.
- "privacyStatus": "A String", # Privacy settings of the live broadcast. Allowed values: private, unlisted, public.
- "lifeCycleStatus": "A String", # Life status of the live broadcast.
- },
- "kind": "youtube#liveBroadcast", # The type of this API resource.
- "contentDetails": { # Slate settings of a broadcast. # The content details of the live broadcast.
- "enableArchive": True or False, # Whether the live event will be archived or not.
- "boundStreamId": "A String", # The id of the stream bound to the broadcast.
- "startWithSlateCuepoint": True or False, # Automatically start with a slate cuepoint.
- "enableEmbed": True or False, # Whether to allow the broadcast to be played in an embedded player.
- "enableContentEncryption": True or False, # Whether to enable or disable content encryption.
- "enableDvr": True or False, # Whether the dvr (digital video recording) is enabled or not.
- "monitorStream": { # Information about the monitor stream which helps the broadcaster to review the event content before shown to the public.
- "broadcastStreamDelayMs": 42, # If enableMonitorStream is true, the public broadcast will be delayed by this value.
- "embedHtml": "A String", # The html code of the embedded player for the monitor stream.
- "enableMonitorStream": True or False, # Whether to enable the monitor stream for the broadcast.
- },
- },
- "slateSettings": { # Slate settings of a broadcast. # The slate settings of the live broadcast.
- "slates": { # Broadcast slates.
- "a_key": { # Locale code indicating in which region should the slate be displayed.
- "backgroundUrl": "A String", # Url of the background image.
- "textLines": [ # Multi-line message showing in the slate.
- "A String",
- ],
- },
- },
- "enableSlates": True or False, # Whether slate is enabled or not.
- },
- "snippet": { # Basic details about a live broadcast, including title, description and thumbnails. # Basic details about the live broadcast.
- "actualEndTime": "A String", # Date and time the broadcast is actual to end. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
- "description": "A String", # Description of the broadcast.
- "title": "A String", # Title of the broadcast.
- "channelId": "A String", # Channel publishing the broadcast.
- "publishedAt": "A String", # Date and time the broadcast was published at. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
- "scheduledStartTime": "A String", # Date and time the broadcast is scheduled to start. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
- "actualStartTime": "A String", # Date and time the broadcast is actual to start. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
- "scheduledEndTime": "A String", # Date and time the broadcast is scheduled to end. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
- "thumbnails": { # Video thumbnails.
- "a_key": { # A thumbnail is an image representing a YouTube resource. # A map of thumbnails by their name.
- "url": "A String", # The thumbnail image's URL.
- "width": 42, # (Optional) Width of the thumbnail image.
- "height": 42, # (Optional) Height of the thumbnail image.
- },
- },
- },
- "etag": "A String", # The eTag of the broadcast.
- "id": "A String", # The unique id of the broadcast.
+ { # A liveBroadcast resource represents an event that will be streamed, via live video, on YouTube.
+ "status": { # The status object contains information about the event's status.
+ "recordingStatus": "A String", # The broadcast's recording status.
+ "privacyStatus": "A String", # The broadcast's privacy status. Note that the broadcast represents exactly one YouTube video, so the privacy settings are identical to those supported for videos. In addition, you can set this field by modifying the broadcast resource or by setting the privacyStatus field of the corresponding video resource.
+ "lifeCycleStatus": "A String", # The broadcast's status. The status can be updated using the API's liveBroadcasts.transition method.
},
+ "kind": "youtube#liveBroadcast", # The kind, fixed to "youtube#liveBroadcast".
+ "contentDetails": { # Detailed settings of a broadcast. # The contentDetails object contains information about the event's video content, such as whether the content can be shown in an embedded video player or if it will be archived and therefore available for viewing after the event has concluded.
+ "startWithSlate": True or False, # This setting indicates whether the broadcast should automatically begin with an in-stream slate when you update the broadcast's status to live. After updating the status, you then need to send a liveCuepoints.insert request that sets the cuepoint's eventState to end to remove the in-stream slate and make your broadcast stream visible to viewers.
+ "boundStreamId": "A String", # This value uniquely identifies the live stream bound to the broadcast.
+ "enableEmbed": True or False, # This setting indicates whether the broadcast video can be played in an embedded player. If you choose to archive the video (using the enableArchive property), this setting will also apply to the archived video.
+ "enableClosedCaptions": True or False, # This setting indicates whether closed captioning is enabled for this broadcast. The ingestion URL of the closed captions is returned through the liveStreams API.
+ "enableContentEncryption": True or False, # This setting indicates whether YouTube should enable content encryption for the broadcast.
+ "recordFromStart": True or False, # Automatically start recording after the event goes live. The default value for this property is true.
+ #
+ #
+ #
+ # Important: You must also set the enableDvr property's value to true if you want the playback to be available immediately after the broadcast ends. If you set this property's value to true but do not also set the enableDvr property to true, there may be a delay of around one day before the archived video will be available for playback.
+ "enableDvr": True or False, # This setting determines whether viewers can access DVR controls while watching the video. DVR controls enable the viewer to control the video playback experience by pausing, rewinding, or fast forwarding content. The default value for this property is true.
+ #
+ #
+ #
+ # Important: You must set the value to true and also set the enableArchive property's value to true if you want to make playback available immediately after the broadcast ends.
+ "monitorStream": { # Settings and Info of the monitor stream # The monitorStream object contains information about the monitor stream, which the broadcaster can use to review the event content before the broadcast stream is shown publicly.
+ "broadcastStreamDelayMs": 42, # If you have set the enableMonitorStream property to true, then this property determines the length of the live broadcast delay.
+ "embedHtml": "A String", # HTML code that embeds a player that plays the monitor stream.
+ "enableMonitorStream": True or False, # This value determines whether the monitor stream is enabled for the broadcast. If the monitor stream is enabled, then YouTube will broadcast the event content on a special stream intended only for the broadcaster's consumption. The broadcaster can use the stream to review the event content and also to identify the optimal times to insert cuepoints.
+ #
+ # You need to set this value to true if you intend to have a broadcast delay for your event.
+ #
+ # Note: This property cannot be updated once the broadcast is in the testing or live state.
+ },
+ },
+ "snippet": { # The snippet object contains basic details about the event, including its title, description, start time, and end time.
+ "actualEndTime": "A String", # The date and time that the broadcast actually ended. This information is only available once the broadcast's state is complete. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "description": "A String", # The broadcast's description. As with the title, you can set this field by modifying the broadcast resource or by setting the description field of the corresponding video resource.
+ "title": "A String", # The broadcast's title. Note that the broadcast represents exactly one YouTube video. You can set this field by modifying the broadcast resource or by setting the title field of the corresponding video resource.
+ "channelId": "A String", # The ID that YouTube uses to uniquely identify the channel that is publishing the broadcast.
+ "publishedAt": "A String", # The date and time that the broadcast was added to YouTube's live broadcast schedule. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "scheduledStartTime": "A String", # The date and time that the broadcast is scheduled to start. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "actualStartTime": "A String", # The date and time that the broadcast actually started. This information is only available once the broadcast's state is live. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "scheduledEndTime": "A String", # The date and time that the broadcast is scheduled to end. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "thumbnails": { # Internal representation of thumbnails for a YouTube resource. # A map of thumbnail images associated with the broadcast. For each nested object in this object, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+ "default": { # A thumbnail is an image representing a YouTube resource. # The default image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "high": { # A thumbnail is an image representing a YouTube resource. # The high quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "medium": { # A thumbnail is an image representing a YouTube resource. # The medium quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "maxres": { # A thumbnail is an image representing a YouTube resource. # The maximum resolution quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "standard": { # A thumbnail is an image representing a YouTube resource. # The standard quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ },
+ },
+ "etag": "A String", # Etag of this resource.
+ "id": "A String", # The ID that YouTube assigns to uniquely identify the broadcast.
+ },
],
- "etag": "A String", # The eTag of the chart.
- "prevPageToken": "A String", # The token that can be used as the value of the {@code pageInfo} parameter to retrieve the previous page in the result set.
- "pageInfo": { # Paging details for lists of resources, including total number of items available and number of resources returned in a single page. # The {@code pageInfo} object encapsulates paging information for the result set.
+ "etag": "A String", # The ETag of the response.
+ "prevPageToken": "A String", # The token that can be used as the value of the pageToken parameter to retrieve the previous page in the result set.
+ "pageInfo": { # Paging details for lists of resources, including total number of items available and number of resources returned in a single page. # The pageInfo object encapsulates paging information for the result set.
"totalResults": 42, # The total number of results in the result set.
"resultsPerPage": 42, # The number of results included in the API response.
},
@@ -385,189 +575,262 @@
</div>
<div class="method">
- <code class="details" id="transition">transition(broadcastStatus, id, part)</code>
- <pre>Change the broadcasting status of a YouTube live broadcast and start all the processes associated with it.
+ <code class="details" id="transition">transition(broadcastStatus, id, part, onBehalfOfContentOwner=None)</code>
+ <pre>Changes the status of a YouTube live broadcast and initiates any processes associated with the new status. For example, when you transition a broadcast's status to testing, YouTube starts to transmit video to that broadcast's monitor stream.
Args:
- broadcastStatus: string, Desired broadcast status. (required)
+ broadcastStatus: string, The broadcastStatus parameter identifies the state to which the broadcast is changing. (required)
Allowed values
- complete - Stop broadcasting.
- live - Start broadcasting.
- testing - Start broadcast testing.
- id: string, ID of the broadcast to change status (required)
- part: string, Live broadcast parts to be returned in the response. Valid values are: id, snippet, status, slateSettings, contentDetails. (required)
+ complete - The broadcast is over. YouTube stops transmitting video.
+ live - The broadcast is visible to its audience. YouTube transmits video to the broadcast's monitor stream and its broadcast stream.
+ testing - Start testing the broadcast. YouTube transmits video to the broadcast's monitor stream. Note that you can only transition a broadcast to the testing state if its contentDetails.monitorStream.enableMonitorStream property is set to true.
+ id: string, The id parameter specifies the unique ID of the broadcast that is transitioning to another status. (required)
+ part: string, The part parameter specifies a comma-separated list of one or more liveBroadcast resource properties that the API response will include. The part names that you can include in the parameter value are id, snippet, contentDetails, and status. (required)
+ onBehalfOfContentOwner: string, USE_DESCRIPTION --- channels:list:onBehalfOfContentOwner
Returns:
An object of the form:
- { # A live broadcast describes live event configuration.
- "status": { # The status of a live broadcast. # The status of the live broadcast.
- "privacyStatus": "A String", # Privacy settings of the live broadcast. Allowed values: private, unlisted, public.
- "lifeCycleStatus": "A String", # Life status of the live broadcast.
- },
- "kind": "youtube#liveBroadcast", # The type of this API resource.
- "contentDetails": { # Slate settings of a broadcast. # The content details of the live broadcast.
- "enableArchive": True or False, # Whether the live event will be archived or not.
- "boundStreamId": "A String", # The id of the stream bound to the broadcast.
- "startWithSlateCuepoint": True or False, # Automatically start with a slate cuepoint.
- "enableEmbed": True or False, # Whether to allow the broadcast to be played in an embedded player.
- "enableContentEncryption": True or False, # Whether to enable or disable content encryption.
- "enableDvr": True or False, # Whether the dvr (digital video recording) is enabled or not.
- "monitorStream": { # Information about the monitor stream which helps the broadcaster to review the event content before shown to the public.
- "broadcastStreamDelayMs": 42, # If enableMonitorStream is true, the public broadcast will be delayed by this value.
- "embedHtml": "A String", # The html code of the embedded player for the monitor stream.
- "enableMonitorStream": True or False, # Whether to enable the monitor stream for the broadcast.
- },
- },
- "slateSettings": { # Slate settings of a broadcast. # The slate settings of the live broadcast.
- "slates": { # Broadcast slates.
- "a_key": { # Locale code indicating in which region should the slate be displayed.
- "backgroundUrl": "A String", # Url of the background image.
- "textLines": [ # Multi-line message showing in the slate.
- "A String",
- ],
- },
- },
- "enableSlates": True or False, # Whether slate is enabled or not.
- },
- "snippet": { # Basic details about a live broadcast, including title, description and thumbnails. # Basic details about the live broadcast.
- "actualEndTime": "A String", # Date and time the broadcast is actual to end. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
- "description": "A String", # Description of the broadcast.
- "title": "A String", # Title of the broadcast.
- "channelId": "A String", # Channel publishing the broadcast.
- "publishedAt": "A String", # Date and time the broadcast was published at. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
- "scheduledStartTime": "A String", # Date and time the broadcast is scheduled to start. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
- "actualStartTime": "A String", # Date and time the broadcast is actual to start. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
- "scheduledEndTime": "A String", # Date and time the broadcast is scheduled to end. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
- "thumbnails": { # Video thumbnails.
- "a_key": { # A thumbnail is an image representing a YouTube resource. # A map of thumbnails by their name.
- "url": "A String", # The thumbnail image's URL.
- "width": 42, # (Optional) Width of the thumbnail image.
- "height": 42, # (Optional) Height of the thumbnail image.
- },
- },
- },
- "etag": "A String", # The eTag of the broadcast.
- "id": "A String", # The unique id of the broadcast.
- }</pre>
-</div>
-
-<div class="method">
- <code class="details" id="update">update(part=None, body)</code>
- <pre>Update a YouTube live broadcast.
-
-Args:
- part: string, The part parameter serves two purposes in this operation. It identifies the properties that the write operation will set as well as the properties that the API response will include.
-
-The part names that you can include in the parameter value are id, snippet, status, slateSettings, contentDetails. (required)
- body: object, The request body. (required)
- The object takes the form of:
-
-{ # A live broadcast describes live event configuration.
- "status": { # The status of a live broadcast. # The status of the live broadcast.
- "privacyStatus": "A String", # Privacy settings of the live broadcast. Allowed values: private, unlisted, public.
- "lifeCycleStatus": "A String", # Life status of the live broadcast.
+ { # A liveBroadcast resource represents an event that will be streamed, via live video, on YouTube.
+ "status": { # The status object contains information about the event's status.
+ "recordingStatus": "A String", # The broadcast's recording status.
+ "privacyStatus": "A String", # The broadcast's privacy status. Note that the broadcast represents exactly one YouTube video, so the privacy settings are identical to those supported for videos. In addition, you can set this field by modifying the broadcast resource or by setting the privacyStatus field of the corresponding video resource.
+ "lifeCycleStatus": "A String", # The broadcast's status. The status can be updated using the API's liveBroadcasts.transition method.
},
- "kind": "youtube#liveBroadcast", # The type of this API resource.
- "contentDetails": { # Slate settings of a broadcast. # The content details of the live broadcast.
- "enableArchive": True or False, # Whether the live event will be archived or not.
- "boundStreamId": "A String", # The id of the stream bound to the broadcast.
- "startWithSlateCuepoint": True or False, # Automatically start with a slate cuepoint.
- "enableEmbed": True or False, # Whether to allow the broadcast to be played in an embedded player.
- "enableContentEncryption": True or False, # Whether to enable or disable content encryption.
- "enableDvr": True or False, # Whether the dvr (digital video recording) is enabled or not.
- "monitorStream": { # Information about the monitor stream which helps the broadcaster to review the event content before shown to the public.
- "broadcastStreamDelayMs": 42, # If enableMonitorStream is true, the public broadcast will be delayed by this value.
- "embedHtml": "A String", # The html code of the embedded player for the monitor stream.
- "enableMonitorStream": True or False, # Whether to enable the monitor stream for the broadcast.
+ "kind": "youtube#liveBroadcast", # The kind, fixed to "youtube#liveBroadcast".
+ "contentDetails": { # Detailed settings of a broadcast. # The contentDetails object contains information about the event's video content, such as whether the content can be shown in an embedded video player or if it will be archived and therefore available for viewing after the event has concluded.
+ "startWithSlate": True or False, # This setting indicates whether the broadcast should automatically begin with an in-stream slate when you update the broadcast's status to live. After updating the status, you then need to send a liveCuepoints.insert request that sets the cuepoint's eventState to end to remove the in-stream slate and make your broadcast stream visible to viewers.
+ "boundStreamId": "A String", # This value uniquely identifies the live stream bound to the broadcast.
+ "enableEmbed": True or False, # This setting indicates whether the broadcast video can be played in an embedded player. If you choose to archive the video (using the enableArchive property), this setting will also apply to the archived video.
+ "enableClosedCaptions": True or False, # This setting indicates whether closed captioning is enabled for this broadcast. The ingestion URL of the closed captions is returned through the liveStreams API.
+ "enableContentEncryption": True or False, # This setting indicates whether YouTube should enable content encryption for the broadcast.
+ "recordFromStart": True or False, # Automatically start recording after the event goes live. The default value for this property is true.
+ #
+ #
+ #
+ # Important: You must also set the enableDvr property's value to true if you want the playback to be available immediately after the broadcast ends. If you set this property's value to true but do not also set the enableDvr property to true, there may be a delay of around one day before the archived video will be available for playback.
+ "enableDvr": True or False, # This setting determines whether viewers can access DVR controls while watching the video. DVR controls enable the viewer to control the video playback experience by pausing, rewinding, or fast forwarding content. The default value for this property is true.
+ #
+ #
+ #
+ # Important: You must set the value to true and also set the enableArchive property's value to true if you want to make playback available immediately after the broadcast ends.
+ "monitorStream": { # Settings and Info of the monitor stream # The monitorStream object contains information about the monitor stream, which the broadcaster can use to review the event content before the broadcast stream is shown publicly.
+ "broadcastStreamDelayMs": 42, # If you have set the enableMonitorStream property to true, then this property determines the length of the live broadcast delay.
+ "embedHtml": "A String", # HTML code that embeds a player that plays the monitor stream.
+ "enableMonitorStream": True or False, # This value determines whether the monitor stream is enabled for the broadcast. If the monitor stream is enabled, then YouTube will broadcast the event content on a special stream intended only for the broadcaster's consumption. The broadcaster can use the stream to review the event content and also to identify the optimal times to insert cuepoints.
+ #
+ # You need to set this value to true if you intend to have a broadcast delay for your event.
+ #
+ # Note: This property cannot be updated once the broadcast is in the testing or live state.
},
},
- "slateSettings": { # Slate settings of a broadcast. # The slate settings of the live broadcast.
- "slates": { # Broadcast slates.
- "a_key": { # Locale code indicating in which region should the slate be displayed.
- "backgroundUrl": "A String", # Url of the background image.
- "textLines": [ # Multi-line message showing in the slate.
- "A String",
- ],
+ "snippet": { # The snippet object contains basic details about the event, including its title, description, start time, and end time.
+ "actualEndTime": "A String", # The date and time that the broadcast actually ended. This information is only available once the broadcast's state is complete. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "description": "A String", # The broadcast's description. As with the title, you can set this field by modifying the broadcast resource or by setting the description field of the corresponding video resource.
+ "title": "A String", # The broadcast's title. Note that the broadcast represents exactly one YouTube video. You can set this field by modifying the broadcast resource or by setting the title field of the corresponding video resource.
+ "channelId": "A String", # The ID that YouTube uses to uniquely identify the channel that is publishing the broadcast.
+ "publishedAt": "A String", # The date and time that the broadcast was added to YouTube's live broadcast schedule. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "scheduledStartTime": "A String", # The date and time that the broadcast is scheduled to start. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "actualStartTime": "A String", # The date and time that the broadcast actually started. This information is only available once the broadcast's state is live. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "scheduledEndTime": "A String", # The date and time that the broadcast is scheduled to end. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "thumbnails": { # Internal representation of thumbnails for a YouTube resource. # A map of thumbnail images associated with the broadcast. For each nested object in this object, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+ "default": { # A thumbnail is an image representing a YouTube resource. # The default image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
},
- },
- "enableSlates": True or False, # Whether slate is enabled or not.
- },
- "snippet": { # Basic details about a live broadcast, including title, description and thumbnails. # Basic details about the live broadcast.
- "actualEndTime": "A String", # Date and time the broadcast is actual to end. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
- "description": "A String", # Description of the broadcast.
- "title": "A String", # Title of the broadcast.
- "channelId": "A String", # Channel publishing the broadcast.
- "publishedAt": "A String", # Date and time the broadcast was published at. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
- "scheduledStartTime": "A String", # Date and time the broadcast is scheduled to start. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
- "actualStartTime": "A String", # Date and time the broadcast is actual to start. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
- "scheduledEndTime": "A String", # Date and time the broadcast is scheduled to end. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
- "thumbnails": { # Video thumbnails.
- "a_key": { # A thumbnail is an image representing a YouTube resource. # A map of thumbnails by their name.
+ "high": { # A thumbnail is an image representing a YouTube resource. # The high quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "medium": { # A thumbnail is an image representing a YouTube resource. # The medium quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "maxres": { # A thumbnail is an image representing a YouTube resource. # The maximum resolution quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "standard": { # A thumbnail is an image representing a YouTube resource. # The standard quality image for this resource.
"url": "A String", # The thumbnail image's URL.
"width": 42, # (Optional) Width of the thumbnail image.
"height": 42, # (Optional) Height of the thumbnail image.
},
},
},
- "etag": "A String", # The eTag of the broadcast.
- "id": "A String", # The unique id of the broadcast.
- }
+ "etag": "A String", # Etag of this resource.
+ "id": "A String", # The ID that YouTube assigns to uniquely identify the broadcast.
+ }</pre>
+</div>
+<div class="method">
+ <code class="details" id="update">update(part=None, body, onBehalfOfContentOwner=None)</code>
+ <pre>Updates a broadcast. For example, you could modify the broadcast settings defined in the liveBroadcast resource's contentDetails object.
+
+Args:
+ part: string, The part parameter serves two purposes in this operation. It identifies the properties that the write operation will set as well as the properties that the API response will include.
+
+The part properties that you can include in the parameter value are id, snippet, contentDetails, and status.
+
+Note that this method will override the existing values for all of the mutable properties that are contained in any parts that the parameter value specifies. For example, a broadcast's privacy status is defined in the status part. As such, if your request is updating a private or unlisted broadcast, and the request's part parameter value includes the status part, the broadcast's privacy setting will be updated to whatever value the request body specifies. If the request body does not specify a value, the existing privacy setting will be removed and the broadcast will revert to the default privacy setting. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # A liveBroadcast resource represents an event that will be streamed, via live video, on YouTube.
+ "status": { # The status object contains information about the event's status.
+ "recordingStatus": "A String", # The broadcast's recording status.
+ "privacyStatus": "A String", # The broadcast's privacy status. Note that the broadcast represents exactly one YouTube video, so the privacy settings are identical to those supported for videos. In addition, you can set this field by modifying the broadcast resource or by setting the privacyStatus field of the corresponding video resource.
+ "lifeCycleStatus": "A String", # The broadcast's status. The status can be updated using the API's liveBroadcasts.transition method.
+ },
+ "kind": "youtube#liveBroadcast", # The kind, fixed to "youtube#liveBroadcast".
+ "contentDetails": { # Detailed settings of a broadcast. # The contentDetails object contains information about the event's video content, such as whether the content can be shown in an embedded video player or if it will be archived and therefore available for viewing after the event has concluded.
+ "startWithSlate": True or False, # This setting indicates whether the broadcast should automatically begin with an in-stream slate when you update the broadcast's status to live. After updating the status, you then need to send a liveCuepoints.insert request that sets the cuepoint's eventState to end to remove the in-stream slate and make your broadcast stream visible to viewers.
+ "boundStreamId": "A String", # This value uniquely identifies the live stream bound to the broadcast.
+ "enableEmbed": True or False, # This setting indicates whether the broadcast video can be played in an embedded player. If you choose to archive the video (using the enableArchive property), this setting will also apply to the archived video.
+ "enableClosedCaptions": True or False, # This setting indicates whether closed captioning is enabled for this broadcast. The ingestion URL of the closed captions is returned through the liveStreams API.
+ "enableContentEncryption": True or False, # This setting indicates whether YouTube should enable content encryption for the broadcast.
+ "recordFromStart": True or False, # Automatically start recording after the event goes live. The default value for this property is true.
+ #
+ #
+ #
+ # Important: You must also set the enableDvr property's value to true if you want the playback to be available immediately after the broadcast ends. If you set this property's value to true but do not also set the enableDvr property to true, there may be a delay of around one day before the archived video will be available for playback.
+ "enableDvr": True or False, # This setting determines whether viewers can access DVR controls while watching the video. DVR controls enable the viewer to control the video playback experience by pausing, rewinding, or fast forwarding content. The default value for this property is true.
+ #
+ #
+ #
+ # Important: You must set the value to true and also set the enableArchive property's value to true if you want to make playback available immediately after the broadcast ends.
+ "monitorStream": { # Settings and Info of the monitor stream # The monitorStream object contains information about the monitor stream, which the broadcaster can use to review the event content before the broadcast stream is shown publicly.
+ "broadcastStreamDelayMs": 42, # If you have set the enableMonitorStream property to true, then this property determines the length of the live broadcast delay.
+ "embedHtml": "A String", # HTML code that embeds a player that plays the monitor stream.
+ "enableMonitorStream": True or False, # This value determines whether the monitor stream is enabled for the broadcast. If the monitor stream is enabled, then YouTube will broadcast the event content on a special stream intended only for the broadcaster's consumption. The broadcaster can use the stream to review the event content and also to identify the optimal times to insert cuepoints.
+ #
+ # You need to set this value to true if you intend to have a broadcast delay for your event.
+ #
+ # Note: This property cannot be updated once the broadcast is in the testing or live state.
+ },
+ },
+ "snippet": { # The snippet object contains basic details about the event, including its title, description, start time, and end time.
+ "actualEndTime": "A String", # The date and time that the broadcast actually ended. This information is only available once the broadcast's state is complete. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "description": "A String", # The broadcast's description. As with the title, you can set this field by modifying the broadcast resource or by setting the description field of the corresponding video resource.
+ "title": "A String", # The broadcast's title. Note that the broadcast represents exactly one YouTube video. You can set this field by modifying the broadcast resource or by setting the title field of the corresponding video resource.
+ "channelId": "A String", # The ID that YouTube uses to uniquely identify the channel that is publishing the broadcast.
+ "publishedAt": "A String", # The date and time that the broadcast was added to YouTube's live broadcast schedule. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "scheduledStartTime": "A String", # The date and time that the broadcast is scheduled to start. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "actualStartTime": "A String", # The date and time that the broadcast actually started. This information is only available once the broadcast's state is live. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "scheduledEndTime": "A String", # The date and time that the broadcast is scheduled to end. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "thumbnails": { # Internal representation of thumbnails for a YouTube resource. # A map of thumbnail images associated with the broadcast. For each nested object in this object, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+ "default": { # A thumbnail is an image representing a YouTube resource. # The default image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "high": { # A thumbnail is an image representing a YouTube resource. # The high quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "medium": { # A thumbnail is an image representing a YouTube resource. # The medium quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "maxres": { # A thumbnail is an image representing a YouTube resource. # The maximum resolution quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "standard": { # A thumbnail is an image representing a YouTube resource. # The standard quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ },
+ },
+ "etag": "A String", # Etag of this resource.
+ "id": "A String", # The ID that YouTube assigns to uniquely identify the broadcast.
+}
+
+ onBehalfOfContentOwner: string, USE_DESCRIPTION --- channels:list:onBehalfOfContentOwner
Returns:
An object of the form:
- { # A live broadcast describes live event configuration.
- "status": { # The status of a live broadcast. # The status of the live broadcast.
- "privacyStatus": "A String", # Privacy settings of the live broadcast. Allowed values: private, unlisted, public.
- "lifeCycleStatus": "A String", # Life status of the live broadcast.
+ { # A liveBroadcast resource represents an event that will be streamed, via live video, on YouTube.
+ "status": { # The status object contains information about the event's status.
+ "recordingStatus": "A String", # The broadcast's recording status.
+ "privacyStatus": "A String", # The broadcast's privacy status. Note that the broadcast represents exactly one YouTube video, so the privacy settings are identical to those supported for videos. In addition, you can set this field by modifying the broadcast resource or by setting the privacyStatus field of the corresponding video resource.
+ "lifeCycleStatus": "A String", # The broadcast's status. The status can be updated using the API's liveBroadcasts.transition method.
+ },
+ "kind": "youtube#liveBroadcast", # The kind, fixed to "youtube#liveBroadcast".
+ "contentDetails": { # Detailed settings of a broadcast. # The contentDetails object contains information about the event's video content, such as whether the content can be shown in an embedded video player or if it will be archived and therefore available for viewing after the event has concluded.
+ "startWithSlate": True or False, # This setting indicates whether the broadcast should automatically begin with an in-stream slate when you update the broadcast's status to live. After updating the status, you then need to send a liveCuepoints.insert request that sets the cuepoint's eventState to end to remove the in-stream slate and make your broadcast stream visible to viewers.
+ "boundStreamId": "A String", # This value uniquely identifies the live stream bound to the broadcast.
+ "enableEmbed": True or False, # This setting indicates whether the broadcast video can be played in an embedded player. If you choose to archive the video (using the enableArchive property), this setting will also apply to the archived video.
+ "enableClosedCaptions": True or False, # This setting indicates whether closed captioning is enabled for this broadcast. The ingestion URL of the closed captions is returned through the liveStreams API.
+ "enableContentEncryption": True or False, # This setting indicates whether YouTube should enable content encryption for the broadcast.
+ "recordFromStart": True or False, # Automatically start recording after the event goes live. The default value for this property is true.
+ #
+ #
+ #
+ # Important: You must also set the enableDvr property's value to true if you want the playback to be available immediately after the broadcast ends. If you set this property's value to true but do not also set the enableDvr property to true, there may be a delay of around one day before the archived video will be available for playback.
+ "enableDvr": True or False, # This setting determines whether viewers can access DVR controls while watching the video. DVR controls enable the viewer to control the video playback experience by pausing, rewinding, or fast forwarding content. The default value for this property is true.
+ #
+ #
+ #
+ # Important: You must set the value to true and also set the enableArchive property's value to true if you want to make playback available immediately after the broadcast ends.
+ "monitorStream": { # Settings and Info of the monitor stream # The monitorStream object contains information about the monitor stream, which the broadcaster can use to review the event content before the broadcast stream is shown publicly.
+ "broadcastStreamDelayMs": 42, # If you have set the enableMonitorStream property to true, then this property determines the length of the live broadcast delay.
+ "embedHtml": "A String", # HTML code that embeds a player that plays the monitor stream.
+ "enableMonitorStream": True or False, # This value determines whether the monitor stream is enabled for the broadcast. If the monitor stream is enabled, then YouTube will broadcast the event content on a special stream intended only for the broadcaster's consumption. The broadcaster can use the stream to review the event content and also to identify the optimal times to insert cuepoints.
+ #
+ # You need to set this value to true if you intend to have a broadcast delay for your event.
+ #
+ # Note: This property cannot be updated once the broadcast is in the testing or live state.
},
- "kind": "youtube#liveBroadcast", # The type of this API resource.
- "contentDetails": { # Slate settings of a broadcast. # The content details of the live broadcast.
- "enableArchive": True or False, # Whether the live event will be archived or not.
- "boundStreamId": "A String", # The id of the stream bound to the broadcast.
- "startWithSlateCuepoint": True or False, # Automatically start with a slate cuepoint.
- "enableEmbed": True or False, # Whether to allow the broadcast to be played in an embedded player.
- "enableContentEncryption": True or False, # Whether to enable or disable content encryption.
- "enableDvr": True or False, # Whether the dvr (digital video recording) is enabled or not.
- "monitorStream": { # Information about the monitor stream which helps the broadcaster to review the event content before shown to the public.
- "broadcastStreamDelayMs": 42, # If enableMonitorStream is true, the public broadcast will be delayed by this value.
- "embedHtml": "A String", # The html code of the embedded player for the monitor stream.
- "enableMonitorStream": True or False, # Whether to enable the monitor stream for the broadcast.
+ },
+ "snippet": { # The snippet object contains basic details about the event, including its title, description, start time, and end time.
+ "actualEndTime": "A String", # The date and time that the broadcast actually ended. This information is only available once the broadcast's state is complete. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "description": "A String", # The broadcast's description. As with the title, you can set this field by modifying the broadcast resource or by setting the description field of the corresponding video resource.
+ "title": "A String", # The broadcast's title. Note that the broadcast represents exactly one YouTube video. You can set this field by modifying the broadcast resource or by setting the title field of the corresponding video resource.
+ "channelId": "A String", # The ID that YouTube uses to uniquely identify the channel that is publishing the broadcast.
+ "publishedAt": "A String", # The date and time that the broadcast was added to YouTube's live broadcast schedule. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "scheduledStartTime": "A String", # The date and time that the broadcast is scheduled to start. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "actualStartTime": "A String", # The date and time that the broadcast actually started. This information is only available once the broadcast's state is live. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "scheduledEndTime": "A String", # The date and time that the broadcast is scheduled to end. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "thumbnails": { # Internal representation of thumbnails for a YouTube resource. # A map of thumbnail images associated with the broadcast. For each nested object in this object, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+ "default": { # A thumbnail is an image representing a YouTube resource. # The default image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "high": { # A thumbnail is an image representing a YouTube resource. # The high quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "medium": { # A thumbnail is an image representing a YouTube resource. # The medium quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "maxres": { # A thumbnail is an image representing a YouTube resource. # The maximum resolution quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "standard": { # A thumbnail is an image representing a YouTube resource. # The standard quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
},
},
- "slateSettings": { # Slate settings of a broadcast. # The slate settings of the live broadcast.
- "slates": { # Broadcast slates.
- "a_key": { # Locale code indicating in which region should the slate be displayed.
- "backgroundUrl": "A String", # Url of the background image.
- "textLines": [ # Multi-line message showing in the slate.
- "A String",
- ],
- },
- },
- "enableSlates": True or False, # Whether slate is enabled or not.
- },
- "snippet": { # Basic details about a live broadcast, including title, description and thumbnails. # Basic details about the live broadcast.
- "actualEndTime": "A String", # Date and time the broadcast is actual to end. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
- "description": "A String", # Description of the broadcast.
- "title": "A String", # Title of the broadcast.
- "channelId": "A String", # Channel publishing the broadcast.
- "publishedAt": "A String", # Date and time the broadcast was published at. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
- "scheduledStartTime": "A String", # Date and time the broadcast is scheduled to start. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
- "actualStartTime": "A String", # Date and time the broadcast is actual to start. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
- "scheduledEndTime": "A String", # Date and time the broadcast is scheduled to end. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
- "thumbnails": { # Video thumbnails.
- "a_key": { # A thumbnail is an image representing a YouTube resource. # A map of thumbnails by their name.
- "url": "A String", # The thumbnail image's URL.
- "width": 42, # (Optional) Width of the thumbnail image.
- "height": 42, # (Optional) Height of the thumbnail image.
- },
- },
- },
- "etag": "A String", # The eTag of the broadcast.
- "id": "A String", # The unique id of the broadcast.
- }</pre>
+ },
+ "etag": "A String", # Etag of this resource.
+ "id": "A String", # The ID that YouTube assigns to uniquely identify the broadcast.
+ }</pre>
</div>
</body></html>
\ No newline at end of file
diff --git a/docs/dyn/youtube_v3.liveStreams.html b/docs/dyn/youtube_v3.liveStreams.html
index d41af60..245f0fa 100644
--- a/docs/dyn/youtube_v3.liveStreams.html
+++ b/docs/dyn/youtube_v3.liveStreams.html
@@ -76,23 +76,23 @@
<h2>Instance Methods</h2>
<p class="toc_element">
<code><a href="#delete">delete(id)</a></code></p>
-<p class="firstline">Delete a live stream.</p>
+<p class="firstline">Deletes a video stream.</p>
<p class="toc_element">
- <code><a href="#insert">insert(part, body)</a></code></p>
-<p class="firstline">Insert a YouTube live stream.</p>
+ <code><a href="#insert">insert(part=None, body)</a></code></p>
+<p class="firstline">Creates a video stream. The stream enables you to send your video to YouTube, which can then broadcast the video to your audience.</p>
<p class="toc_element">
- <code><a href="#list">list(part, onBehalfOf=None, pageToken=None, maxResults=None, mine=None, id=None)</a></code></p>
-<p class="firstline">Browse the YouTube live stream collection.</p>
+ <code><a href="#list">list(part, pageToken=None, mine=None, maxResults=None, id=None)</a></code></p>
+<p class="firstline">Returns a list of video streams that match the API request parameters.</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="#update">update(part=None, body)</a></code></p>
-<p class="firstline">Update a YouTube live stream.</p>
+<p class="firstline">Updates a video stream. If the properties that you want to change cannot be updated, then you need to create a new stream with the proper settings.</p>
<h3>Method Details</h3>
<div class="method">
<code class="details" id="delete">delete(id)</code>
- <pre>Delete a live stream.
+ <pre>Deletes a video stream.
Args:
id: string, The id parameter specifies the YouTube live stream ID for the resource that is being deleted. (required)
@@ -100,39 +100,45 @@
</div>
<div class="method">
- <code class="details" id="insert">insert(part, body)</code>
- <pre>Insert a YouTube live stream.
+ <code class="details" id="insert">insert(part=None, body)</code>
+ <pre>Creates a video stream. The stream enables you to send your video to YouTube, which can then broadcast the video to your audience.
Args:
- part: string, Live stream parts to include in the returned response. Valid values are: id, snippet, cdn, status. (required)
+ part: string, The part parameter serves two purposes in this operation. It identifies the properties that the write operation will set as well as the properties that the API response will include.
+
+The part properties that you can include in the parameter value are id, snippet, cdn, and status. (required)
body: object, The request body. (required)
The object takes the form of:
{ # A live stream describes a live ingestion point.
- "status": { # Brief description of the live stream status. # Status of the live stream.
- "streamStatus": "A String", # The status of the stream.
+ "status": { # Brief description of the live stream status. # The status object contains information about live stream's status.
+ "streamStatus": "A String",
},
- "kind": "youtube#liveStream", # The type of this API resource.
- "cdn": { # Brief description of the live stream cdn settings. # Cdn settings of the live stream.
- "ingestionType": "A String", # The live stream ingestion type. Allowed values: rtmp, http, multicast.
- "ingestionInfo": { # Brief description of the live stream cdn settings. # Encapsulates information for ingesting an RTMP or an HTTP stream.
- "backupIngestionAddress": "A String", # The backup address of the inbound data.
- "streamName": "A String", # Ingestion stream name.
- "ingestionAddress": "A String", # The address of the inbound data.
+ "kind": "youtube#liveStream", # The kind, fixed to "youtube#liveStream".
+ "contentDetails": { # Detailed settings of a stream. # The content_details object contains information about the stream, including the closed captions ingestion URL.
+ "closedCaptionsIngestionUrl": "A String", # The ingestion URL where the closed captions of this stream are sent.
+ },
+ "cdn": { # Brief description of the live stream cdn settings. # The cdn object defines the live stream's content delivery network (CDN) settings. These settings provide details about the manner in which you stream your content to YouTube.
+ "ingestionType": "A String", # The method or protocol used to transmit the video stream.
+ "ingestionInfo": { # Describes information necessary for ingesting an RTMP or an HTTP stream. # The ingestionInfo object contains information that YouTube provides that you need to transmit your RTMP or HTTP stream to YouTube.
+ "backupIngestionAddress": "A String", # The backup ingestion URL that you should use to stream video to YouTube. You have the option of simultaneously streaming the content that you are sending to the ingestionAddress to this URL.
+ "streamName": "A String", # The HTTP or RTMP stream name that YouTube assigns to the video stream.
+ "ingestionAddress": "A String", # The primary ingestion URL that you should use to stream video to YouTube. You must stream video to this URL.
+ #
+ # Depending on which application or tool you use to encode your video stream, you may need to enter the stream URL and stream name separately or you may need to concatenate them in the following format:
+ #
+ # STREAM_URL/STREAM_NAME
},
- "multicastIngestionInfo": { # Brief description of the live stream cdn settings. # Encapsulates information for ingesting a multicast stream.
- "multicastAddress": "A String", # The IP address of the multicast data.
- },
- "format": "A String", # The format of the inbound data. Allowed values: 240p, 360p, 480p, 720p, 1080p, webm_360p, multicast_qcif, multicast_240p, multicast_360p, multicast_480p, multicast_720p, multicast_1080p.
+ "format": "A String", # The format of the video stream that you are sending to Youtube.
},
- "snippet": { # Basic details about a live stream, including title and description. # Basic details about the live stream.
- "channelId": "A String", # Channel publishing the live stream.
- "description": "A String", # Description of the live stream.
- "publishedAt": "A String", # Date and time the live stream was published at.
- "title": "A String", # Title of the live stream.
+ "snippet": { # The snippet object contains basic details about the stream, including its channel, title, and description.
+ "channelId": "A String", # The ID that YouTube uses to uniquely identify the channel that is transmitting the stream.
+ "description": "A String", # The stream's description. The value cannot be longer than 10000 characters.
+ "publishedAt": "A String", # The date and time that the stream was created. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "title": "A String", # The stream's title. The value must be between 1 and 128 characters long.
},
- "etag": "A String", # The eTag of the stream.
- "id": "A String", # The unique id of the stream.
+ "etag": "A String", # Etag of this resource.
+ "id": "A String", # The ID that YouTube assigns to uniquely identify the stream.
}
@@ -140,82 +146,91 @@
An object of the form:
{ # A live stream describes a live ingestion point.
- "status": { # Brief description of the live stream status. # Status of the live stream.
- "streamStatus": "A String", # The status of the stream.
+ "status": { # Brief description of the live stream status. # The status object contains information about live stream's status.
+ "streamStatus": "A String",
},
- "kind": "youtube#liveStream", # The type of this API resource.
- "cdn": { # Brief description of the live stream cdn settings. # Cdn settings of the live stream.
- "ingestionType": "A String", # The live stream ingestion type. Allowed values: rtmp, http, multicast.
- "ingestionInfo": { # Brief description of the live stream cdn settings. # Encapsulates information for ingesting an RTMP or an HTTP stream.
- "backupIngestionAddress": "A String", # The backup address of the inbound data.
- "streamName": "A String", # Ingestion stream name.
- "ingestionAddress": "A String", # The address of the inbound data.
+ "kind": "youtube#liveStream", # The kind, fixed to "youtube#liveStream".
+ "contentDetails": { # Detailed settings of a stream. # The content_details object contains information about the stream, including the closed captions ingestion URL.
+ "closedCaptionsIngestionUrl": "A String", # The ingestion URL where the closed captions of this stream are sent.
+ },
+ "cdn": { # Brief description of the live stream cdn settings. # The cdn object defines the live stream's content delivery network (CDN) settings. These settings provide details about the manner in which you stream your content to YouTube.
+ "ingestionType": "A String", # The method or protocol used to transmit the video stream.
+ "ingestionInfo": { # Describes information necessary for ingesting an RTMP or an HTTP stream. # The ingestionInfo object contains information that YouTube provides that you need to transmit your RTMP or HTTP stream to YouTube.
+ "backupIngestionAddress": "A String", # The backup ingestion URL that you should use to stream video to YouTube. You have the option of simultaneously streaming the content that you are sending to the ingestionAddress to this URL.
+ "streamName": "A String", # The HTTP or RTMP stream name that YouTube assigns to the video stream.
+ "ingestionAddress": "A String", # The primary ingestion URL that you should use to stream video to YouTube. You must stream video to this URL.
+ #
+ # Depending on which application or tool you use to encode your video stream, you may need to enter the stream URL and stream name separately or you may need to concatenate them in the following format:
+ #
+ # STREAM_URL/STREAM_NAME
},
- "multicastIngestionInfo": { # Brief description of the live stream cdn settings. # Encapsulates information for ingesting a multicast stream.
- "multicastAddress": "A String", # The IP address of the multicast data.
- },
- "format": "A String", # The format of the inbound data. Allowed values: 240p, 360p, 480p, 720p, 1080p, webm_360p, multicast_qcif, multicast_240p, multicast_360p, multicast_480p, multicast_720p, multicast_1080p.
+ "format": "A String", # The format of the video stream that you are sending to Youtube.
},
- "snippet": { # Basic details about a live stream, including title and description. # Basic details about the live stream.
- "channelId": "A String", # Channel publishing the live stream.
- "description": "A String", # Description of the live stream.
- "publishedAt": "A String", # Date and time the live stream was published at.
- "title": "A String", # Title of the live stream.
+ "snippet": { # The snippet object contains basic details about the stream, including its channel, title, and description.
+ "channelId": "A String", # The ID that YouTube uses to uniquely identify the channel that is transmitting the stream.
+ "description": "A String", # The stream's description. The value cannot be longer than 10000 characters.
+ "publishedAt": "A String", # The date and time that the stream was created. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "title": "A String", # The stream's title. The value must be between 1 and 128 characters long.
},
- "etag": "A String", # The eTag of the stream.
- "id": "A String", # The unique id of the stream.
+ "etag": "A String", # Etag of this resource.
+ "id": "A String", # The ID that YouTube assigns to uniquely identify the stream.
}</pre>
</div>
<div class="method">
- <code class="details" id="list">list(part, onBehalfOf=None, pageToken=None, maxResults=None, mine=None, id=None)</code>
- <pre>Browse the YouTube live stream collection.
+ <code class="details" id="list">list(part, pageToken=None, mine=None, maxResults=None, id=None)</code>
+ <pre>Returns a list of video streams that match the API request parameters.
Args:
- part: string, Live stream parts to include in the returned response. Valid values are: id, snippet, cdn, status. (required)
- onBehalfOf: string, ID of the Google+ Page for the channel that the request is to be on behalf of
- pageToken: string, Token for the page selection.
- maxResults: integer, Maximum number of results to return
- mine: boolean, Filter to only live streams owned by authenticated user.
- id: string, IDs of the live streams to be returned.
+ part: string, The part parameter specifies a comma-separated list of one or more liveStream resource properties that the API response will include. The part names that you can include in the parameter value are id, snippet, cdn, and status. (required)
+ pageToken: string, The pageToken parameter identifies a specific page in the result set that should be returned. In an API response, the nextPageToken and prevPageToken properties identify other pages that could be retrieved.
+ mine: boolean, The mine parameter can be used to instruct the API to only return streams owned by the authenticated user. Set the parameter value to true to only retrieve your own streams.
+ maxResults: integer, The maxResults parameter specifies the maximum number of items that should be returned in the result set. Acceptable values are 0 to 50, inclusive. The default value is 5.
+ id: string, The id parameter specifies a comma-separated list of YouTube stream IDs that identify the streams being retrieved. In a liveStream resource, the id property specifies the stream's ID.
Returns:
An object of the form:
{ # List of live streams.
- "nextPageToken": "A String", # The token that can be used as the value of the {@code pageInfo} parameter to retrieve the next page in the result set.
- "kind": "youtube#liveStreamList", # The type of this API resource.
+ "eventId": "A String", # Serialized EventId of the request which produced this response.
+ "nextPageToken": "A String", # The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set.
+ "kind": "youtube#liveStreamList", # The type of the API response. For this operation, the value will be youtube#liveStreamList.
+ "visitorId": "A String", # The visitorId identifies the visitor.
"items": [ # A list of live streams that match the request criteria.
{ # A live stream describes a live ingestion point.
- "status": { # Brief description of the live stream status. # Status of the live stream.
- "streamStatus": "A String", # The status of the stream.
+ "status": { # Brief description of the live stream status. # The status object contains information about live stream's status.
+ "streamStatus": "A String",
},
- "kind": "youtube#liveStream", # The type of this API resource.
- "cdn": { # Brief description of the live stream cdn settings. # Cdn settings of the live stream.
- "ingestionType": "A String", # The live stream ingestion type. Allowed values: rtmp, http, multicast.
- "ingestionInfo": { # Brief description of the live stream cdn settings. # Encapsulates information for ingesting an RTMP or an HTTP stream.
- "backupIngestionAddress": "A String", # The backup address of the inbound data.
- "streamName": "A String", # Ingestion stream name.
- "ingestionAddress": "A String", # The address of the inbound data.
+ "kind": "youtube#liveStream", # The kind, fixed to "youtube#liveStream".
+ "contentDetails": { # Detailed settings of a stream. # The content_details object contains information about the stream, including the closed captions ingestion URL.
+ "closedCaptionsIngestionUrl": "A String", # The ingestion URL where the closed captions of this stream are sent.
+ },
+ "cdn": { # Brief description of the live stream cdn settings. # The cdn object defines the live stream's content delivery network (CDN) settings. These settings provide details about the manner in which you stream your content to YouTube.
+ "ingestionType": "A String", # The method or protocol used to transmit the video stream.
+ "ingestionInfo": { # Describes information necessary for ingesting an RTMP or an HTTP stream. # The ingestionInfo object contains information that YouTube provides that you need to transmit your RTMP or HTTP stream to YouTube.
+ "backupIngestionAddress": "A String", # The backup ingestion URL that you should use to stream video to YouTube. You have the option of simultaneously streaming the content that you are sending to the ingestionAddress to this URL.
+ "streamName": "A String", # The HTTP or RTMP stream name that YouTube assigns to the video stream.
+ "ingestionAddress": "A String", # The primary ingestion URL that you should use to stream video to YouTube. You must stream video to this URL.
+ #
+ # Depending on which application or tool you use to encode your video stream, you may need to enter the stream URL and stream name separately or you may need to concatenate them in the following format:
+ #
+ # STREAM_URL/STREAM_NAME
},
- "multicastIngestionInfo": { # Brief description of the live stream cdn settings. # Encapsulates information for ingesting a multicast stream.
- "multicastAddress": "A String", # The IP address of the multicast data.
- },
- "format": "A String", # The format of the inbound data. Allowed values: 240p, 360p, 480p, 720p, 1080p, webm_360p, multicast_qcif, multicast_240p, multicast_360p, multicast_480p, multicast_720p, multicast_1080p.
+ "format": "A String", # The format of the video stream that you are sending to Youtube.
},
- "snippet": { # Basic details about a live stream, including title and description. # Basic details about the live stream.
- "channelId": "A String", # Channel publishing the live stream.
- "description": "A String", # Description of the live stream.
- "publishedAt": "A String", # Date and time the live stream was published at.
- "title": "A String", # Title of the live stream.
+ "snippet": { # The snippet object contains basic details about the stream, including its channel, title, and description.
+ "channelId": "A String", # The ID that YouTube uses to uniquely identify the channel that is transmitting the stream.
+ "description": "A String", # The stream's description. The value cannot be longer than 10000 characters.
+ "publishedAt": "A String", # The date and time that the stream was created. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "title": "A String", # The stream's title. The value must be between 1 and 128 characters long.
},
- "etag": "A String", # The eTag of the stream.
- "id": "A String", # The unique id of the stream.
+ "etag": "A String", # Etag of this resource.
+ "id": "A String", # The ID that YouTube assigns to uniquely identify the stream.
},
],
- "etag": "A String", # The eTag of the chart.
- "prevPageToken": "A String", # The token that can be used as the value of the {@code pageInfo} parameter to retrieve the previous page in the result set.
- "pageInfo": { # Paging details for lists of resources, including total number of items available and number of resources returned in a single page. # The {@code pageInfo} object encapsulates paging information for the result set.
+ "etag": "A String", # The ETag of the response.
+ "prevPageToken": "A String", # The token that can be used as the value of the pageToken parameter to retrieve the previous page in the result set.
+ "pageInfo": { # Paging details for lists of resources, including total number of items available and number of resources returned in a single page. # The pageInfo object encapsulates paging information for the result set.
"totalResults": 42, # The total number of results in the result set.
"resultsPerPage": 42, # The number of results included in the API response.
},
@@ -238,40 +253,46 @@
<div class="method">
<code class="details" id="update">update(part=None, body)</code>
- <pre>Update a YouTube live stream.
+ <pre>Updates a video stream. If the properties that you want to change cannot be updated, then you need to create a new stream with the proper settings.
Args:
part: string, The part parameter serves two purposes in this operation. It identifies the properties that the write operation will set as well as the properties that the API response will include.
-The part names that you can include in the parameter value are id, snippet, cdn, status. (required)
+The part properties that you can include in the parameter value are id, snippet, cdn, and status.
+
+Note that this method will override the existing values for all of the mutable properties that are contained in any parts that the parameter value specifies. If the request body does not specify a value for a mutable property, the existing value for that property will be removed. (required)
body: object, The request body. (required)
The object takes the form of:
{ # A live stream describes a live ingestion point.
- "status": { # Brief description of the live stream status. # Status of the live stream.
- "streamStatus": "A String", # The status of the stream.
+ "status": { # Brief description of the live stream status. # The status object contains information about live stream's status.
+ "streamStatus": "A String",
},
- "kind": "youtube#liveStream", # The type of this API resource.
- "cdn": { # Brief description of the live stream cdn settings. # Cdn settings of the live stream.
- "ingestionType": "A String", # The live stream ingestion type. Allowed values: rtmp, http, multicast.
- "ingestionInfo": { # Brief description of the live stream cdn settings. # Encapsulates information for ingesting an RTMP or an HTTP stream.
- "backupIngestionAddress": "A String", # The backup address of the inbound data.
- "streamName": "A String", # Ingestion stream name.
- "ingestionAddress": "A String", # The address of the inbound data.
+ "kind": "youtube#liveStream", # The kind, fixed to "youtube#liveStream".
+ "contentDetails": { # Detailed settings of a stream. # The content_details object contains information about the stream, including the closed captions ingestion URL.
+ "closedCaptionsIngestionUrl": "A String", # The ingestion URL where the closed captions of this stream are sent.
+ },
+ "cdn": { # Brief description of the live stream cdn settings. # The cdn object defines the live stream's content delivery network (CDN) settings. These settings provide details about the manner in which you stream your content to YouTube.
+ "ingestionType": "A String", # The method or protocol used to transmit the video stream.
+ "ingestionInfo": { # Describes information necessary for ingesting an RTMP or an HTTP stream. # The ingestionInfo object contains information that YouTube provides that you need to transmit your RTMP or HTTP stream to YouTube.
+ "backupIngestionAddress": "A String", # The backup ingestion URL that you should use to stream video to YouTube. You have the option of simultaneously streaming the content that you are sending to the ingestionAddress to this URL.
+ "streamName": "A String", # The HTTP or RTMP stream name that YouTube assigns to the video stream.
+ "ingestionAddress": "A String", # The primary ingestion URL that you should use to stream video to YouTube. You must stream video to this URL.
+ #
+ # Depending on which application or tool you use to encode your video stream, you may need to enter the stream URL and stream name separately or you may need to concatenate them in the following format:
+ #
+ # STREAM_URL/STREAM_NAME
},
- "multicastIngestionInfo": { # Brief description of the live stream cdn settings. # Encapsulates information for ingesting a multicast stream.
- "multicastAddress": "A String", # The IP address of the multicast data.
- },
- "format": "A String", # The format of the inbound data. Allowed values: 240p, 360p, 480p, 720p, 1080p, webm_360p, multicast_qcif, multicast_240p, multicast_360p, multicast_480p, multicast_720p, multicast_1080p.
+ "format": "A String", # The format of the video stream that you are sending to Youtube.
},
- "snippet": { # Basic details about a live stream, including title and description. # Basic details about the live stream.
- "channelId": "A String", # Channel publishing the live stream.
- "description": "A String", # Description of the live stream.
- "publishedAt": "A String", # Date and time the live stream was published at.
- "title": "A String", # Title of the live stream.
+ "snippet": { # The snippet object contains basic details about the stream, including its channel, title, and description.
+ "channelId": "A String", # The ID that YouTube uses to uniquely identify the channel that is transmitting the stream.
+ "description": "A String", # The stream's description. The value cannot be longer than 10000 characters.
+ "publishedAt": "A String", # The date and time that the stream was created. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "title": "A String", # The stream's title. The value must be between 1 and 128 characters long.
},
- "etag": "A String", # The eTag of the stream.
- "id": "A String", # The unique id of the stream.
+ "etag": "A String", # Etag of this resource.
+ "id": "A String", # The ID that YouTube assigns to uniquely identify the stream.
}
@@ -279,30 +300,34 @@
An object of the form:
{ # A live stream describes a live ingestion point.
- "status": { # Brief description of the live stream status. # Status of the live stream.
- "streamStatus": "A String", # The status of the stream.
+ "status": { # Brief description of the live stream status. # The status object contains information about live stream's status.
+ "streamStatus": "A String",
},
- "kind": "youtube#liveStream", # The type of this API resource.
- "cdn": { # Brief description of the live stream cdn settings. # Cdn settings of the live stream.
- "ingestionType": "A String", # The live stream ingestion type. Allowed values: rtmp, http, multicast.
- "ingestionInfo": { # Brief description of the live stream cdn settings. # Encapsulates information for ingesting an RTMP or an HTTP stream.
- "backupIngestionAddress": "A String", # The backup address of the inbound data.
- "streamName": "A String", # Ingestion stream name.
- "ingestionAddress": "A String", # The address of the inbound data.
+ "kind": "youtube#liveStream", # The kind, fixed to "youtube#liveStream".
+ "contentDetails": { # Detailed settings of a stream. # The content_details object contains information about the stream, including the closed captions ingestion URL.
+ "closedCaptionsIngestionUrl": "A String", # The ingestion URL where the closed captions of this stream are sent.
+ },
+ "cdn": { # Brief description of the live stream cdn settings. # The cdn object defines the live stream's content delivery network (CDN) settings. These settings provide details about the manner in which you stream your content to YouTube.
+ "ingestionType": "A String", # The method or protocol used to transmit the video stream.
+ "ingestionInfo": { # Describes information necessary for ingesting an RTMP or an HTTP stream. # The ingestionInfo object contains information that YouTube provides that you need to transmit your RTMP or HTTP stream to YouTube.
+ "backupIngestionAddress": "A String", # The backup ingestion URL that you should use to stream video to YouTube. You have the option of simultaneously streaming the content that you are sending to the ingestionAddress to this URL.
+ "streamName": "A String", # The HTTP or RTMP stream name that YouTube assigns to the video stream.
+ "ingestionAddress": "A String", # The primary ingestion URL that you should use to stream video to YouTube. You must stream video to this URL.
+ #
+ # Depending on which application or tool you use to encode your video stream, you may need to enter the stream URL and stream name separately or you may need to concatenate them in the following format:
+ #
+ # STREAM_URL/STREAM_NAME
},
- "multicastIngestionInfo": { # Brief description of the live stream cdn settings. # Encapsulates information for ingesting a multicast stream.
- "multicastAddress": "A String", # The IP address of the multicast data.
- },
- "format": "A String", # The format of the inbound data. Allowed values: 240p, 360p, 480p, 720p, 1080p, webm_360p, multicast_qcif, multicast_240p, multicast_360p, multicast_480p, multicast_720p, multicast_1080p.
+ "format": "A String", # The format of the video stream that you are sending to Youtube.
},
- "snippet": { # Basic details about a live stream, including title and description. # Basic details about the live stream.
- "channelId": "A String", # Channel publishing the live stream.
- "description": "A String", # Description of the live stream.
- "publishedAt": "A String", # Date and time the live stream was published at.
- "title": "A String", # Title of the live stream.
+ "snippet": { # The snippet object contains basic details about the stream, including its channel, title, and description.
+ "channelId": "A String", # The ID that YouTube uses to uniquely identify the channel that is transmitting the stream.
+ "description": "A String", # The stream's description. The value cannot be longer than 10000 characters.
+ "publishedAt": "A String", # The date and time that the stream was created. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "title": "A String", # The stream's title. The value must be between 1 and 128 characters long.
},
- "etag": "A String", # The eTag of the stream.
- "id": "A String", # The unique id of the stream.
+ "etag": "A String", # Etag of this resource.
+ "id": "A String", # The ID that YouTube assigns to uniquely identify the stream.
}</pre>
</div>
diff --git a/docs/dyn/youtube_v3.playlistItems.html b/docs/dyn/youtube_v3.playlistItems.html
index cbb3f9e..5a81b92 100644
--- a/docs/dyn/youtube_v3.playlistItems.html
+++ b/docs/dyn/youtube_v3.playlistItems.html
@@ -110,7 +110,7 @@
body: object, The request body. (required)
The object takes the form of:
-{ # A playlistItem resource identifies another resource, such as a video, that is included in a playlist. In addition, the playlistItem resource contains details about the included resource that pertain specifically to how that resource is used in that playlist.
+{ # A playlistItem resource identifies another resource, such as a video, that is included in a playlist. In addition, the playlistItem resource contains details about the included resource that pertain specifically to how that resource is used in that playlist.
#
# YouTube uses playlists to identify special collections of videos for a channel, such as:
# - uploaded videos
@@ -119,36 +119,60 @@
# - watch history
# - watch later To be more specific, these lists are associated with a channel, which is a collection of a person, group, or company's videos, playlists, and other YouTube information.
#
- # You can retrieve the playlist IDs for each of these lists from the channel resource for a given channel. You can then use the playlistItems.list method to retrieve any of those lists. You can also add or remove items from those lists by calling the playlistItems.insert and playlistItems.delete methods. For example, if a user gives a positive rating to a video, you would insert that video into the liked videos playlist for that user's channel.
- "snippet": { # Basic details about an item included in a playlist, including title, description, thumbnails, playlist the item is part of and position of the item inside the playlist. # The snippet object contains basic details about the playlist item, such as its title and position in the playlist.
+ # You can retrieve the playlist IDs for each of these lists from the channel resource for a given channel. You can then use the playlistItems.list method to retrieve any of those lists. You can also add or remove items from those lists by calling the playlistItems.insert and playlistItems.delete methods. For example, if a user gives a positive rating to a video, you would insert that video into the liked videos playlist for that user's channel.
+ "status": { # Information about the playlist item's privacy status. # The status object contains information about the playlist item's privacy status.
+ "privacyStatus": "A String", # This resource's privacy status.
+ },
+ "kind": "youtube#playlistItem", # The kind, fixed to "youtube#playlistItem".
+ "contentDetails": { # The contentDetails object is included in the resource if the included item is a YouTube video. The object contains additional information about the video.
+ "note": "A String", # A user-generated note for this item.
+ "startAt": "A String", # The time, measured in seconds from the start of the video, when the video should start playing. (The playlist owner can specify the times when the video should start and stop playing when the video is played in the context of the playlist.) The default value is 0.
+ "endAt": "A String", # The time, measured in seconds from the start of the video, when the video should stop playing. (The playlist owner can specify the times when the video should start and stop playing when the video is played in the context of the playlist.) By default, assume that the video.endTime is the end of the video.
+ "videoId": "A String", # The ID that YouTube uses to uniquely identify a video. To retrieve the video resource, set the id query parameter to this value in your API request.
+ },
+ "snippet": { # Basic details about a playlist, including title, description and thumbnails. # The snippet object contains basic details about the playlist item, such as its title and position in the playlist.
"playlistId": "A String", # The ID that YouTube uses to uniquely identify the playlist that the playlist item is in.
"description": "A String", # The item's description.
"title": "A String", # The item's title.
"resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The id object contains information that can be used to uniquely identify the resource that is included in the playlist as the playlist item.
- "kind": "A String", # The kind, or type, of the referred resource.
+ "kind": "A String", # The type of the API resource.
"channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
"playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
"videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
},
"channelId": "A String", # The ID that YouTube uses to uniquely identify the user that added the item to the playlist.
"publishedAt": "A String", # The date and time that the item was added to the playlist. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "channelTitle": "A String", # Channel title for the channel that the playlist item belongs to.
"position": 42, # The order in which the item appears in the playlist. The value uses a zero-based index, so the first item has a position of 0, the second item has a position of 1, and so forth.
- "thumbnails": { # A map of thumbnail images associated with the playlist item. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
- "a_key": { # A thumbnail is an image representing a YouTube resource. # The thumbnail image's name. This value is used as the key in the snippet.thumbnails map.
+ "thumbnails": { # Internal representation of thumbnails for a YouTube resource. # A map of thumbnail images associated with the playlist item. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+ "default": { # A thumbnail is an image representing a YouTube resource. # The default image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "high": { # A thumbnail is an image representing a YouTube resource. # The high quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "medium": { # A thumbnail is an image representing a YouTube resource. # The medium quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "maxres": { # A thumbnail is an image representing a YouTube resource. # The maximum resolution quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "standard": { # A thumbnail is an image representing a YouTube resource. # The standard quality image for this resource.
"url": "A String", # The thumbnail image's URL.
"width": 42, # (Optional) Width of the thumbnail image.
"height": 42, # (Optional) Height of the thumbnail image.
},
},
},
- "contentDetails": { # Details about the content of a playlist item, such as the video or the video fragment start and end time included in the playlist. # The contentDetails object is included in the resource if the included item is a YouTube video. The object contains additional information about the video.
- "note": "A String", # A user-generated note for this item.
- "startAt": "A String", # The time, measured in seconds from the start of the video, when the video should start playing. (The playlist owner can specify the times when the video should start and stop playing when the video is played in the context of the playlist.) The default value is 0.
- "endAt": "A String", # The time, measured in seconds from the start of the video, when the video should stop playing. (The playlist owner can specify the times when the video should start and stop playing when the video is played in the context of the playlist.) By default, assume that the video.endTime is the end of the video.
- "videoId": "A String", # The ID that YouTube uses to uniquely identify a video. To retrieve the video resource, set the id query parameter to this value in your API request.
- },
- "kind": "youtube#playlistItem", # The type of the API resource. For playlist item resources, the value will be youtube#playlistItem.
- "etag": "A String", # The ETag for the playlist item resource.
+ "etag": "A String", # Etag of this resource.
"id": "A String", # The ID that YouTube uses to uniquely identify the playlist item.
}
@@ -156,7 +180,7 @@
Returns:
An object of the form:
- { # A playlistItem resource identifies another resource, such as a video, that is included in a playlist. In addition, the playlistItem resource contains details about the included resource that pertain specifically to how that resource is used in that playlist.
+ { # A playlistItem resource identifies another resource, such as a video, that is included in a playlist. In addition, the playlistItem resource contains details about the included resource that pertain specifically to how that resource is used in that playlist.
#
# YouTube uses playlists to identify special collections of videos for a channel, such as:
# - uploaded videos
@@ -165,36 +189,60 @@
# - watch history
# - watch later To be more specific, these lists are associated with a channel, which is a collection of a person, group, or company's videos, playlists, and other YouTube information.
#
- # You can retrieve the playlist IDs for each of these lists from the channel resource for a given channel. You can then use the playlistItems.list method to retrieve any of those lists. You can also add or remove items from those lists by calling the playlistItems.insert and playlistItems.delete methods. For example, if a user gives a positive rating to a video, you would insert that video into the liked videos playlist for that user's channel.
- "snippet": { # Basic details about an item included in a playlist, including title, description, thumbnails, playlist the item is part of and position of the item inside the playlist. # The snippet object contains basic details about the playlist item, such as its title and position in the playlist.
+ # You can retrieve the playlist IDs for each of these lists from the channel resource for a given channel. You can then use the playlistItems.list method to retrieve any of those lists. You can also add or remove items from those lists by calling the playlistItems.insert and playlistItems.delete methods. For example, if a user gives a positive rating to a video, you would insert that video into the liked videos playlist for that user's channel.
+ "status": { # Information about the playlist item's privacy status. # The status object contains information about the playlist item's privacy status.
+ "privacyStatus": "A String", # This resource's privacy status.
+ },
+ "kind": "youtube#playlistItem", # The kind, fixed to "youtube#playlistItem".
+ "contentDetails": { # The contentDetails object is included in the resource if the included item is a YouTube video. The object contains additional information about the video.
+ "note": "A String", # A user-generated note for this item.
+ "startAt": "A String", # The time, measured in seconds from the start of the video, when the video should start playing. (The playlist owner can specify the times when the video should start and stop playing when the video is played in the context of the playlist.) The default value is 0.
+ "endAt": "A String", # The time, measured in seconds from the start of the video, when the video should stop playing. (The playlist owner can specify the times when the video should start and stop playing when the video is played in the context of the playlist.) By default, assume that the video.endTime is the end of the video.
+ "videoId": "A String", # The ID that YouTube uses to uniquely identify a video. To retrieve the video resource, set the id query parameter to this value in your API request.
+ },
+ "snippet": { # Basic details about a playlist, including title, description and thumbnails. # The snippet object contains basic details about the playlist item, such as its title and position in the playlist.
"playlistId": "A String", # The ID that YouTube uses to uniquely identify the playlist that the playlist item is in.
"description": "A String", # The item's description.
"title": "A String", # The item's title.
"resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The id object contains information that can be used to uniquely identify the resource that is included in the playlist as the playlist item.
- "kind": "A String", # The kind, or type, of the referred resource.
+ "kind": "A String", # The type of the API resource.
"channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
"playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
"videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
},
"channelId": "A String", # The ID that YouTube uses to uniquely identify the user that added the item to the playlist.
"publishedAt": "A String", # The date and time that the item was added to the playlist. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "channelTitle": "A String", # Channel title for the channel that the playlist item belongs to.
"position": 42, # The order in which the item appears in the playlist. The value uses a zero-based index, so the first item has a position of 0, the second item has a position of 1, and so forth.
- "thumbnails": { # A map of thumbnail images associated with the playlist item. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
- "a_key": { # A thumbnail is an image representing a YouTube resource. # The thumbnail image's name. This value is used as the key in the snippet.thumbnails map.
+ "thumbnails": { # Internal representation of thumbnails for a YouTube resource. # A map of thumbnail images associated with the playlist item. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+ "default": { # A thumbnail is an image representing a YouTube resource. # The default image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "high": { # A thumbnail is an image representing a YouTube resource. # The high quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "medium": { # A thumbnail is an image representing a YouTube resource. # The medium quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "maxres": { # A thumbnail is an image representing a YouTube resource. # The maximum resolution quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "standard": { # A thumbnail is an image representing a YouTube resource. # The standard quality image for this resource.
"url": "A String", # The thumbnail image's URL.
"width": 42, # (Optional) Width of the thumbnail image.
"height": 42, # (Optional) Height of the thumbnail image.
},
},
},
- "contentDetails": { # Details about the content of a playlist item, such as the video or the video fragment start and end time included in the playlist. # The contentDetails object is included in the resource if the included item is a YouTube video. The object contains additional information about the video.
- "note": "A String", # A user-generated note for this item.
- "startAt": "A String", # The time, measured in seconds from the start of the video, when the video should start playing. (The playlist owner can specify the times when the video should start and stop playing when the video is played in the context of the playlist.) The default value is 0.
- "endAt": "A String", # The time, measured in seconds from the start of the video, when the video should stop playing. (The playlist owner can specify the times when the video should start and stop playing when the video is played in the context of the playlist.) By default, assume that the video.endTime is the end of the video.
- "videoId": "A String", # The ID that YouTube uses to uniquely identify a video. To retrieve the video resource, set the id query parameter to this value in your API request.
- },
- "kind": "youtube#playlistItem", # The type of the API resource. For playlist item resources, the value will be youtube#playlistItem.
- "etag": "A String", # The ETag for the playlist item resource.
+ "etag": "A String", # Etag of this resource.
"id": "A String", # The ID that YouTube uses to uniquely identify the playlist item.
}</pre>
</div>
@@ -217,10 +265,12 @@
An object of the form:
{ # A paginated list of playlist items returned as the response to a youtube.playlistItems.list call.
+ "eventId": "A String", # Serialized EventId of the request which produced this response.
"nextPageToken": "A String", # A token that can be used as the value of the pageToken parameter to retrieve the next page in the result set.
"kind": "youtube#playlistItemListResponse", # The type of the API response. For this operation, the value will be youtube#playlistItemListResponse.
+ "visitorId": "A String", # The visitorId identifies the visitor.
"items": [ # A list of playlist items that match the request criteria.
- { # A playlistItem resource identifies another resource, such as a video, that is included in a playlist. In addition, the playlistItem resource contains details about the included resource that pertain specifically to how that resource is used in that playlist.
+ { # A playlistItem resource identifies another resource, such as a video, that is included in a playlist. In addition, the playlistItem resource contains details about the included resource that pertain specifically to how that resource is used in that playlist.
#
# YouTube uses playlists to identify special collections of videos for a channel, such as:
# - uploaded videos
@@ -229,36 +279,60 @@
# - watch history
# - watch later To be more specific, these lists are associated with a channel, which is a collection of a person, group, or company's videos, playlists, and other YouTube information.
#
- # You can retrieve the playlist IDs for each of these lists from the channel resource for a given channel. You can then use the playlistItems.list method to retrieve any of those lists. You can also add or remove items from those lists by calling the playlistItems.insert and playlistItems.delete methods. For example, if a user gives a positive rating to a video, you would insert that video into the liked videos playlist for that user's channel.
- "snippet": { # Basic details about an item included in a playlist, including title, description, thumbnails, playlist the item is part of and position of the item inside the playlist. # The snippet object contains basic details about the playlist item, such as its title and position in the playlist.
+ # You can retrieve the playlist IDs for each of these lists from the channel resource for a given channel. You can then use the playlistItems.list method to retrieve any of those lists. You can also add or remove items from those lists by calling the playlistItems.insert and playlistItems.delete methods. For example, if a user gives a positive rating to a video, you would insert that video into the liked videos playlist for that user's channel.
+ "status": { # Information about the playlist item's privacy status. # The status object contains information about the playlist item's privacy status.
+ "privacyStatus": "A String", # This resource's privacy status.
+ },
+ "kind": "youtube#playlistItem", # The kind, fixed to "youtube#playlistItem".
+ "contentDetails": { # The contentDetails object is included in the resource if the included item is a YouTube video. The object contains additional information about the video.
+ "note": "A String", # A user-generated note for this item.
+ "startAt": "A String", # The time, measured in seconds from the start of the video, when the video should start playing. (The playlist owner can specify the times when the video should start and stop playing when the video is played in the context of the playlist.) The default value is 0.
+ "endAt": "A String", # The time, measured in seconds from the start of the video, when the video should stop playing. (The playlist owner can specify the times when the video should start and stop playing when the video is played in the context of the playlist.) By default, assume that the video.endTime is the end of the video.
+ "videoId": "A String", # The ID that YouTube uses to uniquely identify a video. To retrieve the video resource, set the id query parameter to this value in your API request.
+ },
+ "snippet": { # Basic details about a playlist, including title, description and thumbnails. # The snippet object contains basic details about the playlist item, such as its title and position in the playlist.
"playlistId": "A String", # The ID that YouTube uses to uniquely identify the playlist that the playlist item is in.
"description": "A String", # The item's description.
"title": "A String", # The item's title.
"resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The id object contains information that can be used to uniquely identify the resource that is included in the playlist as the playlist item.
- "kind": "A String", # The kind, or type, of the referred resource.
+ "kind": "A String", # The type of the API resource.
"channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
"playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
"videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
},
"channelId": "A String", # The ID that YouTube uses to uniquely identify the user that added the item to the playlist.
"publishedAt": "A String", # The date and time that the item was added to the playlist. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "channelTitle": "A String", # Channel title for the channel that the playlist item belongs to.
"position": 42, # The order in which the item appears in the playlist. The value uses a zero-based index, so the first item has a position of 0, the second item has a position of 1, and so forth.
- "thumbnails": { # A map of thumbnail images associated with the playlist item. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
- "a_key": { # A thumbnail is an image representing a YouTube resource. # The thumbnail image's name. This value is used as the key in the snippet.thumbnails map.
+ "thumbnails": { # Internal representation of thumbnails for a YouTube resource. # A map of thumbnail images associated with the playlist item. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+ "default": { # A thumbnail is an image representing a YouTube resource. # The default image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "high": { # A thumbnail is an image representing a YouTube resource. # The high quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "medium": { # A thumbnail is an image representing a YouTube resource. # The medium quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "maxres": { # A thumbnail is an image representing a YouTube resource. # The maximum resolution quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "standard": { # A thumbnail is an image representing a YouTube resource. # The standard quality image for this resource.
"url": "A String", # The thumbnail image's URL.
"width": 42, # (Optional) Width of the thumbnail image.
"height": 42, # (Optional) Height of the thumbnail image.
},
},
},
- "contentDetails": { # Details about the content of a playlist item, such as the video or the video fragment start and end time included in the playlist. # The contentDetails object is included in the resource if the included item is a YouTube video. The object contains additional information about the video.
- "note": "A String", # A user-generated note for this item.
- "startAt": "A String", # The time, measured in seconds from the start of the video, when the video should start playing. (The playlist owner can specify the times when the video should start and stop playing when the video is played in the context of the playlist.) The default value is 0.
- "endAt": "A String", # The time, measured in seconds from the start of the video, when the video should stop playing. (The playlist owner can specify the times when the video should start and stop playing when the video is played in the context of the playlist.) By default, assume that the video.endTime is the end of the video.
- "videoId": "A String", # The ID that YouTube uses to uniquely identify a video. To retrieve the video resource, set the id query parameter to this value in your API request.
- },
- "kind": "youtube#playlistItem", # The type of the API resource. For playlist item resources, the value will be youtube#playlistItem.
- "etag": "A String", # The ETag for the playlist item resource.
+ "etag": "A String", # Etag of this resource.
"id": "A String", # The ID that YouTube uses to uniquely identify the playlist item.
},
],
@@ -298,7 +372,7 @@
body: object, The request body. (required)
The object takes the form of:
-{ # A playlistItem resource identifies another resource, such as a video, that is included in a playlist. In addition, the playlistItem resource contains details about the included resource that pertain specifically to how that resource is used in that playlist.
+{ # A playlistItem resource identifies another resource, such as a video, that is included in a playlist. In addition, the playlistItem resource contains details about the included resource that pertain specifically to how that resource is used in that playlist.
#
# YouTube uses playlists to identify special collections of videos for a channel, such as:
# - uploaded videos
@@ -307,36 +381,60 @@
# - watch history
# - watch later To be more specific, these lists are associated with a channel, which is a collection of a person, group, or company's videos, playlists, and other YouTube information.
#
- # You can retrieve the playlist IDs for each of these lists from the channel resource for a given channel. You can then use the playlistItems.list method to retrieve any of those lists. You can also add or remove items from those lists by calling the playlistItems.insert and playlistItems.delete methods. For example, if a user gives a positive rating to a video, you would insert that video into the liked videos playlist for that user's channel.
- "snippet": { # Basic details about an item included in a playlist, including title, description, thumbnails, playlist the item is part of and position of the item inside the playlist. # The snippet object contains basic details about the playlist item, such as its title and position in the playlist.
+ # You can retrieve the playlist IDs for each of these lists from the channel resource for a given channel. You can then use the playlistItems.list method to retrieve any of those lists. You can also add or remove items from those lists by calling the playlistItems.insert and playlistItems.delete methods. For example, if a user gives a positive rating to a video, you would insert that video into the liked videos playlist for that user's channel.
+ "status": { # Information about the playlist item's privacy status. # The status object contains information about the playlist item's privacy status.
+ "privacyStatus": "A String", # This resource's privacy status.
+ },
+ "kind": "youtube#playlistItem", # The kind, fixed to "youtube#playlistItem".
+ "contentDetails": { # The contentDetails object is included in the resource if the included item is a YouTube video. The object contains additional information about the video.
+ "note": "A String", # A user-generated note for this item.
+ "startAt": "A String", # The time, measured in seconds from the start of the video, when the video should start playing. (The playlist owner can specify the times when the video should start and stop playing when the video is played in the context of the playlist.) The default value is 0.
+ "endAt": "A String", # The time, measured in seconds from the start of the video, when the video should stop playing. (The playlist owner can specify the times when the video should start and stop playing when the video is played in the context of the playlist.) By default, assume that the video.endTime is the end of the video.
+ "videoId": "A String", # The ID that YouTube uses to uniquely identify a video. To retrieve the video resource, set the id query parameter to this value in your API request.
+ },
+ "snippet": { # Basic details about a playlist, including title, description and thumbnails. # The snippet object contains basic details about the playlist item, such as its title and position in the playlist.
"playlistId": "A String", # The ID that YouTube uses to uniquely identify the playlist that the playlist item is in.
"description": "A String", # The item's description.
"title": "A String", # The item's title.
"resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The id object contains information that can be used to uniquely identify the resource that is included in the playlist as the playlist item.
- "kind": "A String", # The kind, or type, of the referred resource.
+ "kind": "A String", # The type of the API resource.
"channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
"playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
"videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
},
"channelId": "A String", # The ID that YouTube uses to uniquely identify the user that added the item to the playlist.
"publishedAt": "A String", # The date and time that the item was added to the playlist. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "channelTitle": "A String", # Channel title for the channel that the playlist item belongs to.
"position": 42, # The order in which the item appears in the playlist. The value uses a zero-based index, so the first item has a position of 0, the second item has a position of 1, and so forth.
- "thumbnails": { # A map of thumbnail images associated with the playlist item. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
- "a_key": { # A thumbnail is an image representing a YouTube resource. # The thumbnail image's name. This value is used as the key in the snippet.thumbnails map.
+ "thumbnails": { # Internal representation of thumbnails for a YouTube resource. # A map of thumbnail images associated with the playlist item. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+ "default": { # A thumbnail is an image representing a YouTube resource. # The default image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "high": { # A thumbnail is an image representing a YouTube resource. # The high quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "medium": { # A thumbnail is an image representing a YouTube resource. # The medium quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "maxres": { # A thumbnail is an image representing a YouTube resource. # The maximum resolution quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "standard": { # A thumbnail is an image representing a YouTube resource. # The standard quality image for this resource.
"url": "A String", # The thumbnail image's URL.
"width": 42, # (Optional) Width of the thumbnail image.
"height": 42, # (Optional) Height of the thumbnail image.
},
},
},
- "contentDetails": { # Details about the content of a playlist item, such as the video or the video fragment start and end time included in the playlist. # The contentDetails object is included in the resource if the included item is a YouTube video. The object contains additional information about the video.
- "note": "A String", # A user-generated note for this item.
- "startAt": "A String", # The time, measured in seconds from the start of the video, when the video should start playing. (The playlist owner can specify the times when the video should start and stop playing when the video is played in the context of the playlist.) The default value is 0.
- "endAt": "A String", # The time, measured in seconds from the start of the video, when the video should stop playing. (The playlist owner can specify the times when the video should start and stop playing when the video is played in the context of the playlist.) By default, assume that the video.endTime is the end of the video.
- "videoId": "A String", # The ID that YouTube uses to uniquely identify a video. To retrieve the video resource, set the id query parameter to this value in your API request.
- },
- "kind": "youtube#playlistItem", # The type of the API resource. For playlist item resources, the value will be youtube#playlistItem.
- "etag": "A String", # The ETag for the playlist item resource.
+ "etag": "A String", # Etag of this resource.
"id": "A String", # The ID that YouTube uses to uniquely identify the playlist item.
}
@@ -344,7 +442,7 @@
Returns:
An object of the form:
- { # A playlistItem resource identifies another resource, such as a video, that is included in a playlist. In addition, the playlistItem resource contains details about the included resource that pertain specifically to how that resource is used in that playlist.
+ { # A playlistItem resource identifies another resource, such as a video, that is included in a playlist. In addition, the playlistItem resource contains details about the included resource that pertain specifically to how that resource is used in that playlist.
#
# YouTube uses playlists to identify special collections of videos for a channel, such as:
# - uploaded videos
@@ -353,36 +451,60 @@
# - watch history
# - watch later To be more specific, these lists are associated with a channel, which is a collection of a person, group, or company's videos, playlists, and other YouTube information.
#
- # You can retrieve the playlist IDs for each of these lists from the channel resource for a given channel. You can then use the playlistItems.list method to retrieve any of those lists. You can also add or remove items from those lists by calling the playlistItems.insert and playlistItems.delete methods. For example, if a user gives a positive rating to a video, you would insert that video into the liked videos playlist for that user's channel.
- "snippet": { # Basic details about an item included in a playlist, including title, description, thumbnails, playlist the item is part of and position of the item inside the playlist. # The snippet object contains basic details about the playlist item, such as its title and position in the playlist.
+ # You can retrieve the playlist IDs for each of these lists from the channel resource for a given channel. You can then use the playlistItems.list method to retrieve any of those lists. You can also add or remove items from those lists by calling the playlistItems.insert and playlistItems.delete methods. For example, if a user gives a positive rating to a video, you would insert that video into the liked videos playlist for that user's channel.
+ "status": { # Information about the playlist item's privacy status. # The status object contains information about the playlist item's privacy status.
+ "privacyStatus": "A String", # This resource's privacy status.
+ },
+ "kind": "youtube#playlistItem", # The kind, fixed to "youtube#playlistItem".
+ "contentDetails": { # The contentDetails object is included in the resource if the included item is a YouTube video. The object contains additional information about the video.
+ "note": "A String", # A user-generated note for this item.
+ "startAt": "A String", # The time, measured in seconds from the start of the video, when the video should start playing. (The playlist owner can specify the times when the video should start and stop playing when the video is played in the context of the playlist.) The default value is 0.
+ "endAt": "A String", # The time, measured in seconds from the start of the video, when the video should stop playing. (The playlist owner can specify the times when the video should start and stop playing when the video is played in the context of the playlist.) By default, assume that the video.endTime is the end of the video.
+ "videoId": "A String", # The ID that YouTube uses to uniquely identify a video. To retrieve the video resource, set the id query parameter to this value in your API request.
+ },
+ "snippet": { # Basic details about a playlist, including title, description and thumbnails. # The snippet object contains basic details about the playlist item, such as its title and position in the playlist.
"playlistId": "A String", # The ID that YouTube uses to uniquely identify the playlist that the playlist item is in.
"description": "A String", # The item's description.
"title": "A String", # The item's title.
"resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The id object contains information that can be used to uniquely identify the resource that is included in the playlist as the playlist item.
- "kind": "A String", # The kind, or type, of the referred resource.
+ "kind": "A String", # The type of the API resource.
"channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
"playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
"videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
},
"channelId": "A String", # The ID that YouTube uses to uniquely identify the user that added the item to the playlist.
"publishedAt": "A String", # The date and time that the item was added to the playlist. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "channelTitle": "A String", # Channel title for the channel that the playlist item belongs to.
"position": 42, # The order in which the item appears in the playlist. The value uses a zero-based index, so the first item has a position of 0, the second item has a position of 1, and so forth.
- "thumbnails": { # A map of thumbnail images associated with the playlist item. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
- "a_key": { # A thumbnail is an image representing a YouTube resource. # The thumbnail image's name. This value is used as the key in the snippet.thumbnails map.
+ "thumbnails": { # Internal representation of thumbnails for a YouTube resource. # A map of thumbnail images associated with the playlist item. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+ "default": { # A thumbnail is an image representing a YouTube resource. # The default image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "high": { # A thumbnail is an image representing a YouTube resource. # The high quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "medium": { # A thumbnail is an image representing a YouTube resource. # The medium quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "maxres": { # A thumbnail is an image representing a YouTube resource. # The maximum resolution quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "standard": { # A thumbnail is an image representing a YouTube resource. # The standard quality image for this resource.
"url": "A String", # The thumbnail image's URL.
"width": 42, # (Optional) Width of the thumbnail image.
"height": 42, # (Optional) Height of the thumbnail image.
},
},
},
- "contentDetails": { # Details about the content of a playlist item, such as the video or the video fragment start and end time included in the playlist. # The contentDetails object is included in the resource if the included item is a YouTube video. The object contains additional information about the video.
- "note": "A String", # A user-generated note for this item.
- "startAt": "A String", # The time, measured in seconds from the start of the video, when the video should start playing. (The playlist owner can specify the times when the video should start and stop playing when the video is played in the context of the playlist.) The default value is 0.
- "endAt": "A String", # The time, measured in seconds from the start of the video, when the video should stop playing. (The playlist owner can specify the times when the video should start and stop playing when the video is played in the context of the playlist.) By default, assume that the video.endTime is the end of the video.
- "videoId": "A String", # The ID that YouTube uses to uniquely identify a video. To retrieve the video resource, set the id query parameter to this value in your API request.
- },
- "kind": "youtube#playlistItem", # The type of the API resource. For playlist item resources, the value will be youtube#playlistItem.
- "etag": "A String", # The ETag for the playlist item resource.
+ "etag": "A String", # Etag of this resource.
"id": "A String", # The ID that YouTube uses to uniquely identify the playlist item.
}</pre>
</div>
diff --git a/docs/dyn/youtube_v3.playlists.html b/docs/dyn/youtube_v3.playlists.html
index a0514c5..d30c2a2 100644
--- a/docs/dyn/youtube_v3.playlists.html
+++ b/docs/dyn/youtube_v3.playlists.html
@@ -117,33 +117,57 @@
# - favorite videos
# - positively rated (liked) videos
# - watch history
- # - watch later To be more specific, these lists are associated with a channel, which is a collection of a person, group, or company's videos, playlists, and other YouTube information. You can retrieve the playlist IDs for each of these lists from the channel resource for a given channel.
+ # - watch later To be more specific, these lists are associated with a channel, which is a collection of a person, group, or company's videos, playlists, and other YouTube information. You can retrieve the playlist IDs for each of these lists from the channel resource for a given channel.
#
- # You can then use the playlistItems.list method to retrieve any of those lists. You can also add or remove items from those lists by calling the playlistItems.insert and playlistItems.delete methods.
- "status": { # The status details of a playlist describes whether the playlist is private. # The status object contains status information for the playlist.
+ # You can then use the playlistItems.list method to retrieve any of those lists. You can also add or remove items from those lists by calling the playlistItems.insert and playlistItems.delete methods.
+ "status": { # The status object contains status information for the playlist.
"privacyStatus": "A String", # The playlist's privacy status.
},
- "kind": "youtube#playlist", # The type of the API resource. For video resources, the value will be youtube#playlist.
- "contentDetails": { # Details about the content of a playlist, such as the video count. # The contentDetails object contains information like video count.
+ "kind": "youtube#playlist", # The kind, fixed to "youtube#playlist".
+ "contentDetails": { # The contentDetails object contains information like video count.
"itemCount": 42, # The number of videos in the playlist.
},
"snippet": { # Basic details about a playlist, including title, description and thumbnails. # The snippet object contains basic details about the playlist, such as its title and description.
- "title": "A String", # The playlist's title.
- "channelId": "A String", # The ID that YouTube uses to uniquely identify the channel that published the playlist.
- "description": "A String", # The playlist's description.
- "publishedAt": "A String", # The date and time that the playlist was created. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
- "thumbnails": { # A map of thumbnail images associated with the playlist. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
- "a_key": { # A thumbnail is an image representing a YouTube resource. # The thumbnail image's name. This value is used as the key in the snippet.thumbnails map.
+ "thumbnails": { # Internal representation of thumbnails for a YouTube resource. # A map of thumbnail images associated with the playlist. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+ "default": { # A thumbnail is an image representing a YouTube resource. # The default image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "high": { # A thumbnail is an image representing a YouTube resource. # The high quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "medium": { # A thumbnail is an image representing a YouTube resource. # The medium quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "maxres": { # A thumbnail is an image representing a YouTube resource. # The maximum resolution quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "standard": { # A thumbnail is an image representing a YouTube resource. # The standard quality image for this resource.
"url": "A String", # The thumbnail image's URL.
"width": 42, # (Optional) Width of the thumbnail image.
"height": 42, # (Optional) Height of the thumbnail image.
},
},
+ "tags": [ # Keyword tags associated with the playlist.
+ "A String",
+ ],
+ "channelId": "A String", # The ID that YouTube uses to uniquely identify the channel that published the playlist.
+ "publishedAt": "A String", # The date and time that the playlist was created. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "channelTitle": "A String", # The channel title of the channel that the video belongs to.
+ "title": "A String", # The playlist's title.
+ "description": "A String", # The playlist's description.
},
- "player": { # Player to be used for a playlist playback. # The player object contains information that you would use to play the playlist in an embedded player.
+ "player": { # The player object contains information that you would use to play the playlist in an embedded player.
"embedHtml": "A String", # An <iframe> tag that embeds a player that will play the playlist.
},
- "etag": "A String", # The ETag for the playlist resource.
+ "etag": "A String", # Etag of this resource.
"id": "A String", # The ID that YouTube uses to uniquely identify the playlist.
}
@@ -158,33 +182,57 @@
# - favorite videos
# - positively rated (liked) videos
# - watch history
- # - watch later To be more specific, these lists are associated with a channel, which is a collection of a person, group, or company's videos, playlists, and other YouTube information. You can retrieve the playlist IDs for each of these lists from the channel resource for a given channel.
+ # - watch later To be more specific, these lists are associated with a channel, which is a collection of a person, group, or company's videos, playlists, and other YouTube information. You can retrieve the playlist IDs for each of these lists from the channel resource for a given channel.
#
- # You can then use the playlistItems.list method to retrieve any of those lists. You can also add or remove items from those lists by calling the playlistItems.insert and playlistItems.delete methods.
- "status": { # The status details of a playlist describes whether the playlist is private. # The status object contains status information for the playlist.
+ # You can then use the playlistItems.list method to retrieve any of those lists. You can also add or remove items from those lists by calling the playlistItems.insert and playlistItems.delete methods.
+ "status": { # The status object contains status information for the playlist.
"privacyStatus": "A String", # The playlist's privacy status.
},
- "kind": "youtube#playlist", # The type of the API resource. For video resources, the value will be youtube#playlist.
- "contentDetails": { # Details about the content of a playlist, such as the video count. # The contentDetails object contains information like video count.
+ "kind": "youtube#playlist", # The kind, fixed to "youtube#playlist".
+ "contentDetails": { # The contentDetails object contains information like video count.
"itemCount": 42, # The number of videos in the playlist.
},
"snippet": { # Basic details about a playlist, including title, description and thumbnails. # The snippet object contains basic details about the playlist, such as its title and description.
- "title": "A String", # The playlist's title.
- "channelId": "A String", # The ID that YouTube uses to uniquely identify the channel that published the playlist.
- "description": "A String", # The playlist's description.
- "publishedAt": "A String", # The date and time that the playlist was created. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
- "thumbnails": { # A map of thumbnail images associated with the playlist. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
- "a_key": { # A thumbnail is an image representing a YouTube resource. # The thumbnail image's name. This value is used as the key in the snippet.thumbnails map.
+ "thumbnails": { # Internal representation of thumbnails for a YouTube resource. # A map of thumbnail images associated with the playlist. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+ "default": { # A thumbnail is an image representing a YouTube resource. # The default image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "high": { # A thumbnail is an image representing a YouTube resource. # The high quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "medium": { # A thumbnail is an image representing a YouTube resource. # The medium quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "maxres": { # A thumbnail is an image representing a YouTube resource. # The maximum resolution quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "standard": { # A thumbnail is an image representing a YouTube resource. # The standard quality image for this resource.
"url": "A String", # The thumbnail image's URL.
"width": 42, # (Optional) Width of the thumbnail image.
"height": 42, # (Optional) Height of the thumbnail image.
},
},
+ "tags": [ # Keyword tags associated with the playlist.
+ "A String",
+ ],
+ "channelId": "A String", # The ID that YouTube uses to uniquely identify the channel that published the playlist.
+ "publishedAt": "A String", # The date and time that the playlist was created. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "channelTitle": "A String", # The channel title of the channel that the video belongs to.
+ "title": "A String", # The playlist's title.
+ "description": "A String", # The playlist's description.
},
- "player": { # Player to be used for a playlist playback. # The player object contains information that you would use to play the playlist in an embedded player.
+ "player": { # The player object contains information that you would use to play the playlist in an embedded player.
"embedHtml": "A String", # An <iframe> tag that embeds a player that will play the playlist.
},
- "etag": "A String", # The ETag for the playlist resource.
+ "etag": "A String", # Etag of this resource.
"id": "A String", # The ID that YouTube uses to uniquely identify the playlist.
}</pre>
</div>
@@ -207,8 +255,10 @@
An object of the form:
{ # A paginated list of playlists returned as the response to a youtube.playlists.list call.
+ "eventId": "A String", # Serialized EventId of the request which produced this response.
"nextPageToken": "A String", # The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set.
"kind": "youtube#playlistListResponse", # The type of the API response. For this operation, the value will be youtube#playlistListResponse.
+ "visitorId": "A String", # The visitorId identifies the visitor.
"items": [ # A list of playlists that match the request criteria.
{ # A playlist resource represents a YouTube playlist. A playlist is a collection of videos that can be viewed sequentially and shared with other users. A playlist can contain up to 200 videos, and YouTube does not limit the number of playlists that each user creates. By default, playlists are publicly visible to other users, but playlists can be public or private.
#
@@ -217,33 +267,57 @@
# - favorite videos
# - positively rated (liked) videos
# - watch history
- # - watch later To be more specific, these lists are associated with a channel, which is a collection of a person, group, or company's videos, playlists, and other YouTube information. You can retrieve the playlist IDs for each of these lists from the channel resource for a given channel.
+ # - watch later To be more specific, these lists are associated with a channel, which is a collection of a person, group, or company's videos, playlists, and other YouTube information. You can retrieve the playlist IDs for each of these lists from the channel resource for a given channel.
#
- # You can then use the playlistItems.list method to retrieve any of those lists. You can also add or remove items from those lists by calling the playlistItems.insert and playlistItems.delete methods.
- "status": { # The status details of a playlist describes whether the playlist is private. # The status object contains status information for the playlist.
+ # You can then use the playlistItems.list method to retrieve any of those lists. You can also add or remove items from those lists by calling the playlistItems.insert and playlistItems.delete methods.
+ "status": { # The status object contains status information for the playlist.
"privacyStatus": "A String", # The playlist's privacy status.
},
- "kind": "youtube#playlist", # The type of the API resource. For video resources, the value will be youtube#playlist.
- "contentDetails": { # Details about the content of a playlist, such as the video count. # The contentDetails object contains information like video count.
+ "kind": "youtube#playlist", # The kind, fixed to "youtube#playlist".
+ "contentDetails": { # The contentDetails object contains information like video count.
"itemCount": 42, # The number of videos in the playlist.
},
"snippet": { # Basic details about a playlist, including title, description and thumbnails. # The snippet object contains basic details about the playlist, such as its title and description.
- "title": "A String", # The playlist's title.
- "channelId": "A String", # The ID that YouTube uses to uniquely identify the channel that published the playlist.
- "description": "A String", # The playlist's description.
- "publishedAt": "A String", # The date and time that the playlist was created. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
- "thumbnails": { # A map of thumbnail images associated with the playlist. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
- "a_key": { # A thumbnail is an image representing a YouTube resource. # The thumbnail image's name. This value is used as the key in the snippet.thumbnails map.
+ "thumbnails": { # Internal representation of thumbnails for a YouTube resource. # A map of thumbnail images associated with the playlist. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+ "default": { # A thumbnail is an image representing a YouTube resource. # The default image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "high": { # A thumbnail is an image representing a YouTube resource. # The high quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "medium": { # A thumbnail is an image representing a YouTube resource. # The medium quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "maxres": { # A thumbnail is an image representing a YouTube resource. # The maximum resolution quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "standard": { # A thumbnail is an image representing a YouTube resource. # The standard quality image for this resource.
"url": "A String", # The thumbnail image's URL.
"width": 42, # (Optional) Width of the thumbnail image.
"height": 42, # (Optional) Height of the thumbnail image.
},
},
+ "tags": [ # Keyword tags associated with the playlist.
+ "A String",
+ ],
+ "channelId": "A String", # The ID that YouTube uses to uniquely identify the channel that published the playlist.
+ "publishedAt": "A String", # The date and time that the playlist was created. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "channelTitle": "A String", # The channel title of the channel that the video belongs to.
+ "title": "A String", # The playlist's title.
+ "description": "A String", # The playlist's description.
},
- "player": { # Player to be used for a playlist playback. # The player object contains information that you would use to play the playlist in an embedded player.
+ "player": { # The player object contains information that you would use to play the playlist in an embedded player.
"embedHtml": "A String", # An <iframe> tag that embeds a player that will play the playlist.
},
- "etag": "A String", # The ETag for the playlist resource.
+ "etag": "A String", # Etag of this resource.
"id": "A String", # The ID that YouTube uses to uniquely identify the playlist.
},
],
@@ -290,33 +364,57 @@
# - favorite videos
# - positively rated (liked) videos
# - watch history
- # - watch later To be more specific, these lists are associated with a channel, which is a collection of a person, group, or company's videos, playlists, and other YouTube information. You can retrieve the playlist IDs for each of these lists from the channel resource for a given channel.
+ # - watch later To be more specific, these lists are associated with a channel, which is a collection of a person, group, or company's videos, playlists, and other YouTube information. You can retrieve the playlist IDs for each of these lists from the channel resource for a given channel.
#
- # You can then use the playlistItems.list method to retrieve any of those lists. You can also add or remove items from those lists by calling the playlistItems.insert and playlistItems.delete methods.
- "status": { # The status details of a playlist describes whether the playlist is private. # The status object contains status information for the playlist.
+ # You can then use the playlistItems.list method to retrieve any of those lists. You can also add or remove items from those lists by calling the playlistItems.insert and playlistItems.delete methods.
+ "status": { # The status object contains status information for the playlist.
"privacyStatus": "A String", # The playlist's privacy status.
},
- "kind": "youtube#playlist", # The type of the API resource. For video resources, the value will be youtube#playlist.
- "contentDetails": { # Details about the content of a playlist, such as the video count. # The contentDetails object contains information like video count.
+ "kind": "youtube#playlist", # The kind, fixed to "youtube#playlist".
+ "contentDetails": { # The contentDetails object contains information like video count.
"itemCount": 42, # The number of videos in the playlist.
},
"snippet": { # Basic details about a playlist, including title, description and thumbnails. # The snippet object contains basic details about the playlist, such as its title and description.
- "title": "A String", # The playlist's title.
- "channelId": "A String", # The ID that YouTube uses to uniquely identify the channel that published the playlist.
- "description": "A String", # The playlist's description.
- "publishedAt": "A String", # The date and time that the playlist was created. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
- "thumbnails": { # A map of thumbnail images associated with the playlist. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
- "a_key": { # A thumbnail is an image representing a YouTube resource. # The thumbnail image's name. This value is used as the key in the snippet.thumbnails map.
+ "thumbnails": { # Internal representation of thumbnails for a YouTube resource. # A map of thumbnail images associated with the playlist. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+ "default": { # A thumbnail is an image representing a YouTube resource. # The default image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "high": { # A thumbnail is an image representing a YouTube resource. # The high quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "medium": { # A thumbnail is an image representing a YouTube resource. # The medium quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "maxres": { # A thumbnail is an image representing a YouTube resource. # The maximum resolution quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "standard": { # A thumbnail is an image representing a YouTube resource. # The standard quality image for this resource.
"url": "A String", # The thumbnail image's URL.
"width": 42, # (Optional) Width of the thumbnail image.
"height": 42, # (Optional) Height of the thumbnail image.
},
},
+ "tags": [ # Keyword tags associated with the playlist.
+ "A String",
+ ],
+ "channelId": "A String", # The ID that YouTube uses to uniquely identify the channel that published the playlist.
+ "publishedAt": "A String", # The date and time that the playlist was created. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "channelTitle": "A String", # The channel title of the channel that the video belongs to.
+ "title": "A String", # The playlist's title.
+ "description": "A String", # The playlist's description.
},
- "player": { # Player to be used for a playlist playback. # The player object contains information that you would use to play the playlist in an embedded player.
+ "player": { # The player object contains information that you would use to play the playlist in an embedded player.
"embedHtml": "A String", # An <iframe> tag that embeds a player that will play the playlist.
},
- "etag": "A String", # The ETag for the playlist resource.
+ "etag": "A String", # Etag of this resource.
"id": "A String", # The ID that YouTube uses to uniquely identify the playlist.
}
@@ -331,33 +429,57 @@
# - favorite videos
# - positively rated (liked) videos
# - watch history
- # - watch later To be more specific, these lists are associated with a channel, which is a collection of a person, group, or company's videos, playlists, and other YouTube information. You can retrieve the playlist IDs for each of these lists from the channel resource for a given channel.
+ # - watch later To be more specific, these lists are associated with a channel, which is a collection of a person, group, or company's videos, playlists, and other YouTube information. You can retrieve the playlist IDs for each of these lists from the channel resource for a given channel.
#
- # You can then use the playlistItems.list method to retrieve any of those lists. You can also add or remove items from those lists by calling the playlistItems.insert and playlistItems.delete methods.
- "status": { # The status details of a playlist describes whether the playlist is private. # The status object contains status information for the playlist.
+ # You can then use the playlistItems.list method to retrieve any of those lists. You can also add or remove items from those lists by calling the playlistItems.insert and playlistItems.delete methods.
+ "status": { # The status object contains status information for the playlist.
"privacyStatus": "A String", # The playlist's privacy status.
},
- "kind": "youtube#playlist", # The type of the API resource. For video resources, the value will be youtube#playlist.
- "contentDetails": { # Details about the content of a playlist, such as the video count. # The contentDetails object contains information like video count.
+ "kind": "youtube#playlist", # The kind, fixed to "youtube#playlist".
+ "contentDetails": { # The contentDetails object contains information like video count.
"itemCount": 42, # The number of videos in the playlist.
},
"snippet": { # Basic details about a playlist, including title, description and thumbnails. # The snippet object contains basic details about the playlist, such as its title and description.
- "title": "A String", # The playlist's title.
- "channelId": "A String", # The ID that YouTube uses to uniquely identify the channel that published the playlist.
- "description": "A String", # The playlist's description.
- "publishedAt": "A String", # The date and time that the playlist was created. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
- "thumbnails": { # A map of thumbnail images associated with the playlist. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
- "a_key": { # A thumbnail is an image representing a YouTube resource. # The thumbnail image's name. This value is used as the key in the snippet.thumbnails map.
+ "thumbnails": { # Internal representation of thumbnails for a YouTube resource. # A map of thumbnail images associated with the playlist. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+ "default": { # A thumbnail is an image representing a YouTube resource. # The default image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "high": { # A thumbnail is an image representing a YouTube resource. # The high quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "medium": { # A thumbnail is an image representing a YouTube resource. # The medium quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "maxres": { # A thumbnail is an image representing a YouTube resource. # The maximum resolution quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "standard": { # A thumbnail is an image representing a YouTube resource. # The standard quality image for this resource.
"url": "A String", # The thumbnail image's URL.
"width": 42, # (Optional) Width of the thumbnail image.
"height": 42, # (Optional) Height of the thumbnail image.
},
},
+ "tags": [ # Keyword tags associated with the playlist.
+ "A String",
+ ],
+ "channelId": "A String", # The ID that YouTube uses to uniquely identify the channel that published the playlist.
+ "publishedAt": "A String", # The date and time that the playlist was created. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
+ "channelTitle": "A String", # The channel title of the channel that the video belongs to.
+ "title": "A String", # The playlist's title.
+ "description": "A String", # The playlist's description.
},
- "player": { # Player to be used for a playlist playback. # The player object contains information that you would use to play the playlist in an embedded player.
+ "player": { # The player object contains information that you would use to play the playlist in an embedded player.
"embedHtml": "A String", # An <iframe> tag that embeds a player that will play the playlist.
},
- "etag": "A String", # The ETag for the playlist resource.
+ "etag": "A String", # Etag of this resource.
"id": "A String", # The ID that YouTube uses to uniquely identify the playlist.
}</pre>
</div>
diff --git a/docs/dyn/youtube_v3.search.html b/docs/dyn/youtube_v3.search.html
index b33fd74..19bad22 100644
--- a/docs/dyn/youtube_v3.search.html
+++ b/docs/dyn/youtube_v3.search.html
@@ -75,14 +75,14 @@
<h1><a href="youtube_v3.html">YouTube Data API</a> . <a href="youtube_v3.search.html">search</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
- <code><a href="#list">list(part=None, channelId=None, videoSyndicated=None, channelType=None, videoCaption=None, publishedAfter=None, onBehalfOfContentOwner=None, forContentOwner=None, regionCode=None, type=None, topicId=None, publishedBefore=None, videoDimension=None, videoLicense=None, maxResults=None, videoType=None, videoDefinition=None, pageToken=None, relatedToVideoId=None, videoDuration=None, q=None, videoEmbeddable=None, videoCategoryId=None, order=None)</a></code></p>
+ <code><a href="#list">list(part=None, channelId=None, videoSyndicated=None, channelType=None, videoCaption=None, publishedAfter=None, onBehalfOfContentOwner=None, forContentOwner=None, regionCode=None, type=None, topicId=None, publishedBefore=None, videoDimension=None, videoLicense=None, maxResults=None, videoType=None, videoDefinition=None, pageToken=None, relatedToVideoId=None, videoDuration=None, forMine=None, q=None, safeSearch=None, videoEmbeddable=None, videoCategoryId=None, order=None)</a></code></p>
<p class="firstline">Returns a collection of search results that match the query parameters specified in the API request. By default, a search result set identifies matching video, channel, and playlist resources, but you can also configure queries to only retrieve a specific type of resource.</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>
<h3>Method Details</h3>
<div class="method">
- <code class="details" id="list">list(part=None, channelId=None, videoSyndicated=None, channelType=None, videoCaption=None, publishedAfter=None, onBehalfOfContentOwner=None, forContentOwner=None, regionCode=None, type=None, topicId=None, publishedBefore=None, videoDimension=None, videoLicense=None, maxResults=None, videoType=None, videoDefinition=None, pageToken=None, relatedToVideoId=None, videoDuration=None, q=None, videoEmbeddable=None, videoCategoryId=None, order=None)</code>
+ <code class="details" id="list">list(part=None, channelId=None, videoSyndicated=None, channelType=None, videoCaption=None, publishedAfter=None, onBehalfOfContentOwner=None, forContentOwner=None, regionCode=None, type=None, topicId=None, publishedBefore=None, videoDimension=None, videoLicense=None, maxResults=None, videoType=None, videoDefinition=None, pageToken=None, relatedToVideoId=None, videoDuration=None, forMine=None, q=None, safeSearch=None, videoEmbeddable=None, videoCategoryId=None, order=None)</code>
<pre>Returns a collection of search results that match the query parameters specified in the API request. By default, a search result set identifies matching video, channel, and playlist resources, but you can also configure queries to only retrieve a specific type of resource.
Args:
@@ -104,7 +104,7 @@
closedCaption - Only include videos that have captions.
none - Only include videos that do not have captions.
publishedAfter: string, The publishedAfter parameter indicates that the API response should only contain resources created after the specified time. The value is an RFC 3339 formatted date-time value (1970-01-01T00:00:00Z).
- onBehalfOfContentOwner: string, The onBehalfOfContentOwner parameter indicates that the authenticated user is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The actual CMS account that the user authenticates with needs to be linked to the specified YouTube content owner.
+ onBehalfOfContentOwner: string, USE_DESCRIPTION --- channels:list:onBehalfOfContentOwner
forContentOwner: boolean, The forContentOwner parameter restricts the search to only retrieve resources owned by the content owner specified by the onBehalfOfContentOwner parameter. The user must be authenticated as a CMS account linked to the specified content owner and onBehalfOfContentOwner must be provided.
regionCode: string, The regionCode parameter instructs the API to return search results for the specified country. The parameter value is an ISO 3166-1 alpha-2 country code.
type: string, The type parameter restricts a search query to only retrieve a particular type of resource.
@@ -139,7 +139,13 @@
long - Only include videos longer than 20 minutes.
medium - Only include videos that are between four and 20 minutes long (inclusive).
short - Only include videos that are less than four minutes long.
+ forMine: boolean, The forMine parameter restricts the search to only retrieve videos owned by the authenticated user.
q: string, The q parameter specifies the query term to search for.
+ safeSearch: string, The safeSearch parameter indicates whether the search results should include restricted content as well as standard content.
+ Allowed values
+ moderate - YouTube will filter some content from search results and, at the least, will filter content that is restricted in your locale. Based on their content, search results could be removed from search results or demoted in search results. Note: The default value for the safeSearch parameter is moderate.
+ none - YouTube will not perform any filtering on the search result set.
+ strict - YouTube will try to exclude all restricted content from the search result set. Based on their content, search results could be removed from search results or demoted in search results.
videoEmbeddable: string, The videoEmbeddable parameter lets you to restrict a search to only videos that can be embedded into a webpage.
Allowed values
any - Return all videos, embeddable or not.
@@ -150,19 +156,43 @@
date - Resources are sorted in reverse chronological order based on the date they were created.
rating - Resources are sorted from highest to lowest rating.
relevance - Resources are sorted based on their relevance to the search query. This is the default value for this parameter.
+ title - Resources are sorted based on their title.
+ videoCount - Channels are sorted from highest to lowest number of video uploaded.
viewCount - Resources are sorted from highest to lowest number of views.
Returns:
An object of the form:
{ # A paginated list of search results returned as the response to a youtube.search.list call.
+ "eventId": "A String", # Serialized EventId of the request which produced this response.
"nextPageToken": "A String", # The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set.
"kind": "youtube#searchListResponse", # The type of the API response. For this operation, the value will be youtube#searchListResponse.
+ "visitorId": "A String", # The visitorId identifies the visitor.
"items": [ # A list of results that match the search criteria.
{ # A search result contains information about a YouTube video, channel, or playlist that matches the search parameters specified in an API request. While a search result points to a uniquely identifiable resource, like a video, it does not have its own persistent data.
- "snippet": { # The snippet object contains basic details about a search result, such as its title or description. For example, if the search result is a video, then the title will be the video's title and the description will be the video's description.
- "thumbnails": { # A map of thumbnail images associated with the search result. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
- "a_key": { # A thumbnail is an image representing a YouTube resource. # Name of the thumbnail, to easily identify it. The set of names is dependent on the resource the thumbnail is for.
+ "snippet": { # Basic details about a search result, including title, description and thumbnails of the item referenced by the search result. # The snippet object contains basic details about a search result, such as its title or description. For example, if the search result is a video, then the title will be the video's title and the description will be the video's description.
+ "thumbnails": { # Internal representation of thumbnails for a YouTube resource. # A map of thumbnail images associated with the search result. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+ "default": { # A thumbnail is an image representing a YouTube resource. # The default image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "high": { # A thumbnail is an image representing a YouTube resource. # The high quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "medium": { # A thumbnail is an image representing a YouTube resource. # The medium quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "maxres": { # A thumbnail is an image representing a YouTube resource. # The maximum resolution quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "standard": { # A thumbnail is an image representing a YouTube resource. # The standard quality image for this resource.
"url": "A String", # The thumbnail image's URL.
"width": 42, # (Optional) Width of the thumbnail image.
"height": 42, # (Optional) Height of the thumbnail image.
@@ -177,7 +207,7 @@
"kind": "youtube#searchResult", # The kind, fixed to "youtube#searchResult".
"etag": "A String", # Etag of this resource.
"id": { # A resource id is a generic reference that points to another YouTube resource. # The id object contains information that can be used to uniquely identify the resource that matches the search request.
- "kind": "A String",
+ "kind": "A String", # The type of the API resource.
"channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
"playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
"videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
diff --git a/docs/dyn/youtube_v3.subscriptions.html b/docs/dyn/youtube_v3.subscriptions.html
index 74b2864..68f9232 100644
--- a/docs/dyn/youtube_v3.subscriptions.html
+++ b/docs/dyn/youtube_v3.subscriptions.html
@@ -81,7 +81,7 @@
<code><a href="#insert">insert(part=None, body)</a></code></p>
<p class="firstline">Adds a subscription for the authenticated user's channel.</p>
<p class="toc_element">
- <code><a href="#list">list(part=None, pageToken=None, channelId=None, mine=None, maxResults=None, forChannelId=None, order=None, id=None)</a></code></p>
+ <code><a href="#list">list(part=None, pageToken=None, id=None, channelId=None, mine=None, maxResults=None, forChannelId=None, mySubscribers=None, order=None)</a></code></p>
<p class="firstline">Returns subscription resources that match the API request criteria.</p>
<p class="toc_element">
<code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
@@ -108,31 +108,85 @@
The object takes the form of:
{ # A subscription resource contains information about a YouTube user subscription. A subscription notifies a user when new videos are added to a channel or when another user takes one of several actions on YouTube, such as uploading a video, rating a video, or commenting on a video.
+ "kind": "youtube#subscription", # The kind, fixed to "youtube#subscription".
+ "contentDetails": { # Details about the content to witch a subscription refers. # The contentDetails object contains basic statistics about the subscription.
+ "newItemCount": 42, # The number of new items in the subscription since its content was last read.
+ "activityType": "A String", # The type of activity this subscription is for (only uploads, everything).
+ "totalItemCount": 42, # The approximate number of items that the subscription points to.
+ },
"snippet": { # Basic details about a subscription, including title, description and thumbnails of the subscribed item. # The snippet object contains basic details about the subscription, including its title and the channel that the user subscribed to.
- "description": "A String", # The subscription's details.
+ "thumbnails": { # Internal representation of thumbnails for a YouTube resource. # A map of thumbnail images associated with the video. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+ "default": { # A thumbnail is an image representing a YouTube resource. # The default image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "high": { # A thumbnail is an image representing a YouTube resource. # The high quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "medium": { # A thumbnail is an image representing a YouTube resource. # The medium quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "maxres": { # A thumbnail is an image representing a YouTube resource. # The maximum resolution quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "standard": { # A thumbnail is an image representing a YouTube resource. # The standard quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ },
"title": "A String", # The subscription's title.
"resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The id object contains information about the channel that the user subscribed to.
- "kind": "A String", # The kind, or type, of the referred resource.
+ "kind": "A String", # The type of the API resource.
"channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
"playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
"videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
},
"channelId": "A String", # The ID that YouTube uses to uniquely identify the subscriber's channel.
"publishedAt": "A String", # The date and time that the subscription was created. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
- "thumbnails": { # A map of thumbnail images associated with the subscription. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
- "a_key": { # A thumbnail is an image representing a YouTube resource. # The thumbnail image's name.
+ "channelTitle": "A String", # Channel title for the channel that the subscription belongs to.
+ "description": "A String", # The subscription's details.
+ },
+ "etag": "A String", # Etag of this resource.
+ "subscriberSnippet": { # Basic details about a subscription's subscriber including title, description, channel ID and thumbnails. # The subscriberSnippet object contains basic details about the sbuscriber.
+ "title": "A String", # The title of the subscriber.
+ "channelId": "A String", # The channel ID of the subscriber.
+ "description": "A String", # The description of the subscriber.
+ "thumbnails": { # Internal representation of thumbnails for a YouTube resource. # Thumbnails for this subscriber.
+ "default": { # A thumbnail is an image representing a YouTube resource. # The default image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "high": { # A thumbnail is an image representing a YouTube resource. # The high quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "medium": { # A thumbnail is an image representing a YouTube resource. # The medium quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "maxres": { # A thumbnail is an image representing a YouTube resource. # The maximum resolution quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "standard": { # A thumbnail is an image representing a YouTube resource. # The standard quality image for this resource.
"url": "A String", # The thumbnail image's URL.
"width": 42, # (Optional) Width of the thumbnail image.
"height": 42, # (Optional) Height of the thumbnail image.
},
},
},
- "contentDetails": { # Details about the content to witch a subscription refers. # The contentDetails object contains basic statistics about the subscription.
- "newItemCount": 42, # The number of new items in the subscription since its content was last read.
- "totalItemCount": 42, # The approximate number of items that the subscription points to.
- },
- "kind": "youtube#subscription", # The type of the API resource. For subscription resources, the value will be youtube#subscription.
- "etag": "A String", # The ETag of the subscription resource.
"id": "A String", # The ID that YouTube uses to uniquely identify the subscription.
}
@@ -141,37 +195,91 @@
An object of the form:
{ # A subscription resource contains information about a YouTube user subscription. A subscription notifies a user when new videos are added to a channel or when another user takes one of several actions on YouTube, such as uploading a video, rating a video, or commenting on a video.
+ "kind": "youtube#subscription", # The kind, fixed to "youtube#subscription".
+ "contentDetails": { # Details about the content to witch a subscription refers. # The contentDetails object contains basic statistics about the subscription.
+ "newItemCount": 42, # The number of new items in the subscription since its content was last read.
+ "activityType": "A String", # The type of activity this subscription is for (only uploads, everything).
+ "totalItemCount": 42, # The approximate number of items that the subscription points to.
+ },
"snippet": { # Basic details about a subscription, including title, description and thumbnails of the subscribed item. # The snippet object contains basic details about the subscription, including its title and the channel that the user subscribed to.
- "description": "A String", # The subscription's details.
+ "thumbnails": { # Internal representation of thumbnails for a YouTube resource. # A map of thumbnail images associated with the video. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+ "default": { # A thumbnail is an image representing a YouTube resource. # The default image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "high": { # A thumbnail is an image representing a YouTube resource. # The high quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "medium": { # A thumbnail is an image representing a YouTube resource. # The medium quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "maxres": { # A thumbnail is an image representing a YouTube resource. # The maximum resolution quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "standard": { # A thumbnail is an image representing a YouTube resource. # The standard quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ },
"title": "A String", # The subscription's title.
"resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The id object contains information about the channel that the user subscribed to.
- "kind": "A String", # The kind, or type, of the referred resource.
+ "kind": "A String", # The type of the API resource.
"channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
"playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
"videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
},
"channelId": "A String", # The ID that YouTube uses to uniquely identify the subscriber's channel.
"publishedAt": "A String", # The date and time that the subscription was created. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
- "thumbnails": { # A map of thumbnail images associated with the subscription. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
- "a_key": { # A thumbnail is an image representing a YouTube resource. # The thumbnail image's name.
+ "channelTitle": "A String", # Channel title for the channel that the subscription belongs to.
+ "description": "A String", # The subscription's details.
+ },
+ "etag": "A String", # Etag of this resource.
+ "subscriberSnippet": { # Basic details about a subscription's subscriber including title, description, channel ID and thumbnails. # The subscriberSnippet object contains basic details about the sbuscriber.
+ "title": "A String", # The title of the subscriber.
+ "channelId": "A String", # The channel ID of the subscriber.
+ "description": "A String", # The description of the subscriber.
+ "thumbnails": { # Internal representation of thumbnails for a YouTube resource. # Thumbnails for this subscriber.
+ "default": { # A thumbnail is an image representing a YouTube resource. # The default image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "high": { # A thumbnail is an image representing a YouTube resource. # The high quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "medium": { # A thumbnail is an image representing a YouTube resource. # The medium quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "maxres": { # A thumbnail is an image representing a YouTube resource. # The maximum resolution quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "standard": { # A thumbnail is an image representing a YouTube resource. # The standard quality image for this resource.
"url": "A String", # The thumbnail image's URL.
"width": 42, # (Optional) Width of the thumbnail image.
"height": 42, # (Optional) Height of the thumbnail image.
},
},
},
- "contentDetails": { # Details about the content to witch a subscription refers. # The contentDetails object contains basic statistics about the subscription.
- "newItemCount": 42, # The number of new items in the subscription since its content was last read.
- "totalItemCount": 42, # The approximate number of items that the subscription points to.
- },
- "kind": "youtube#subscription", # The type of the API resource. For subscription resources, the value will be youtube#subscription.
- "etag": "A String", # The ETag of the subscription resource.
"id": "A String", # The ID that YouTube uses to uniquely identify the subscription.
}</pre>
</div>
<div class="method">
- <code class="details" id="list">list(part=None, pageToken=None, channelId=None, mine=None, maxResults=None, forChannelId=None, order=None, id=None)</code>
+ <code class="details" id="list">list(part=None, pageToken=None, id=None, channelId=None, mine=None, maxResults=None, forChannelId=None, mySubscribers=None, order=None)</code>
<pre>Returns subscription resources that match the API request criteria.
Args:
@@ -179,50 +287,107 @@
If the parameter identifies a property that contains child properties, the child properties will be included in the response. For example, in a subscription resource, the snippet property contains other properties, such as a display title for the subscription. If you set part=snippet, the API response will also contain all of those nested properties. (required)
pageToken: string, USE_DESCRIPTION --- channels:list:pageToken
+ id: string, The id parameter specifies a comma-separated list of the YouTube subscription ID(s) for the resource(s) that are being retrieved. In a subscription resource, the id property specifies the YouTube subscription ID.
channelId: string, The channelId parameter specifies a YouTube channel ID. The API will only return that channel's subscriptions.
mine: boolean, Set this parameter's value to true to retrieve a feed of the authenticated user's subscriptions.
maxResults: integer, USE_DESCRIPTION --- channels:list:maxResults
forChannelId: string, The forChannelId parameter specifies a comma-separated list of channel IDs. The API response will then only contain subscriptions matching those channels.
+ mySubscribers: boolean, Set this parameter's value to true to retrieve a feed of the subscribers of the authenticated user.
order: string, The order parameter specifies the method that will be used to sort resources in the API response.
Allowed values
alphabetical - Sort alphabetically.
relevance - Sort by relevance.
unread - Sort by order of activity.
- id: string, The id parameter specifies a comma-separated list of the YouTube subscription ID(s) for the resource(s) that are being retrieved. In a subscription resource, the id property specifies the YouTube subscription ID.
Returns:
An object of the form:
{ # A paginated list of subscriptions returned as the response to a youtube.subscriptions.list call.
+ "eventId": "A String", # Serialized EventId of the request which produced this response.
"nextPageToken": "A String", # The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set.
"kind": "youtube#subscriptionListResponse", # The type of the API response. For this operation, the value will be youtube#subscriptionListResponse.
+ "visitorId": "A String", # The visitorId identifies the visitor.
"items": [ # A list of subscriptions that match the request criteria.
{ # A subscription resource contains information about a YouTube user subscription. A subscription notifies a user when new videos are added to a channel or when another user takes one of several actions on YouTube, such as uploading a video, rating a video, or commenting on a video.
+ "kind": "youtube#subscription", # The kind, fixed to "youtube#subscription".
+ "contentDetails": { # Details about the content to witch a subscription refers. # The contentDetails object contains basic statistics about the subscription.
+ "newItemCount": 42, # The number of new items in the subscription since its content was last read.
+ "activityType": "A String", # The type of activity this subscription is for (only uploads, everything).
+ "totalItemCount": 42, # The approximate number of items that the subscription points to.
+ },
"snippet": { # Basic details about a subscription, including title, description and thumbnails of the subscribed item. # The snippet object contains basic details about the subscription, including its title and the channel that the user subscribed to.
- "description": "A String", # The subscription's details.
+ "thumbnails": { # Internal representation of thumbnails for a YouTube resource. # A map of thumbnail images associated with the video. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+ "default": { # A thumbnail is an image representing a YouTube resource. # The default image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "high": { # A thumbnail is an image representing a YouTube resource. # The high quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "medium": { # A thumbnail is an image representing a YouTube resource. # The medium quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "maxres": { # A thumbnail is an image representing a YouTube resource. # The maximum resolution quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "standard": { # A thumbnail is an image representing a YouTube resource. # The standard quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ },
"title": "A String", # The subscription's title.
"resourceId": { # A resource id is a generic reference that points to another YouTube resource. # The id object contains information about the channel that the user subscribed to.
- "kind": "A String", # The kind, or type, of the referred resource.
+ "kind": "A String", # The type of the API resource.
"channelId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a channel. This property is only present if the resourceId.kind value is youtube#channel.
"playlistId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a playlist. This property is only present if the resourceId.kind value is youtube#playlist.
"videoId": "A String", # The ID that YouTube uses to uniquely identify the referred resource, if that resource is a video. This property is only present if the resourceId.kind value is youtube#video.
},
"channelId": "A String", # The ID that YouTube uses to uniquely identify the subscriber's channel.
"publishedAt": "A String", # The date and time that the subscription was created. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
- "thumbnails": { # A map of thumbnail images associated with the subscription. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
- "a_key": { # A thumbnail is an image representing a YouTube resource. # The thumbnail image's name.
+ "channelTitle": "A String", # Channel title for the channel that the subscription belongs to.
+ "description": "A String", # The subscription's details.
+ },
+ "etag": "A String", # Etag of this resource.
+ "subscriberSnippet": { # Basic details about a subscription's subscriber including title, description, channel ID and thumbnails. # The subscriberSnippet object contains basic details about the sbuscriber.
+ "title": "A String", # The title of the subscriber.
+ "channelId": "A String", # The channel ID of the subscriber.
+ "description": "A String", # The description of the subscriber.
+ "thumbnails": { # Internal representation of thumbnails for a YouTube resource. # Thumbnails for this subscriber.
+ "default": { # A thumbnail is an image representing a YouTube resource. # The default image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "high": { # A thumbnail is an image representing a YouTube resource. # The high quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "medium": { # A thumbnail is an image representing a YouTube resource. # The medium quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "maxres": { # A thumbnail is an image representing a YouTube resource. # The maximum resolution quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "standard": { # A thumbnail is an image representing a YouTube resource. # The standard quality image for this resource.
"url": "A String", # The thumbnail image's URL.
"width": 42, # (Optional) Width of the thumbnail image.
"height": 42, # (Optional) Height of the thumbnail image.
},
},
},
- "contentDetails": { # Details about the content to witch a subscription refers. # The contentDetails object contains basic statistics about the subscription.
- "newItemCount": 42, # The number of new items in the subscription since its content was last read.
- "totalItemCount": 42, # The approximate number of items that the subscription points to.
- },
- "kind": "youtube#subscription", # The type of the API resource. For subscription resources, the value will be youtube#subscription.
- "etag": "A String", # The ETag of the subscription resource.
"id": "A String", # The ID that YouTube uses to uniquely identify the subscription.
},
],
diff --git a/docs/dyn/youtube_v3.thumbnails.html b/docs/dyn/youtube_v3.thumbnails.html
new file mode 100644
index 0000000..906f7ed
--- /dev/null
+++ b/docs/dyn/youtube_v3.thumbnails.html
@@ -0,0 +1,128 @@
+<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="youtube_v3.html">YouTube Data API</a> . <a href="youtube_v3.thumbnails.html">thumbnails</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="#set">set(videoId, media_body=None)</a></code></p>
+<p class="firstline">Uploads a custom video thumbnail to YouTube and sets it for a video.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="set">set(videoId, media_body=None)</code>
+ <pre>Uploads a custom video thumbnail to YouTube and sets it for a video.
+
+Args:
+ videoId: string, The videoId parameter specifies a YouTube video ID for which the custom video thumbnail is being provided. (required)
+ media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
+
+Returns:
+ An object of the form:
+
+ { # A list of thumbnails returned as the response to a thumbnails.set call.
+ "items": [ # A list of thumbnails.
+ { # Internal representation of thumbnails for a YouTube resource.
+ "default": { # A thumbnail is an image representing a YouTube resource. # The default image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "high": { # A thumbnail is an image representing a YouTube resource. # The high quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "medium": { # A thumbnail is an image representing a YouTube resource. # The medium quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "maxres": { # A thumbnail is an image representing a YouTube resource. # The maximum resolution quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "standard": { # A thumbnail is an image representing a YouTube resource. # The standard quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ },
+ ],
+ "kind": "youtube#thumbnailListResponse", # The type of the API response. For this operation, the value will be youtube#thumbnailListResponse.
+ "etag": "A String", # The ETag of the response.
+ "visitorId": "A String", # The visitorId identifies the visitor.
+ }</pre>
+</div>
+
+</body></html>
\ No newline at end of file
diff --git a/docs/dyn/youtube_v3.videoCategories.html b/docs/dyn/youtube_v3.videoCategories.html
index f4a76af..bdaa210 100644
--- a/docs/dyn/youtube_v3.videoCategories.html
+++ b/docs/dyn/youtube_v3.videoCategories.html
@@ -92,19 +92,21 @@
An object of the form:
{ # A paginated list of video categories returned as the response to a youtube.videoCategory.list call.
+ "eventId": "A String", # Serialized EventId of the request which produced this response.
"items": [ # A list of video categories that can be associated with YouTube videos. In this map, the video category ID is the map key, and its value is the corresponding videoCategory resource.
{ # A videoCategory resource identifies a category that has been or could be associated with uploaded videos.
- "snippet": { # The snippet object contains basic details about the video category, including its title.
+ "snippet": { # Basic details about a video category, such as its localized title. # The snippet object contains basic details about the video category, including its title.
"channelId": "UCBR8-60-B28hp2BmDPdntcQ", # The YouTube channel that created the video category.
- "title": "A String",
+ "title": "A String", # The video category's title.
},
- "kind": "youtube#videoCategory", # The type of the API resource. For video category resources, the value will be youtube#videoCategory.
- "etag": "A String", # The ETag of the videoCategory resource.
+ "kind": "youtube#videoCategory", # The kind, fixed to "youtube#videoCategory".
+ "etag": "A String", # Etag of this resource.
"id": "A String", # The ID that YouTube uses to uniquely identify the video category.
},
],
"kind": "youtube#videoCategoryListResponse", # The type of the API response. For this operation, the value will be youtube#videoCategoryListResponse.
"etag": "A String", # The ETag of the response.
+ "visitorId": "A String", # The visitorId identifies the visitor.
}</pre>
</div>
diff --git a/docs/dyn/youtube_v3.videos.html b/docs/dyn/youtube_v3.videos.html
index ec78917..3b8149d 100644
--- a/docs/dyn/youtube_v3.videos.html
+++ b/docs/dyn/youtube_v3.videos.html
@@ -78,12 +78,21 @@
<code><a href="#delete">delete(id, onBehalfOfContentOwner=None)</a></code></p>
<p class="firstline">Deletes a YouTube video.</p>
<p class="toc_element">
- <code><a href="#insert">insert(part=None, body=None, media_body=None)</a></code></p>
+ <code><a href="#getRating">getRating(id, onBehalfOfContentOwner=None)</a></code></p>
+<p class="firstline">Get user ratings for videos.</p>
+<p class="toc_element">
+ <code><a href="#insert">insert(part=None, body=None, media_body=None, onBehalfOfContentOwner=None, stabilize=None, onBehalfOfContentOwnerChannel=None, autoLevels=None)</a></code></p>
<p class="firstline">Uploads a video to YouTube and optionally sets the video's metadata.</p>
<p class="toc_element">
- <code><a href="#list">list(id, part=None, onBehalfOfContentOwner=None)</a></code></p>
+ <code><a href="#list">list(part=None, pageToken=None, onBehalfOfContentOwner=None, locale=None, chart=None, maxResults=None, videoCategoryId=None, myRating=None, id=None)</a></code></p>
<p class="firstline">Returns a list of videos that match the API request parameters.</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="#rate">rate(id, rating, onBehalfOfContentOwner=None)</a></code></p>
+<p class="firstline">Like, dislike, or remove rating from a video.</p>
+<p class="toc_element">
<code><a href="#update">update(part=None, body, onBehalfOfContentOwner=None)</a></code></p>
<p class="firstline">Updates a video's metadata.</p>
<h3>Method Details</h3>
@@ -93,12 +102,35 @@
Args:
id: string, The id parameter specifies the YouTube video ID for the resource that is being deleted. In a video resource, the id property specifies the video's ID. (required)
- onBehalfOfContentOwner: string, The onBehalfOfContentOwner parameter indicates that the authenticated user is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The actual CMS account that the user authenticates with needs to be linked to the specified YouTube content owner.
+ onBehalfOfContentOwner: string, USE_DESCRIPTION --- channels:list:onBehalfOfContentOwner
</pre>
</div>
<div class="method">
- <code class="details" id="insert">insert(part=None, body=None, media_body=None)</code>
+ <code class="details" id="getRating">getRating(id, onBehalfOfContentOwner=None)</code>
+ <pre>Get user ratings for videos.
+
+Args:
+ id: string, The id parameter specifies a comma-separated list of the YouTube video ID(s) for the resource(s) that are being retrieved. In a video resource, the id property specifies the video's ID. (required)
+ onBehalfOfContentOwner: string, USE_DESCRIPTION --- channels:list:onBehalfOfContentOwner
+
+Returns:
+ An object of the form:
+
+ { # A list of video ratings returned as the response to a youtube.videos.getRating call.
+ "items": [ # A list of ratings that match the request criteria.
+ { # Basic details about rating of a video.
+ "rating": "A String", # Rating of a video.
+ "videoId": "A String", # The ID that YouTube uses to uniquely identify the video.
+ },
+ ],
+ "kind": "youtube#videoGetRatingResponse", # The type of the API response. For this operation, the value will be youtube#videoGetRatingResponse.
+ "etag": "A String", # The ETag of the response.
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="insert">insert(part=None, body=None, media_body=None, onBehalfOfContentOwner=None, stabilize=None, onBehalfOfContentOwnerChannel=None, autoLevels=None)</code>
<pre>Uploads a video to YouTube and optionally sets the video's metadata.
Args:
@@ -109,10 +141,11 @@
The object takes the form of:
{ # A video resource represents a YouTube video.
- "status": { # The status of a video details the video's upload status and privacy status. # The status object contains information about the video's uploading, processing, and privacy statuses.
+ "status": { # Basic details about a video category, such as its localized title. # The status object contains information about the video's uploading, processing, and privacy statuses.
"license": "A String", # The video's license.
"embeddable": True or False, # This value indicates if the video can be embedded on another website.
"privacyStatus": "A String", # The video's privacy status.
+ "publicStatsViewable": True or False, # This value indicates if the extended video statistics on the watch page can be viewed by everyone. Note that the view count, likes, etc will still be visible if this is disabled.
"uploadStatus": "A String", # The status of the uploaded video.
"rejectionReason": "A String", # This value explains why YouTube rejected an uploaded video. This property is only present if the uploadStatus property indicates that the upload was rejected.
"failureReason": "A String", # This value explains why a video failed to upload. This property is only present if the uploadStatus property indicates that the upload failed.
@@ -127,15 +160,35 @@
"channelTitle": "A String", # Channel title for the channel that the video belongs to.
"title": "A String", # The video's title.
"categoryId": "A String", # The YouTube video category associated with the video.
- "thumbnails": { # A map of thumbnail images associated with the video. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
- "a_key": { # A thumbnail is an image representing a YouTube resource. # Name of the thumbnail, to easily identify it. The set of names is dependent on the resource the thumbnail is for.
+ "thumbnails": { # Internal representation of thumbnails for a YouTube resource. # A map of thumbnail images associated with the video. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+ "default": { # A thumbnail is an image representing a YouTube resource. # The default image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "high": { # A thumbnail is an image representing a YouTube resource. # The high quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "medium": { # A thumbnail is an image representing a YouTube resource. # The medium quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "maxres": { # A thumbnail is an image representing a YouTube resource. # The maximum resolution quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "standard": { # A thumbnail is an image representing a YouTube resource. # The standard quality image for this resource.
"url": "A String", # The thumbnail image's URL.
"width": 42, # (Optional) Width of the thumbnail image.
"height": 42, # (Optional) Height of the thumbnail image.
},
},
},
- "kind": "youtube#video", # The type of the API resource. For video resources, the value will be youtube#video.
+ "kind": "youtube#video", # The kind, fixed to "youtube#video".
"statistics": { # Statistics about the video, such as the number of times the video was viewed or liked. # The statistics object contains statistics about the video.
"commentCount": "A String", # The number of comments for the video.
"viewCount": "A String", # The number of times the video has been viewed.
@@ -144,7 +197,10 @@
"likeCount": "A String", # The number of users who have indicated that they liked the video by giving it a positive rating.
},
"topicDetails": { # Freebase topic information related to the video. # The topicDetails object encapsulates information about Freebase topics associated with the video.
- "topicIds": [ # A list of Freebase topic IDs associated with the video. You can retrieve information about each topic using the Freebase Topic API.
+ "topicIds": [ # A list of Freebase topic IDs that are centrally associated with the video. These are topics that are centrally featured in the video, and it can be said that the video is mainly about each of these. You can retrieve information about each topic using the Freebase Topic API.
+ "A String",
+ ],
+ "relevantTopicIds": [ # Similar to topic_id, except that these topics are merely relevant to the video. These are topics that may be mentioned in, or appear in the video. You can retrieve information about each topic using Freebase Topic API.
"A String",
],
},
@@ -164,6 +220,24 @@
],
"allowed": True or False, # The value of allowed indicates whether the access to the policy is allowed or denied by default.
},
+ "contentRating": { # Ratings schemes. The country-specific ratings are mostly for movies and shows. # Specifies the ratings that the video received under various rating schemes.
+ "ytRating": "A String", # Internal YouTube rating.
+ "russiaRating": "A String", # Rating system in Russia
+ "tvpgRating": "A String", # TV Parental Guidelines rating of the content.
+ "cbfcRating": "A String", # Rating system in India - Central Board of Film Certification
+ "acbRating": "A String", # Rating system in Australia - Australian Classification Board
+ "fskRating": "A String", # Rating system in Germany - Voluntary Self Regulation of the Movie Industry
+ "eirinRating": "A String", # Rating system in Japan - Eiga Rinri Kanri Iinkai
+ "bbfcRating": "A String", # British Board of Film Classification
+ "kmrbRating": "A String", # Rating system in South Korea - Korea Media Rating Board
+ "mpaaRating": "A String", # Motion Picture Association of America rating for the content.
+ "icaaRating": "A String", # Rating system in Spain - Instituto de Cinematografia y de las Artes Audiovisuales
+ "fmocRating": "A String", # Rating system in France - French Minister of Culture
+ "chvrsRating": "A String", # Canadian Home Video Rating System
+ "rtcRating": "A String", # Rating system in Mexico - General Directorate of Radio, Television and Cinematography
+ "djctqRating": "A String", # Rating system in Brazil - Department of Justice, Rating, Titles and Qualification
+ "oflcRating": "A String", # Rating system in New Zealand - Office of Film and Literature Classification
+ },
"caption": "A String", # The value of captions indicates whether the video has captions or not.
"regionRestriction": { # DEPRECATED Region restriction of the video. # The regionRestriction object contains information about the countries where a video is (or is not) viewable. The object will contain either the contentDetails.regionRestriction.allowed property or the contentDetails.regionRestriction.blocked property.
"blocked": [ # A list of region codes that identify countries where the video is blocked. If this property is present and a country is not listed in its value, then the video is viewable in that country. If this property is present and contains an empty list, the video is viewable in all countries.
@@ -177,34 +251,17 @@
"licensedContent": True or False, # The value of is_license_content indicates whether the video is licensed content.
"dimension": "A String", # The value of dimension indicates whether the video is available in 3D or in 2D.
},
- "suggestions": { # Specifies suggestions on how to improve video content, including encoding hints, tag suggestions, and editor suggestions. # The suggestions object encapsulates suggestions that identify opportunities to improve the video quality or the metadata for the uploaded video. This data can only be retrieved by the video owner.
- "processingErrors": [ # A list of errors that will prevent YouTube from successfully processing the uploaded video video. These errors indicate that, regardless of the video's current processing status, eventually, that status will almost certainly be failed.
- "A String",
- ],
- "tagSuggestions": [ # A list of keyword tags that could be added to the video's metadata to increase the likelihood that users will locate your video when searching or browsing on YouTube.
- { # A single tag suggestion with it's relevance information.
- "categoryRestricts": [ # A set of video categories for which the tag is relevant. You can use this information to display appropriate tag suggestions based on the video category that the video uploader associates with the video. By default, tag suggestions are relevant for all categories if there are no restricts defined for the keyword.
- "A String",
- ],
- "tag": "A String", # The keyword tag suggested for the video.
- },
- ],
- "editorSuggestions": [ # A list of video editing operations that might improve the video quality or playback experience of the uploaded video.
- "A String",
- ],
- "processingWarnings": [ # A list of reasons why YouTube may have difficulty transcoding the uploaded video or that might result in an erroneous transcoding. These warnings are generated before YouTube actually processes the uploaded video file. In addition, they identify issues that are unlikely to cause the video processing to fail but that might cause problems such as sync issues, video artifacts, or a missing audio track.
- "A String",
- ],
- "processingHints": [ # A list of suggestions that may improve YouTube's ability to process the video.
- "A String",
- ],
+ "ageGating": { # Age restriction details related to a video.
+ "restricted": True or False, # Age-restricted trailers. For redband trailers and adult-rated video-games. Only users aged 18+ can view the content. The the field is true the content is restricted to viewers aged 18+. Otherwise The field won't be present.
+ "alcoholContent": True or False, # Indicates whether or not the video has alcoholic beverage content. Only users of legal purchasing age in a particular country, as identified by ICAP, can view the content.
+ "videoGameRating": "A String", # Video game rating, if any.
},
"fileDetails": { # Describes original video file properties, including technical details about audio and video streams, but also metadata information like content length, digitization time, or geotagging information. # The fileDetails object encapsulates information about the video file that was uploaded to YouTube, including the file's resolution, duration, audio and video codecs, stream bitrates, and more. This data can only be retrieved by the video owner.
"bitrateBps": "A String", # The uploaded video file's combined (video and audio) bitrate in bits per second.
"container": "A String", # The uploaded video file's container format.
- "recordingLocation": { # A geoPoint holds geo location information associated with a YouTube resource. # Geographic coordinates that identify the place where the uploaded video was recorded. Coordinates are defined using WGS 84.
+ "recordingLocation": { # Geographical coordinates of a point, in WGS84. # Geographic coordinates that identify the place where the uploaded video was recorded. Coordinates are defined using WGS 84.
"latitude": 3.14, # Latitude in degrees.
- "elevation": 3.14, # Altitude above the Earth, in meters.
+ "altitude": 3.14, # Altitude above the reference ellipsoid, in meters.
"longitude": 3.14, # Longitude in degrees.
},
"fileType": "A String", # The uploaded file's type as detected by YouTube's video processing engine. Currently, YouTube only processes video files, but this field is present whether a video file or another type of file was uploaded.
@@ -258,7 +315,7 @@
"player": { # Player to be used for a video playback. # The player object contains information that you would use to play the video in an embedded player.
"embedHtml": "A String", # An <iframe> tag that embeds a player that will play the video.
},
- "etag": "A String", # The ETag of the video resource.
+ "etag": "A String", # Etag of this resource.
"projectDetails": { # Project specific details about the content of a YouTube Video. # The projectDetails object contains information about the project specific video metadata.
"tags": [ # A list of project tags associated with the video during the upload.
"A String",
@@ -267,25 +324,64 @@
"recordingDetails": { # Recording information associated with the video. # The recordingDetails object encapsulates information about the location, date and address where the video was recorded.
"recordingDate": "A String", # The date and time when the video was recorded. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
"locationDescription": "A String", # The text description of the location where the video was recorded.
- "location": { # A geoPoint holds geo location information associated with a YouTube resource. # The geolocation information associated with the video.
+ "location": { # Geographical coordinates of a point, in WGS84. # The geolocation information associated with the video.
"latitude": 3.14, # Latitude in degrees.
- "elevation": 3.14, # Altitude above the Earth, in meters.
+ "altitude": 3.14, # Altitude above the reference ellipsoid, in meters.
"longitude": 3.14, # Longitude in degrees.
},
},
+ "suggestions": { # Specifies suggestions on how to improve video content, including encoding hints, tag suggestions, and editor suggestions. # The suggestions object encapsulates suggestions that identify opportunities to improve the video quality or the metadata for the uploaded video. This data can only be retrieved by the video owner.
+ "processingErrors": [ # A list of errors that will prevent YouTube from successfully processing the uploaded video video. These errors indicate that, regardless of the video's current processing status, eventually, that status will almost certainly be failed.
+ "A String",
+ ],
+ "tagSuggestions": [ # A list of keyword tags that could be added to the video's metadata to increase the likelihood that users will locate your video when searching or browsing on YouTube.
+ { # A single tag suggestion with it's relevance information.
+ "categoryRestricts": [ # A set of video categories for which the tag is relevant. You can use this information to display appropriate tag suggestions based on the video category that the video uploader associates with the video. By default, tag suggestions are relevant for all categories if there are no restricts defined for the keyword.
+ "A String",
+ ],
+ "tag": "A String", # The keyword tag suggested for the video.
+ },
+ ],
+ "editorSuggestions": [ # A list of video editing operations that might improve the video quality or playback experience of the uploaded video.
+ "A String",
+ ],
+ "processingWarnings": [ # A list of reasons why YouTube may have difficulty transcoding the uploaded video or that might result in an erroneous transcoding. These warnings are generated before YouTube actually processes the uploaded video file. In addition, they identify issues that are unlikely to cause the video processing to fail but that might cause problems such as sync issues, video artifacts, or a missing audio track.
+ "A String",
+ ],
+ "processingHints": [ # A list of suggestions that may improve YouTube's ability to process the video.
+ "A String",
+ ],
+ },
"id": "A String", # The ID that YouTube uses to uniquely identify the video.
+ "conversionPings": { # The conversionPings object encapsulates information about url pings that need to be respected by the App in different video contexts.
+ "pings": [ # Pings that the app shall fire for a video (authenticated by biscotti cookie). Each ping has a context, in which the app must fire the ping, and a url identifying the ping.
+ {
+ "conversionUrl": "A String", # The url (without the schema) that the app shall send the ping to. It's at caller's descretion to decide which schema to use (http vs https) Example of a returned url: //googleads.g.doubleclick.net/pagead/ viewthroughconversion/962985656/?data=path%3DtHe_path%3Btype%3D like%3Butuid%3DGISQtTNGYqaYl4sKxoVvKA%3Bytvid%3DUrIaJUvIQDg&labe=default The caller must append biscotti authentication (ms param in case of mobile, for example) to this ping.
+ "context": "A String", # Defines the context of the ping.
+ },
+ ],
+ },
}
media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
+ onBehalfOfContentOwner: string, USE_DESCRIPTION --- channels:list:onBehalfOfContentOwner
+ stabilize: boolean, The stabilize parameter specifies whether the video should be stabilized by YouTube.
+ onBehalfOfContentOwnerChannel: string, This parameter can only be used in a properly authorized request. Note: This parameter is intended exclusively for YouTube content partners.
+
+The onBehalfOfContentOwnerChannel parameter indicates that the request's authorization credentials identify a YouTube CMS user who is acting on behalf of the channel specified in the parameter value. This parameter must be used in conjunction with the onBehalfOfContentOwner parameter, and the user must be authenticated using a CMS account that is linked to the content owner that the onBehalfOfContentOwner parameter specifies. In addition, the channel that the onBehalfOfContentOwnerChannel parameter value specifies must be linked to the content owner that the onBehalfOfContentOwner parameter specifies.
+
+This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and perform actions on behalf of the channel specified in the parameter value, without having to provide authentication credentials for each separate channel.
+ autoLevels: boolean, The autoLevels parameter specifies whether the video should be auto-leveled by YouTube.
Returns:
An object of the form:
{ # A video resource represents a YouTube video.
- "status": { # The status of a video details the video's upload status and privacy status. # The status object contains information about the video's uploading, processing, and privacy statuses.
+ "status": { # Basic details about a video category, such as its localized title. # The status object contains information about the video's uploading, processing, and privacy statuses.
"license": "A String", # The video's license.
"embeddable": True or False, # This value indicates if the video can be embedded on another website.
"privacyStatus": "A String", # The video's privacy status.
+ "publicStatsViewable": True or False, # This value indicates if the extended video statistics on the watch page can be viewed by everyone. Note that the view count, likes, etc will still be visible if this is disabled.
"uploadStatus": "A String", # The status of the uploaded video.
"rejectionReason": "A String", # This value explains why YouTube rejected an uploaded video. This property is only present if the uploadStatus property indicates that the upload was rejected.
"failureReason": "A String", # This value explains why a video failed to upload. This property is only present if the uploadStatus property indicates that the upload failed.
@@ -300,15 +396,35 @@
"channelTitle": "A String", # Channel title for the channel that the video belongs to.
"title": "A String", # The video's title.
"categoryId": "A String", # The YouTube video category associated with the video.
- "thumbnails": { # A map of thumbnail images associated with the video. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
- "a_key": { # A thumbnail is an image representing a YouTube resource. # Name of the thumbnail, to easily identify it. The set of names is dependent on the resource the thumbnail is for.
+ "thumbnails": { # Internal representation of thumbnails for a YouTube resource. # A map of thumbnail images associated with the video. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+ "default": { # A thumbnail is an image representing a YouTube resource. # The default image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "high": { # A thumbnail is an image representing a YouTube resource. # The high quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "medium": { # A thumbnail is an image representing a YouTube resource. # The medium quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "maxres": { # A thumbnail is an image representing a YouTube resource. # The maximum resolution quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "standard": { # A thumbnail is an image representing a YouTube resource. # The standard quality image for this resource.
"url": "A String", # The thumbnail image's URL.
"width": 42, # (Optional) Width of the thumbnail image.
"height": 42, # (Optional) Height of the thumbnail image.
},
},
},
- "kind": "youtube#video", # The type of the API resource. For video resources, the value will be youtube#video.
+ "kind": "youtube#video", # The kind, fixed to "youtube#video".
"statistics": { # Statistics about the video, such as the number of times the video was viewed or liked. # The statistics object contains statistics about the video.
"commentCount": "A String", # The number of comments for the video.
"viewCount": "A String", # The number of times the video has been viewed.
@@ -317,7 +433,10 @@
"likeCount": "A String", # The number of users who have indicated that they liked the video by giving it a positive rating.
},
"topicDetails": { # Freebase topic information related to the video. # The topicDetails object encapsulates information about Freebase topics associated with the video.
- "topicIds": [ # A list of Freebase topic IDs associated with the video. You can retrieve information about each topic using the Freebase Topic API.
+ "topicIds": [ # A list of Freebase topic IDs that are centrally associated with the video. These are topics that are centrally featured in the video, and it can be said that the video is mainly about each of these. You can retrieve information about each topic using the Freebase Topic API.
+ "A String",
+ ],
+ "relevantTopicIds": [ # Similar to topic_id, except that these topics are merely relevant to the video. These are topics that may be mentioned in, or appear in the video. You can retrieve information about each topic using Freebase Topic API.
"A String",
],
},
@@ -337,6 +456,24 @@
],
"allowed": True or False, # The value of allowed indicates whether the access to the policy is allowed or denied by default.
},
+ "contentRating": { # Ratings schemes. The country-specific ratings are mostly for movies and shows. # Specifies the ratings that the video received under various rating schemes.
+ "ytRating": "A String", # Internal YouTube rating.
+ "russiaRating": "A String", # Rating system in Russia
+ "tvpgRating": "A String", # TV Parental Guidelines rating of the content.
+ "cbfcRating": "A String", # Rating system in India - Central Board of Film Certification
+ "acbRating": "A String", # Rating system in Australia - Australian Classification Board
+ "fskRating": "A String", # Rating system in Germany - Voluntary Self Regulation of the Movie Industry
+ "eirinRating": "A String", # Rating system in Japan - Eiga Rinri Kanri Iinkai
+ "bbfcRating": "A String", # British Board of Film Classification
+ "kmrbRating": "A String", # Rating system in South Korea - Korea Media Rating Board
+ "mpaaRating": "A String", # Motion Picture Association of America rating for the content.
+ "icaaRating": "A String", # Rating system in Spain - Instituto de Cinematografia y de las Artes Audiovisuales
+ "fmocRating": "A String", # Rating system in France - French Minister of Culture
+ "chvrsRating": "A String", # Canadian Home Video Rating System
+ "rtcRating": "A String", # Rating system in Mexico - General Directorate of Radio, Television and Cinematography
+ "djctqRating": "A String", # Rating system in Brazil - Department of Justice, Rating, Titles and Qualification
+ "oflcRating": "A String", # Rating system in New Zealand - Office of Film and Literature Classification
+ },
"caption": "A String", # The value of captions indicates whether the video has captions or not.
"regionRestriction": { # DEPRECATED Region restriction of the video. # The regionRestriction object contains information about the countries where a video is (or is not) viewable. The object will contain either the contentDetails.regionRestriction.allowed property or the contentDetails.regionRestriction.blocked property.
"blocked": [ # A list of region codes that identify countries where the video is blocked. If this property is present and a country is not listed in its value, then the video is viewable in that country. If this property is present and contains an empty list, the video is viewable in all countries.
@@ -350,34 +487,17 @@
"licensedContent": True or False, # The value of is_license_content indicates whether the video is licensed content.
"dimension": "A String", # The value of dimension indicates whether the video is available in 3D or in 2D.
},
- "suggestions": { # Specifies suggestions on how to improve video content, including encoding hints, tag suggestions, and editor suggestions. # The suggestions object encapsulates suggestions that identify opportunities to improve the video quality or the metadata for the uploaded video. This data can only be retrieved by the video owner.
- "processingErrors": [ # A list of errors that will prevent YouTube from successfully processing the uploaded video video. These errors indicate that, regardless of the video's current processing status, eventually, that status will almost certainly be failed.
- "A String",
- ],
- "tagSuggestions": [ # A list of keyword tags that could be added to the video's metadata to increase the likelihood that users will locate your video when searching or browsing on YouTube.
- { # A single tag suggestion with it's relevance information.
- "categoryRestricts": [ # A set of video categories for which the tag is relevant. You can use this information to display appropriate tag suggestions based on the video category that the video uploader associates with the video. By default, tag suggestions are relevant for all categories if there are no restricts defined for the keyword.
- "A String",
- ],
- "tag": "A String", # The keyword tag suggested for the video.
- },
- ],
- "editorSuggestions": [ # A list of video editing operations that might improve the video quality or playback experience of the uploaded video.
- "A String",
- ],
- "processingWarnings": [ # A list of reasons why YouTube may have difficulty transcoding the uploaded video or that might result in an erroneous transcoding. These warnings are generated before YouTube actually processes the uploaded video file. In addition, they identify issues that are unlikely to cause the video processing to fail but that might cause problems such as sync issues, video artifacts, or a missing audio track.
- "A String",
- ],
- "processingHints": [ # A list of suggestions that may improve YouTube's ability to process the video.
- "A String",
- ],
+ "ageGating": { # Age restriction details related to a video.
+ "restricted": True or False, # Age-restricted trailers. For redband trailers and adult-rated video-games. Only users aged 18+ can view the content. The the field is true the content is restricted to viewers aged 18+. Otherwise The field won't be present.
+ "alcoholContent": True or False, # Indicates whether or not the video has alcoholic beverage content. Only users of legal purchasing age in a particular country, as identified by ICAP, can view the content.
+ "videoGameRating": "A String", # Video game rating, if any.
},
"fileDetails": { # Describes original video file properties, including technical details about audio and video streams, but also metadata information like content length, digitization time, or geotagging information. # The fileDetails object encapsulates information about the video file that was uploaded to YouTube, including the file's resolution, duration, audio and video codecs, stream bitrates, and more. This data can only be retrieved by the video owner.
"bitrateBps": "A String", # The uploaded video file's combined (video and audio) bitrate in bits per second.
"container": "A String", # The uploaded video file's container format.
- "recordingLocation": { # A geoPoint holds geo location information associated with a YouTube resource. # Geographic coordinates that identify the place where the uploaded video was recorded. Coordinates are defined using WGS 84.
+ "recordingLocation": { # Geographical coordinates of a point, in WGS84. # Geographic coordinates that identify the place where the uploaded video was recorded. Coordinates are defined using WGS 84.
"latitude": 3.14, # Latitude in degrees.
- "elevation": 3.14, # Altitude above the Earth, in meters.
+ "altitude": 3.14, # Altitude above the reference ellipsoid, in meters.
"longitude": 3.14, # Longitude in degrees.
},
"fileType": "A String", # The uploaded file's type as detected by YouTube's video processing engine. Currently, YouTube only processes video files, but this field is present whether a video file or another type of file was uploaded.
@@ -431,7 +551,7 @@
"player": { # Player to be used for a video playback. # The player object contains information that you would use to play the video in an embedded player.
"embedHtml": "A String", # An <iframe> tag that embeds a player that will play the video.
},
- "etag": "A String", # The ETag of the video resource.
+ "etag": "A String", # Etag of this resource.
"projectDetails": { # Project specific details about the content of a YouTube Video. # The projectDetails object contains information about the project specific video metadata.
"tags": [ # A list of project tags associated with the video during the upload.
"A String",
@@ -440,37 +560,83 @@
"recordingDetails": { # Recording information associated with the video. # The recordingDetails object encapsulates information about the location, date and address where the video was recorded.
"recordingDate": "A String", # The date and time when the video was recorded. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
"locationDescription": "A String", # The text description of the location where the video was recorded.
- "location": { # A geoPoint holds geo location information associated with a YouTube resource. # The geolocation information associated with the video.
+ "location": { # Geographical coordinates of a point, in WGS84. # The geolocation information associated with the video.
"latitude": 3.14, # Latitude in degrees.
- "elevation": 3.14, # Altitude above the Earth, in meters.
+ "altitude": 3.14, # Altitude above the reference ellipsoid, in meters.
"longitude": 3.14, # Longitude in degrees.
},
},
+ "suggestions": { # Specifies suggestions on how to improve video content, including encoding hints, tag suggestions, and editor suggestions. # The suggestions object encapsulates suggestions that identify opportunities to improve the video quality or the metadata for the uploaded video. This data can only be retrieved by the video owner.
+ "processingErrors": [ # A list of errors that will prevent YouTube from successfully processing the uploaded video video. These errors indicate that, regardless of the video's current processing status, eventually, that status will almost certainly be failed.
+ "A String",
+ ],
+ "tagSuggestions": [ # A list of keyword tags that could be added to the video's metadata to increase the likelihood that users will locate your video when searching or browsing on YouTube.
+ { # A single tag suggestion with it's relevance information.
+ "categoryRestricts": [ # A set of video categories for which the tag is relevant. You can use this information to display appropriate tag suggestions based on the video category that the video uploader associates with the video. By default, tag suggestions are relevant for all categories if there are no restricts defined for the keyword.
+ "A String",
+ ],
+ "tag": "A String", # The keyword tag suggested for the video.
+ },
+ ],
+ "editorSuggestions": [ # A list of video editing operations that might improve the video quality or playback experience of the uploaded video.
+ "A String",
+ ],
+ "processingWarnings": [ # A list of reasons why YouTube may have difficulty transcoding the uploaded video or that might result in an erroneous transcoding. These warnings are generated before YouTube actually processes the uploaded video file. In addition, they identify issues that are unlikely to cause the video processing to fail but that might cause problems such as sync issues, video artifacts, or a missing audio track.
+ "A String",
+ ],
+ "processingHints": [ # A list of suggestions that may improve YouTube's ability to process the video.
+ "A String",
+ ],
+ },
"id": "A String", # The ID that YouTube uses to uniquely identify the video.
+ "conversionPings": { # The conversionPings object encapsulates information about url pings that need to be respected by the App in different video contexts.
+ "pings": [ # Pings that the app shall fire for a video (authenticated by biscotti cookie). Each ping has a context, in which the app must fire the ping, and a url identifying the ping.
+ {
+ "conversionUrl": "A String", # The url (without the schema) that the app shall send the ping to. It's at caller's descretion to decide which schema to use (http vs https) Example of a returned url: //googleads.g.doubleclick.net/pagead/ viewthroughconversion/962985656/?data=path%3DtHe_path%3Btype%3D like%3Butuid%3DGISQtTNGYqaYl4sKxoVvKA%3Bytvid%3DUrIaJUvIQDg&labe=default The caller must append biscotti authentication (ms param in case of mobile, for example) to this ping.
+ "context": "A String", # Defines the context of the ping.
+ },
+ ],
+ },
}</pre>
</div>
<div class="method">
- <code class="details" id="list">list(id, part=None, onBehalfOfContentOwner=None)</code>
+ <code class="details" id="list">list(part=None, pageToken=None, onBehalfOfContentOwner=None, locale=None, chart=None, maxResults=None, videoCategoryId=None, myRating=None, id=None)</code>
<pre>Returns a list of videos that match the API request parameters.
Args:
- id: string, The id parameter specifies a comma-separated list of the YouTube video ID(s) for the resource(s) that are being retrieved. In a video resource, the id property specifies the video's ID. (required)
part: string, The part parameter specifies a comma-separated list of one or more video resource properties that the API response will include. The part names that you can include in the parameter value are id, snippet, contentDetails, player, statistics, status, and topicDetails.
If the parameter identifies a property that contains child properties, the child properties will be included in the response. For example, in a video resource, the snippet property contains the channelId, title, description, tags, and categoryId properties. As such, if you set part=snippet, the API response will contain all of those properties. (required)
- onBehalfOfContentOwner: string, The onBehalfOfContentOwner parameter indicates that the authenticated user is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The actual CMS account that the user authenticates with needs to be linked to the specified YouTube content owner.
+ pageToken: string, USE_DESCRIPTION --- channels:list:pageToken
+ onBehalfOfContentOwner: string, USE_DESCRIPTION --- channels:list:onBehalfOfContentOwner
+ locale: string, The locale parameter selects a video chart available in the specified locale. If using this parameter, chart must also be set. The parameter value is an BCP 47 locale. Supported locales include ar_AE, ar_DZ, ar_EG, ar_JO, ar_MA, ar_SA, ar_TN, ar_YE, cs_CZ, de_DE, el_GR, en_AU, en_BE, en_CA, en_GB, en_GH, en_IE, en_IL, en_IN, en_KE, en_NG, en_NZ, en_SG, en_UG, en_US, en_ZA, es_AR, es_CL, es_CO, es_ES, es_MX, es_PE, fil_PH, fr_FR, hu_HU, id_ID, it_IT, ja_JP, ko_KR, ms_MY, nl_NL, pl_PL, pt_BR, ru_RU, sv_SE, tr_TR, zh_HK, zh_TW
+ chart: string, Set this parameter's value to mostPopular to instruct the API to return videos belonging to the chart of most popular videos.
+ Allowed values
+ mostPopular - Returns videos belonging to most popular video chart.
+ maxResults: integer, USE_DESCRIPTION --- channels:list:maxResults
+ videoCategoryId: string, The videoCategoryId parameter selects a video chart based on the category. If using this parameter, chart must also be set.
+ myRating: string, Set this parameter's value to like or dislike to instruct the API to only return videos liked or disliked by the authenticated user.
+ Allowed values
+ dislike - Returns only videos disliked by the authenticated user.
+ like - Returns only video liked by the authenticated user.
+ id: string, The id parameter specifies a comma-separated list of the YouTube video ID(s) for the resource(s) that are being retrieved. In a video resource, the id property specifies the video's ID.
Returns:
An object of the form:
{ # A paginated list of videos returned as the response to a youtube.videos.list call.
+ "eventId": "A String", # Serialized EventId of the request which produced this response.
+ "nextPageToken": "A String", # The token that can be used as the value of the pageToken parameter to retrieve the next page in the result set.
+ "kind": "youtube#videoListResponse", # The type of the API response. For this operation, the value will be youtube#videoListResponse.
+ "visitorId": "A String", # The visitorId identifies the visitor.
"items": [ # A list of videos that match the request criteria.
{ # A video resource represents a YouTube video.
- "status": { # The status of a video details the video's upload status and privacy status. # The status object contains information about the video's uploading, processing, and privacy statuses.
+ "status": { # Basic details about a video category, such as its localized title. # The status object contains information about the video's uploading, processing, and privacy statuses.
"license": "A String", # The video's license.
"embeddable": True or False, # This value indicates if the video can be embedded on another website.
"privacyStatus": "A String", # The video's privacy status.
+ "publicStatsViewable": True or False, # This value indicates if the extended video statistics on the watch page can be viewed by everyone. Note that the view count, likes, etc will still be visible if this is disabled.
"uploadStatus": "A String", # The status of the uploaded video.
"rejectionReason": "A String", # This value explains why YouTube rejected an uploaded video. This property is only present if the uploadStatus property indicates that the upload was rejected.
"failureReason": "A String", # This value explains why a video failed to upload. This property is only present if the uploadStatus property indicates that the upload failed.
@@ -485,15 +651,35 @@
"channelTitle": "A String", # Channel title for the channel that the video belongs to.
"title": "A String", # The video's title.
"categoryId": "A String", # The YouTube video category associated with the video.
- "thumbnails": { # A map of thumbnail images associated with the video. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
- "a_key": { # A thumbnail is an image representing a YouTube resource. # Name of the thumbnail, to easily identify it. The set of names is dependent on the resource the thumbnail is for.
+ "thumbnails": { # Internal representation of thumbnails for a YouTube resource. # A map of thumbnail images associated with the video. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+ "default": { # A thumbnail is an image representing a YouTube resource. # The default image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "high": { # A thumbnail is an image representing a YouTube resource. # The high quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "medium": { # A thumbnail is an image representing a YouTube resource. # The medium quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "maxres": { # A thumbnail is an image representing a YouTube resource. # The maximum resolution quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "standard": { # A thumbnail is an image representing a YouTube resource. # The standard quality image for this resource.
"url": "A String", # The thumbnail image's URL.
"width": 42, # (Optional) Width of the thumbnail image.
"height": 42, # (Optional) Height of the thumbnail image.
},
},
},
- "kind": "youtube#video", # The type of the API resource. For video resources, the value will be youtube#video.
+ "kind": "youtube#video", # The kind, fixed to "youtube#video".
"statistics": { # Statistics about the video, such as the number of times the video was viewed or liked. # The statistics object contains statistics about the video.
"commentCount": "A String", # The number of comments for the video.
"viewCount": "A String", # The number of times the video has been viewed.
@@ -502,7 +688,10 @@
"likeCount": "A String", # The number of users who have indicated that they liked the video by giving it a positive rating.
},
"topicDetails": { # Freebase topic information related to the video. # The topicDetails object encapsulates information about Freebase topics associated with the video.
- "topicIds": [ # A list of Freebase topic IDs associated with the video. You can retrieve information about each topic using the Freebase Topic API.
+ "topicIds": [ # A list of Freebase topic IDs that are centrally associated with the video. These are topics that are centrally featured in the video, and it can be said that the video is mainly about each of these. You can retrieve information about each topic using the Freebase Topic API.
+ "A String",
+ ],
+ "relevantTopicIds": [ # Similar to topic_id, except that these topics are merely relevant to the video. These are topics that may be mentioned in, or appear in the video. You can retrieve information about each topic using Freebase Topic API.
"A String",
],
},
@@ -522,6 +711,24 @@
],
"allowed": True or False, # The value of allowed indicates whether the access to the policy is allowed or denied by default.
},
+ "contentRating": { # Ratings schemes. The country-specific ratings are mostly for movies and shows. # Specifies the ratings that the video received under various rating schemes.
+ "ytRating": "A String", # Internal YouTube rating.
+ "russiaRating": "A String", # Rating system in Russia
+ "tvpgRating": "A String", # TV Parental Guidelines rating of the content.
+ "cbfcRating": "A String", # Rating system in India - Central Board of Film Certification
+ "acbRating": "A String", # Rating system in Australia - Australian Classification Board
+ "fskRating": "A String", # Rating system in Germany - Voluntary Self Regulation of the Movie Industry
+ "eirinRating": "A String", # Rating system in Japan - Eiga Rinri Kanri Iinkai
+ "bbfcRating": "A String", # British Board of Film Classification
+ "kmrbRating": "A String", # Rating system in South Korea - Korea Media Rating Board
+ "mpaaRating": "A String", # Motion Picture Association of America rating for the content.
+ "icaaRating": "A String", # Rating system in Spain - Instituto de Cinematografia y de las Artes Audiovisuales
+ "fmocRating": "A String", # Rating system in France - French Minister of Culture
+ "chvrsRating": "A String", # Canadian Home Video Rating System
+ "rtcRating": "A String", # Rating system in Mexico - General Directorate of Radio, Television and Cinematography
+ "djctqRating": "A String", # Rating system in Brazil - Department of Justice, Rating, Titles and Qualification
+ "oflcRating": "A String", # Rating system in New Zealand - Office of Film and Literature Classification
+ },
"caption": "A String", # The value of captions indicates whether the video has captions or not.
"regionRestriction": { # DEPRECATED Region restriction of the video. # The regionRestriction object contains information about the countries where a video is (or is not) viewable. The object will contain either the contentDetails.regionRestriction.allowed property or the contentDetails.regionRestriction.blocked property.
"blocked": [ # A list of region codes that identify countries where the video is blocked. If this property is present and a country is not listed in its value, then the video is viewable in that country. If this property is present and contains an empty list, the video is viewable in all countries.
@@ -535,34 +742,17 @@
"licensedContent": True or False, # The value of is_license_content indicates whether the video is licensed content.
"dimension": "A String", # The value of dimension indicates whether the video is available in 3D or in 2D.
},
- "suggestions": { # Specifies suggestions on how to improve video content, including encoding hints, tag suggestions, and editor suggestions. # The suggestions object encapsulates suggestions that identify opportunities to improve the video quality or the metadata for the uploaded video. This data can only be retrieved by the video owner.
- "processingErrors": [ # A list of errors that will prevent YouTube from successfully processing the uploaded video video. These errors indicate that, regardless of the video's current processing status, eventually, that status will almost certainly be failed.
- "A String",
- ],
- "tagSuggestions": [ # A list of keyword tags that could be added to the video's metadata to increase the likelihood that users will locate your video when searching or browsing on YouTube.
- { # A single tag suggestion with it's relevance information.
- "categoryRestricts": [ # A set of video categories for which the tag is relevant. You can use this information to display appropriate tag suggestions based on the video category that the video uploader associates with the video. By default, tag suggestions are relevant for all categories if there are no restricts defined for the keyword.
- "A String",
- ],
- "tag": "A String", # The keyword tag suggested for the video.
- },
- ],
- "editorSuggestions": [ # A list of video editing operations that might improve the video quality or playback experience of the uploaded video.
- "A String",
- ],
- "processingWarnings": [ # A list of reasons why YouTube may have difficulty transcoding the uploaded video or that might result in an erroneous transcoding. These warnings are generated before YouTube actually processes the uploaded video file. In addition, they identify issues that are unlikely to cause the video processing to fail but that might cause problems such as sync issues, video artifacts, or a missing audio track.
- "A String",
- ],
- "processingHints": [ # A list of suggestions that may improve YouTube's ability to process the video.
- "A String",
- ],
+ "ageGating": { # Age restriction details related to a video.
+ "restricted": True or False, # Age-restricted trailers. For redband trailers and adult-rated video-games. Only users aged 18+ can view the content. The the field is true the content is restricted to viewers aged 18+. Otherwise The field won't be present.
+ "alcoholContent": True or False, # Indicates whether or not the video has alcoholic beverage content. Only users of legal purchasing age in a particular country, as identified by ICAP, can view the content.
+ "videoGameRating": "A String", # Video game rating, if any.
},
"fileDetails": { # Describes original video file properties, including technical details about audio and video streams, but also metadata information like content length, digitization time, or geotagging information. # The fileDetails object encapsulates information about the video file that was uploaded to YouTube, including the file's resolution, duration, audio and video codecs, stream bitrates, and more. This data can only be retrieved by the video owner.
"bitrateBps": "A String", # The uploaded video file's combined (video and audio) bitrate in bits per second.
"container": "A String", # The uploaded video file's container format.
- "recordingLocation": { # A geoPoint holds geo location information associated with a YouTube resource. # Geographic coordinates that identify the place where the uploaded video was recorded. Coordinates are defined using WGS 84.
+ "recordingLocation": { # Geographical coordinates of a point, in WGS84. # Geographic coordinates that identify the place where the uploaded video was recorded. Coordinates are defined using WGS 84.
"latitude": 3.14, # Latitude in degrees.
- "elevation": 3.14, # Altitude above the Earth, in meters.
+ "altitude": 3.14, # Altitude above the reference ellipsoid, in meters.
"longitude": 3.14, # Longitude in degrees.
},
"fileType": "A String", # The uploaded file's type as detected by YouTube's video processing engine. Currently, YouTube only processes video files, but this field is present whether a video file or another type of file was uploaded.
@@ -616,7 +806,7 @@
"player": { # Player to be used for a video playback. # The player object contains information that you would use to play the video in an embedded player.
"embedHtml": "A String", # An <iframe> tag that embeds a player that will play the video.
},
- "etag": "A String", # The ETag of the video resource.
+ "etag": "A String", # Etag of this resource.
"projectDetails": { # Project specific details about the content of a YouTube Video. # The projectDetails object contains information about the project specific video metadata.
"tags": [ # A list of project tags associated with the video during the upload.
"A String",
@@ -625,21 +815,84 @@
"recordingDetails": { # Recording information associated with the video. # The recordingDetails object encapsulates information about the location, date and address where the video was recorded.
"recordingDate": "A String", # The date and time when the video was recorded. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
"locationDescription": "A String", # The text description of the location where the video was recorded.
- "location": { # A geoPoint holds geo location information associated with a YouTube resource. # The geolocation information associated with the video.
+ "location": { # Geographical coordinates of a point, in WGS84. # The geolocation information associated with the video.
"latitude": 3.14, # Latitude in degrees.
- "elevation": 3.14, # Altitude above the Earth, in meters.
+ "altitude": 3.14, # Altitude above the reference ellipsoid, in meters.
"longitude": 3.14, # Longitude in degrees.
},
},
+ "suggestions": { # Specifies suggestions on how to improve video content, including encoding hints, tag suggestions, and editor suggestions. # The suggestions object encapsulates suggestions that identify opportunities to improve the video quality or the metadata for the uploaded video. This data can only be retrieved by the video owner.
+ "processingErrors": [ # A list of errors that will prevent YouTube from successfully processing the uploaded video video. These errors indicate that, regardless of the video's current processing status, eventually, that status will almost certainly be failed.
+ "A String",
+ ],
+ "tagSuggestions": [ # A list of keyword tags that could be added to the video's metadata to increase the likelihood that users will locate your video when searching or browsing on YouTube.
+ { # A single tag suggestion with it's relevance information.
+ "categoryRestricts": [ # A set of video categories for which the tag is relevant. You can use this information to display appropriate tag suggestions based on the video category that the video uploader associates with the video. By default, tag suggestions are relevant for all categories if there are no restricts defined for the keyword.
+ "A String",
+ ],
+ "tag": "A String", # The keyword tag suggested for the video.
+ },
+ ],
+ "editorSuggestions": [ # A list of video editing operations that might improve the video quality or playback experience of the uploaded video.
+ "A String",
+ ],
+ "processingWarnings": [ # A list of reasons why YouTube may have difficulty transcoding the uploaded video or that might result in an erroneous transcoding. These warnings are generated before YouTube actually processes the uploaded video file. In addition, they identify issues that are unlikely to cause the video processing to fail but that might cause problems such as sync issues, video artifacts, or a missing audio track.
+ "A String",
+ ],
+ "processingHints": [ # A list of suggestions that may improve YouTube's ability to process the video.
+ "A String",
+ ],
+ },
"id": "A String", # The ID that YouTube uses to uniquely identify the video.
+ "conversionPings": { # The conversionPings object encapsulates information about url pings that need to be respected by the App in different video contexts.
+ "pings": [ # Pings that the app shall fire for a video (authenticated by biscotti cookie). Each ping has a context, in which the app must fire the ping, and a url identifying the ping.
+ {
+ "conversionUrl": "A String", # The url (without the schema) that the app shall send the ping to. It's at caller's descretion to decide which schema to use (http vs https) Example of a returned url: //googleads.g.doubleclick.net/pagead/ viewthroughconversion/962985656/?data=path%3DtHe_path%3Btype%3D like%3Butuid%3DGISQtTNGYqaYl4sKxoVvKA%3Bytvid%3DUrIaJUvIQDg&labe=default The caller must append biscotti authentication (ms param in case of mobile, for example) to this ping.
+ "context": "A String", # Defines the context of the ping.
+ },
+ ],
+ },
},
],
- "kind": "youtube#videoListResponse", # The type of the API response. For this operation, the value will be youtube#videoListResponse.
"etag": "A String", # The ETag of the response.
+ "prevPageToken": "A String", # The token that can be used as the value of the pageToken parameter to retrieve the previous page in the result set.
+ "pageInfo": { # Paging details for lists of resources, including total number of items available and number of resources returned in a single page. # The pageInfo object encapsulates paging information for the result set.
+ "totalResults": 42, # The total number of results in the result set.
+ "resultsPerPage": 42, # The number of results included in the API response.
+ },
}</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="rate">rate(id, rating, onBehalfOfContentOwner=None)</code>
+ <pre>Like, dislike, or remove rating from a video.
+
+Args:
+ id: string, The id parameter specifies the YouTube video ID. (required)
+ rating: string, Specifies the rating to record. (required)
+ Allowed values
+ dislike - Records that the authenticated user disliked the video.
+ like - Records that the authenticated user liked the video.
+ none - Removes any vote (like or dislike) the authenticated user had for the video.
+ onBehalfOfContentOwner: string, USE_DESCRIPTION --- channels:list:onBehalfOfContentOwner
+</pre>
+</div>
+
+<div class="method">
<code class="details" id="update">update(part=None, body, onBehalfOfContentOwner=None)</code>
<pre>Updates a video's metadata.
@@ -655,10 +908,11 @@
The object takes the form of:
{ # A video resource represents a YouTube video.
- "status": { # The status of a video details the video's upload status and privacy status. # The status object contains information about the video's uploading, processing, and privacy statuses.
+ "status": { # Basic details about a video category, such as its localized title. # The status object contains information about the video's uploading, processing, and privacy statuses.
"license": "A String", # The video's license.
"embeddable": True or False, # This value indicates if the video can be embedded on another website.
"privacyStatus": "A String", # The video's privacy status.
+ "publicStatsViewable": True or False, # This value indicates if the extended video statistics on the watch page can be viewed by everyone. Note that the view count, likes, etc will still be visible if this is disabled.
"uploadStatus": "A String", # The status of the uploaded video.
"rejectionReason": "A String", # This value explains why YouTube rejected an uploaded video. This property is only present if the uploadStatus property indicates that the upload was rejected.
"failureReason": "A String", # This value explains why a video failed to upload. This property is only present if the uploadStatus property indicates that the upload failed.
@@ -673,15 +927,35 @@
"channelTitle": "A String", # Channel title for the channel that the video belongs to.
"title": "A String", # The video's title.
"categoryId": "A String", # The YouTube video category associated with the video.
- "thumbnails": { # A map of thumbnail images associated with the video. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
- "a_key": { # A thumbnail is an image representing a YouTube resource. # Name of the thumbnail, to easily identify it. The set of names is dependent on the resource the thumbnail is for.
+ "thumbnails": { # Internal representation of thumbnails for a YouTube resource. # A map of thumbnail images associated with the video. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+ "default": { # A thumbnail is an image representing a YouTube resource. # The default image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "high": { # A thumbnail is an image representing a YouTube resource. # The high quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "medium": { # A thumbnail is an image representing a YouTube resource. # The medium quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "maxres": { # A thumbnail is an image representing a YouTube resource. # The maximum resolution quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "standard": { # A thumbnail is an image representing a YouTube resource. # The standard quality image for this resource.
"url": "A String", # The thumbnail image's URL.
"width": 42, # (Optional) Width of the thumbnail image.
"height": 42, # (Optional) Height of the thumbnail image.
},
},
},
- "kind": "youtube#video", # The type of the API resource. For video resources, the value will be youtube#video.
+ "kind": "youtube#video", # The kind, fixed to "youtube#video".
"statistics": { # Statistics about the video, such as the number of times the video was viewed or liked. # The statistics object contains statistics about the video.
"commentCount": "A String", # The number of comments for the video.
"viewCount": "A String", # The number of times the video has been viewed.
@@ -690,7 +964,10 @@
"likeCount": "A String", # The number of users who have indicated that they liked the video by giving it a positive rating.
},
"topicDetails": { # Freebase topic information related to the video. # The topicDetails object encapsulates information about Freebase topics associated with the video.
- "topicIds": [ # A list of Freebase topic IDs associated with the video. You can retrieve information about each topic using the Freebase Topic API.
+ "topicIds": [ # A list of Freebase topic IDs that are centrally associated with the video. These are topics that are centrally featured in the video, and it can be said that the video is mainly about each of these. You can retrieve information about each topic using the Freebase Topic API.
+ "A String",
+ ],
+ "relevantTopicIds": [ # Similar to topic_id, except that these topics are merely relevant to the video. These are topics that may be mentioned in, or appear in the video. You can retrieve information about each topic using Freebase Topic API.
"A String",
],
},
@@ -710,6 +987,24 @@
],
"allowed": True or False, # The value of allowed indicates whether the access to the policy is allowed or denied by default.
},
+ "contentRating": { # Ratings schemes. The country-specific ratings are mostly for movies and shows. # Specifies the ratings that the video received under various rating schemes.
+ "ytRating": "A String", # Internal YouTube rating.
+ "russiaRating": "A String", # Rating system in Russia
+ "tvpgRating": "A String", # TV Parental Guidelines rating of the content.
+ "cbfcRating": "A String", # Rating system in India - Central Board of Film Certification
+ "acbRating": "A String", # Rating system in Australia - Australian Classification Board
+ "fskRating": "A String", # Rating system in Germany - Voluntary Self Regulation of the Movie Industry
+ "eirinRating": "A String", # Rating system in Japan - Eiga Rinri Kanri Iinkai
+ "bbfcRating": "A String", # British Board of Film Classification
+ "kmrbRating": "A String", # Rating system in South Korea - Korea Media Rating Board
+ "mpaaRating": "A String", # Motion Picture Association of America rating for the content.
+ "icaaRating": "A String", # Rating system in Spain - Instituto de Cinematografia y de las Artes Audiovisuales
+ "fmocRating": "A String", # Rating system in France - French Minister of Culture
+ "chvrsRating": "A String", # Canadian Home Video Rating System
+ "rtcRating": "A String", # Rating system in Mexico - General Directorate of Radio, Television and Cinematography
+ "djctqRating": "A String", # Rating system in Brazil - Department of Justice, Rating, Titles and Qualification
+ "oflcRating": "A String", # Rating system in New Zealand - Office of Film and Literature Classification
+ },
"caption": "A String", # The value of captions indicates whether the video has captions or not.
"regionRestriction": { # DEPRECATED Region restriction of the video. # The regionRestriction object contains information about the countries where a video is (or is not) viewable. The object will contain either the contentDetails.regionRestriction.allowed property or the contentDetails.regionRestriction.blocked property.
"blocked": [ # A list of region codes that identify countries where the video is blocked. If this property is present and a country is not listed in its value, then the video is viewable in that country. If this property is present and contains an empty list, the video is viewable in all countries.
@@ -723,34 +1018,17 @@
"licensedContent": True or False, # The value of is_license_content indicates whether the video is licensed content.
"dimension": "A String", # The value of dimension indicates whether the video is available in 3D or in 2D.
},
- "suggestions": { # Specifies suggestions on how to improve video content, including encoding hints, tag suggestions, and editor suggestions. # The suggestions object encapsulates suggestions that identify opportunities to improve the video quality or the metadata for the uploaded video. This data can only be retrieved by the video owner.
- "processingErrors": [ # A list of errors that will prevent YouTube from successfully processing the uploaded video video. These errors indicate that, regardless of the video's current processing status, eventually, that status will almost certainly be failed.
- "A String",
- ],
- "tagSuggestions": [ # A list of keyword tags that could be added to the video's metadata to increase the likelihood that users will locate your video when searching or browsing on YouTube.
- { # A single tag suggestion with it's relevance information.
- "categoryRestricts": [ # A set of video categories for which the tag is relevant. You can use this information to display appropriate tag suggestions based on the video category that the video uploader associates with the video. By default, tag suggestions are relevant for all categories if there are no restricts defined for the keyword.
- "A String",
- ],
- "tag": "A String", # The keyword tag suggested for the video.
- },
- ],
- "editorSuggestions": [ # A list of video editing operations that might improve the video quality or playback experience of the uploaded video.
- "A String",
- ],
- "processingWarnings": [ # A list of reasons why YouTube may have difficulty transcoding the uploaded video or that might result in an erroneous transcoding. These warnings are generated before YouTube actually processes the uploaded video file. In addition, they identify issues that are unlikely to cause the video processing to fail but that might cause problems such as sync issues, video artifacts, or a missing audio track.
- "A String",
- ],
- "processingHints": [ # A list of suggestions that may improve YouTube's ability to process the video.
- "A String",
- ],
+ "ageGating": { # Age restriction details related to a video.
+ "restricted": True or False, # Age-restricted trailers. For redband trailers and adult-rated video-games. Only users aged 18+ can view the content. The the field is true the content is restricted to viewers aged 18+. Otherwise The field won't be present.
+ "alcoholContent": True or False, # Indicates whether or not the video has alcoholic beverage content. Only users of legal purchasing age in a particular country, as identified by ICAP, can view the content.
+ "videoGameRating": "A String", # Video game rating, if any.
},
"fileDetails": { # Describes original video file properties, including technical details about audio and video streams, but also metadata information like content length, digitization time, or geotagging information. # The fileDetails object encapsulates information about the video file that was uploaded to YouTube, including the file's resolution, duration, audio and video codecs, stream bitrates, and more. This data can only be retrieved by the video owner.
"bitrateBps": "A String", # The uploaded video file's combined (video and audio) bitrate in bits per second.
"container": "A String", # The uploaded video file's container format.
- "recordingLocation": { # A geoPoint holds geo location information associated with a YouTube resource. # Geographic coordinates that identify the place where the uploaded video was recorded. Coordinates are defined using WGS 84.
+ "recordingLocation": { # Geographical coordinates of a point, in WGS84. # Geographic coordinates that identify the place where the uploaded video was recorded. Coordinates are defined using WGS 84.
"latitude": 3.14, # Latitude in degrees.
- "elevation": 3.14, # Altitude above the Earth, in meters.
+ "altitude": 3.14, # Altitude above the reference ellipsoid, in meters.
"longitude": 3.14, # Longitude in degrees.
},
"fileType": "A String", # The uploaded file's type as detected by YouTube's video processing engine. Currently, YouTube only processes video files, but this field is present whether a video file or another type of file was uploaded.
@@ -804,7 +1082,7 @@
"player": { # Player to be used for a video playback. # The player object contains information that you would use to play the video in an embedded player.
"embedHtml": "A String", # An <iframe> tag that embeds a player that will play the video.
},
- "etag": "A String", # The ETag of the video resource.
+ "etag": "A String", # Etag of this resource.
"projectDetails": { # Project specific details about the content of a YouTube Video. # The projectDetails object contains information about the project specific video metadata.
"tags": [ # A list of project tags associated with the video during the upload.
"A String",
@@ -813,25 +1091,56 @@
"recordingDetails": { # Recording information associated with the video. # The recordingDetails object encapsulates information about the location, date and address where the video was recorded.
"recordingDate": "A String", # The date and time when the video was recorded. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
"locationDescription": "A String", # The text description of the location where the video was recorded.
- "location": { # A geoPoint holds geo location information associated with a YouTube resource. # The geolocation information associated with the video.
+ "location": { # Geographical coordinates of a point, in WGS84. # The geolocation information associated with the video.
"latitude": 3.14, # Latitude in degrees.
- "elevation": 3.14, # Altitude above the Earth, in meters.
+ "altitude": 3.14, # Altitude above the reference ellipsoid, in meters.
"longitude": 3.14, # Longitude in degrees.
},
},
+ "suggestions": { # Specifies suggestions on how to improve video content, including encoding hints, tag suggestions, and editor suggestions. # The suggestions object encapsulates suggestions that identify opportunities to improve the video quality or the metadata for the uploaded video. This data can only be retrieved by the video owner.
+ "processingErrors": [ # A list of errors that will prevent YouTube from successfully processing the uploaded video video. These errors indicate that, regardless of the video's current processing status, eventually, that status will almost certainly be failed.
+ "A String",
+ ],
+ "tagSuggestions": [ # A list of keyword tags that could be added to the video's metadata to increase the likelihood that users will locate your video when searching or browsing on YouTube.
+ { # A single tag suggestion with it's relevance information.
+ "categoryRestricts": [ # A set of video categories for which the tag is relevant. You can use this information to display appropriate tag suggestions based on the video category that the video uploader associates with the video. By default, tag suggestions are relevant for all categories if there are no restricts defined for the keyword.
+ "A String",
+ ],
+ "tag": "A String", # The keyword tag suggested for the video.
+ },
+ ],
+ "editorSuggestions": [ # A list of video editing operations that might improve the video quality or playback experience of the uploaded video.
+ "A String",
+ ],
+ "processingWarnings": [ # A list of reasons why YouTube may have difficulty transcoding the uploaded video or that might result in an erroneous transcoding. These warnings are generated before YouTube actually processes the uploaded video file. In addition, they identify issues that are unlikely to cause the video processing to fail but that might cause problems such as sync issues, video artifacts, or a missing audio track.
+ "A String",
+ ],
+ "processingHints": [ # A list of suggestions that may improve YouTube's ability to process the video.
+ "A String",
+ ],
+ },
"id": "A String", # The ID that YouTube uses to uniquely identify the video.
+ "conversionPings": { # The conversionPings object encapsulates information about url pings that need to be respected by the App in different video contexts.
+ "pings": [ # Pings that the app shall fire for a video (authenticated by biscotti cookie). Each ping has a context, in which the app must fire the ping, and a url identifying the ping.
+ {
+ "conversionUrl": "A String", # The url (without the schema) that the app shall send the ping to. It's at caller's descretion to decide which schema to use (http vs https) Example of a returned url: //googleads.g.doubleclick.net/pagead/ viewthroughconversion/962985656/?data=path%3DtHe_path%3Btype%3D like%3Butuid%3DGISQtTNGYqaYl4sKxoVvKA%3Bytvid%3DUrIaJUvIQDg&labe=default The caller must append biscotti authentication (ms param in case of mobile, for example) to this ping.
+ "context": "A String", # Defines the context of the ping.
+ },
+ ],
+ },
}
- onBehalfOfContentOwner: string, The onBehalfOfContentOwner parameter indicates that the authenticated user is acting on behalf of the content owner specified in the parameter value. This parameter is intended for YouTube content partners that own and manage many different YouTube channels. It allows content owners to authenticate once and get access to all their video and channel data, without having to provide authentication credentials for each individual channel. The actual CMS account that the user authenticates with needs to be linked to the specified YouTube content owner.
+ onBehalfOfContentOwner: string, USE_DESCRIPTION --- channels:list:onBehalfOfContentOwner
Returns:
An object of the form:
{ # A video resource represents a YouTube video.
- "status": { # The status of a video details the video's upload status and privacy status. # The status object contains information about the video's uploading, processing, and privacy statuses.
+ "status": { # Basic details about a video category, such as its localized title. # The status object contains information about the video's uploading, processing, and privacy statuses.
"license": "A String", # The video's license.
"embeddable": True or False, # This value indicates if the video can be embedded on another website.
"privacyStatus": "A String", # The video's privacy status.
+ "publicStatsViewable": True or False, # This value indicates if the extended video statistics on the watch page can be viewed by everyone. Note that the view count, likes, etc will still be visible if this is disabled.
"uploadStatus": "A String", # The status of the uploaded video.
"rejectionReason": "A String", # This value explains why YouTube rejected an uploaded video. This property is only present if the uploadStatus property indicates that the upload was rejected.
"failureReason": "A String", # This value explains why a video failed to upload. This property is only present if the uploadStatus property indicates that the upload failed.
@@ -846,15 +1155,35 @@
"channelTitle": "A String", # Channel title for the channel that the video belongs to.
"title": "A String", # The video's title.
"categoryId": "A String", # The YouTube video category associated with the video.
- "thumbnails": { # A map of thumbnail images associated with the video. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
- "a_key": { # A thumbnail is an image representing a YouTube resource. # Name of the thumbnail, to easily identify it. The set of names is dependent on the resource the thumbnail is for.
+ "thumbnails": { # Internal representation of thumbnails for a YouTube resource. # A map of thumbnail images associated with the video. For each object in the map, the key is the name of the thumbnail image, and the value is an object that contains other information about the thumbnail.
+ "default": { # A thumbnail is an image representing a YouTube resource. # The default image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "high": { # A thumbnail is an image representing a YouTube resource. # The high quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "medium": { # A thumbnail is an image representing a YouTube resource. # The medium quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "maxres": { # A thumbnail is an image representing a YouTube resource. # The maximum resolution quality image for this resource.
+ "url": "A String", # The thumbnail image's URL.
+ "width": 42, # (Optional) Width of the thumbnail image.
+ "height": 42, # (Optional) Height of the thumbnail image.
+ },
+ "standard": { # A thumbnail is an image representing a YouTube resource. # The standard quality image for this resource.
"url": "A String", # The thumbnail image's URL.
"width": 42, # (Optional) Width of the thumbnail image.
"height": 42, # (Optional) Height of the thumbnail image.
},
},
},
- "kind": "youtube#video", # The type of the API resource. For video resources, the value will be youtube#video.
+ "kind": "youtube#video", # The kind, fixed to "youtube#video".
"statistics": { # Statistics about the video, such as the number of times the video was viewed or liked. # The statistics object contains statistics about the video.
"commentCount": "A String", # The number of comments for the video.
"viewCount": "A String", # The number of times the video has been viewed.
@@ -863,7 +1192,10 @@
"likeCount": "A String", # The number of users who have indicated that they liked the video by giving it a positive rating.
},
"topicDetails": { # Freebase topic information related to the video. # The topicDetails object encapsulates information about Freebase topics associated with the video.
- "topicIds": [ # A list of Freebase topic IDs associated with the video. You can retrieve information about each topic using the Freebase Topic API.
+ "topicIds": [ # A list of Freebase topic IDs that are centrally associated with the video. These are topics that are centrally featured in the video, and it can be said that the video is mainly about each of these. You can retrieve information about each topic using the Freebase Topic API.
+ "A String",
+ ],
+ "relevantTopicIds": [ # Similar to topic_id, except that these topics are merely relevant to the video. These are topics that may be mentioned in, or appear in the video. You can retrieve information about each topic using Freebase Topic API.
"A String",
],
},
@@ -883,6 +1215,24 @@
],
"allowed": True or False, # The value of allowed indicates whether the access to the policy is allowed or denied by default.
},
+ "contentRating": { # Ratings schemes. The country-specific ratings are mostly for movies and shows. # Specifies the ratings that the video received under various rating schemes.
+ "ytRating": "A String", # Internal YouTube rating.
+ "russiaRating": "A String", # Rating system in Russia
+ "tvpgRating": "A String", # TV Parental Guidelines rating of the content.
+ "cbfcRating": "A String", # Rating system in India - Central Board of Film Certification
+ "acbRating": "A String", # Rating system in Australia - Australian Classification Board
+ "fskRating": "A String", # Rating system in Germany - Voluntary Self Regulation of the Movie Industry
+ "eirinRating": "A String", # Rating system in Japan - Eiga Rinri Kanri Iinkai
+ "bbfcRating": "A String", # British Board of Film Classification
+ "kmrbRating": "A String", # Rating system in South Korea - Korea Media Rating Board
+ "mpaaRating": "A String", # Motion Picture Association of America rating for the content.
+ "icaaRating": "A String", # Rating system in Spain - Instituto de Cinematografia y de las Artes Audiovisuales
+ "fmocRating": "A String", # Rating system in France - French Minister of Culture
+ "chvrsRating": "A String", # Canadian Home Video Rating System
+ "rtcRating": "A String", # Rating system in Mexico - General Directorate of Radio, Television and Cinematography
+ "djctqRating": "A String", # Rating system in Brazil - Department of Justice, Rating, Titles and Qualification
+ "oflcRating": "A String", # Rating system in New Zealand - Office of Film and Literature Classification
+ },
"caption": "A String", # The value of captions indicates whether the video has captions or not.
"regionRestriction": { # DEPRECATED Region restriction of the video. # The regionRestriction object contains information about the countries where a video is (or is not) viewable. The object will contain either the contentDetails.regionRestriction.allowed property or the contentDetails.regionRestriction.blocked property.
"blocked": [ # A list of region codes that identify countries where the video is blocked. If this property is present and a country is not listed in its value, then the video is viewable in that country. If this property is present and contains an empty list, the video is viewable in all countries.
@@ -896,34 +1246,17 @@
"licensedContent": True or False, # The value of is_license_content indicates whether the video is licensed content.
"dimension": "A String", # The value of dimension indicates whether the video is available in 3D or in 2D.
},
- "suggestions": { # Specifies suggestions on how to improve video content, including encoding hints, tag suggestions, and editor suggestions. # The suggestions object encapsulates suggestions that identify opportunities to improve the video quality or the metadata for the uploaded video. This data can only be retrieved by the video owner.
- "processingErrors": [ # A list of errors that will prevent YouTube from successfully processing the uploaded video video. These errors indicate that, regardless of the video's current processing status, eventually, that status will almost certainly be failed.
- "A String",
- ],
- "tagSuggestions": [ # A list of keyword tags that could be added to the video's metadata to increase the likelihood that users will locate your video when searching or browsing on YouTube.
- { # A single tag suggestion with it's relevance information.
- "categoryRestricts": [ # A set of video categories for which the tag is relevant. You can use this information to display appropriate tag suggestions based on the video category that the video uploader associates with the video. By default, tag suggestions are relevant for all categories if there are no restricts defined for the keyword.
- "A String",
- ],
- "tag": "A String", # The keyword tag suggested for the video.
- },
- ],
- "editorSuggestions": [ # A list of video editing operations that might improve the video quality or playback experience of the uploaded video.
- "A String",
- ],
- "processingWarnings": [ # A list of reasons why YouTube may have difficulty transcoding the uploaded video or that might result in an erroneous transcoding. These warnings are generated before YouTube actually processes the uploaded video file. In addition, they identify issues that are unlikely to cause the video processing to fail but that might cause problems such as sync issues, video artifacts, or a missing audio track.
- "A String",
- ],
- "processingHints": [ # A list of suggestions that may improve YouTube's ability to process the video.
- "A String",
- ],
+ "ageGating": { # Age restriction details related to a video.
+ "restricted": True or False, # Age-restricted trailers. For redband trailers and adult-rated video-games. Only users aged 18+ can view the content. The the field is true the content is restricted to viewers aged 18+. Otherwise The field won't be present.
+ "alcoholContent": True or False, # Indicates whether or not the video has alcoholic beverage content. Only users of legal purchasing age in a particular country, as identified by ICAP, can view the content.
+ "videoGameRating": "A String", # Video game rating, if any.
},
"fileDetails": { # Describes original video file properties, including technical details about audio and video streams, but also metadata information like content length, digitization time, or geotagging information. # The fileDetails object encapsulates information about the video file that was uploaded to YouTube, including the file's resolution, duration, audio and video codecs, stream bitrates, and more. This data can only be retrieved by the video owner.
"bitrateBps": "A String", # The uploaded video file's combined (video and audio) bitrate in bits per second.
"container": "A String", # The uploaded video file's container format.
- "recordingLocation": { # A geoPoint holds geo location information associated with a YouTube resource. # Geographic coordinates that identify the place where the uploaded video was recorded. Coordinates are defined using WGS 84.
+ "recordingLocation": { # Geographical coordinates of a point, in WGS84. # Geographic coordinates that identify the place where the uploaded video was recorded. Coordinates are defined using WGS 84.
"latitude": 3.14, # Latitude in degrees.
- "elevation": 3.14, # Altitude above the Earth, in meters.
+ "altitude": 3.14, # Altitude above the reference ellipsoid, in meters.
"longitude": 3.14, # Longitude in degrees.
},
"fileType": "A String", # The uploaded file's type as detected by YouTube's video processing engine. Currently, YouTube only processes video files, but this field is present whether a video file or another type of file was uploaded.
@@ -977,7 +1310,7 @@
"player": { # Player to be used for a video playback. # The player object contains information that you would use to play the video in an embedded player.
"embedHtml": "A String", # An <iframe> tag that embeds a player that will play the video.
},
- "etag": "A String", # The ETag of the video resource.
+ "etag": "A String", # Etag of this resource.
"projectDetails": { # Project specific details about the content of a YouTube Video. # The projectDetails object contains information about the project specific video metadata.
"tags": [ # A list of project tags associated with the video during the upload.
"A String",
@@ -986,13 +1319,43 @@
"recordingDetails": { # Recording information associated with the video. # The recordingDetails object encapsulates information about the location, date and address where the video was recorded.
"recordingDate": "A String", # The date and time when the video was recorded. The value is specified in ISO 8601 (YYYY-MM-DDThh:mm:ss.sZ) format.
"locationDescription": "A String", # The text description of the location where the video was recorded.
- "location": { # A geoPoint holds geo location information associated with a YouTube resource. # The geolocation information associated with the video.
+ "location": { # Geographical coordinates of a point, in WGS84. # The geolocation information associated with the video.
"latitude": 3.14, # Latitude in degrees.
- "elevation": 3.14, # Altitude above the Earth, in meters.
+ "altitude": 3.14, # Altitude above the reference ellipsoid, in meters.
"longitude": 3.14, # Longitude in degrees.
},
},
+ "suggestions": { # Specifies suggestions on how to improve video content, including encoding hints, tag suggestions, and editor suggestions. # The suggestions object encapsulates suggestions that identify opportunities to improve the video quality or the metadata for the uploaded video. This data can only be retrieved by the video owner.
+ "processingErrors": [ # A list of errors that will prevent YouTube from successfully processing the uploaded video video. These errors indicate that, regardless of the video's current processing status, eventually, that status will almost certainly be failed.
+ "A String",
+ ],
+ "tagSuggestions": [ # A list of keyword tags that could be added to the video's metadata to increase the likelihood that users will locate your video when searching or browsing on YouTube.
+ { # A single tag suggestion with it's relevance information.
+ "categoryRestricts": [ # A set of video categories for which the tag is relevant. You can use this information to display appropriate tag suggestions based on the video category that the video uploader associates with the video. By default, tag suggestions are relevant for all categories if there are no restricts defined for the keyword.
+ "A String",
+ ],
+ "tag": "A String", # The keyword tag suggested for the video.
+ },
+ ],
+ "editorSuggestions": [ # A list of video editing operations that might improve the video quality or playback experience of the uploaded video.
+ "A String",
+ ],
+ "processingWarnings": [ # A list of reasons why YouTube may have difficulty transcoding the uploaded video or that might result in an erroneous transcoding. These warnings are generated before YouTube actually processes the uploaded video file. In addition, they identify issues that are unlikely to cause the video processing to fail but that might cause problems such as sync issues, video artifacts, or a missing audio track.
+ "A String",
+ ],
+ "processingHints": [ # A list of suggestions that may improve YouTube's ability to process the video.
+ "A String",
+ ],
+ },
"id": "A String", # The ID that YouTube uses to uniquely identify the video.
+ "conversionPings": { # The conversionPings object encapsulates information about url pings that need to be respected by the App in different video contexts.
+ "pings": [ # Pings that the app shall fire for a video (authenticated by biscotti cookie). Each ping has a context, in which the app must fire the ping, and a url identifying the ping.
+ {
+ "conversionUrl": "A String", # The url (without the schema) that the app shall send the ping to. It's at caller's descretion to decide which schema to use (http vs https) Example of a returned url: //googleads.g.doubleclick.net/pagead/ viewthroughconversion/962985656/?data=path%3DtHe_path%3Btype%3D like%3Butuid%3DGISQtTNGYqaYl4sKxoVvKA%3Bytvid%3DUrIaJUvIQDg&labe=default The caller must append biscotti authentication (ms param in case of mobile, for example) to this ping.
+ "context": "A String", # Defines the context of the ping.
+ },
+ ],
+ },
}</pre>
</div>
diff --git a/docs/epy/api-objects.txt b/docs/epy/api-objects.txt
index 5a5f9bb..31c7f45 100644
--- a/docs/epy/api-objects.txt
+++ b/docs/epy/api-objects.txt
@@ -1,4 +1,15 @@
apiclient apiclient-module.html
+apiclient.channel apiclient.channel-module.html
+apiclient.channel.CHANNEL_PARAMS apiclient.channel-module.html#CHANNEL_PARAMS
+apiclient.channel.notification_from_headers apiclient.channel-module.html#notification_from_headers
+apiclient.channel._upper_header_keys apiclient.channel-module.html#_upper_header_keys
+apiclient.channel.X_GOOG_RESOURCE_STATE apiclient.channel-module.html#X_GOOG_RESOURCE_STATE
+apiclient.channel.X_GOOG_MESSAGE_NUMBER apiclient.channel-module.html#X_GOOG_MESSAGE_NUMBER
+apiclient.channel.EPOCH apiclient.channel-module.html#EPOCH
+apiclient.channel.X_GOOG_RESOURCE_URI apiclient.channel-module.html#X_GOOG_RESOURCE_URI
+apiclient.channel.X_GOOG_CHANNEL_ID apiclient.channel-module.html#X_GOOG_CHANNEL_ID
+apiclient.channel.new_webhook_channel apiclient.channel-module.html#new_webhook_channel
+apiclient.channel.X_GOOG_RESOURCE_ID apiclient.channel-module.html#X_GOOG_RESOURCE_ID
apiclient.discovery apiclient.discovery-module.html
apiclient.discovery.MEDIA_BODY_PARAMETER_DEFAULT_VALUE apiclient.discovery-module.html#MEDIA_BODY_PARAMETER_DEFAULT_VALUE
apiclient.discovery._cast apiclient.discovery-module.html#_cast
@@ -25,7 +36,6 @@
apiclient.discovery.DISCOVERY_URI apiclient.discovery-module.html#DISCOVERY_URI
apiclient.discovery.URITEMPLATE apiclient.discovery-module.html#URITEMPLATE
apiclient.errors apiclient.errors-module.html
-apiclient.ext apiclient.ext-module.html
apiclient.http apiclient.http-module.html
apiclient.http.set_user_agent apiclient.http-module.html#set_user_agent
apiclient.http.tunnel_patch apiclient.http-module.html#tunnel_patch
@@ -43,17 +53,10 @@
apiclient.mimeparse._filter_blank apiclient.mimeparse-module.html#_filter_blank
apiclient.model apiclient.model-module.html
apiclient.model._abstract apiclient.model-module.html#_abstract
-apiclient.model.FLAGS apiclient.model-module.html#FLAGS
+apiclient.model.dump_request_response apiclient.model-module.html#dump_request_response
apiclient.model.makepatch apiclient.model-module.html#makepatch
-apiclient.push apiclient.push-module.html
-apiclient.push.EVENT_TYPE apiclient.push-module.html#EVENT_TYPE
-apiclient.push.TOPIC_URI apiclient.push-module.html#TOPIC_URI
-apiclient.push.new_token apiclient.push-module.html#new_token
-apiclient.push.SUBSCRIBE apiclient.push-module.html#SUBSCRIBE
-apiclient.push.TOPIC_ID apiclient.push-module.html#TOPIC_ID
-apiclient.push.UNSUBSCRIBE apiclient.push-module.html#UNSUBSCRIBE
-apiclient.push.SUBSCRIPTION_ID apiclient.push-module.html#SUBSCRIPTION_ID
-apiclient.push.CLIENT_TOKEN apiclient.push-module.html#CLIENT_TOKEN
+apiclient.sample_tools apiclient.sample_tools-module.html
+apiclient.sample_tools.init apiclient.sample_tools-module.html#init
apiclient.schema apiclient.schema-module.html
oauth2client oauth2client-module.html
oauth2client.GOOGLE_REVOKE_URI oauth2client-module.html#GOOGLE_REVOKE_URI
@@ -127,27 +130,45 @@
oauth2client.locked_file.validate_file oauth2client.locked_file-module.html#validate_file
oauth2client.locked_file.logger oauth2client.locked_file-module.html#logger
oauth2client.multistore_file oauth2client.multistore_file-module.html
-oauth2client.multistore_file.get_credential_storage oauth2client.multistore_file-module.html#get_credential_storage
-oauth2client.multistore_file._multistores_lock oauth2client.multistore_file-module.html#_multistores_lock
-oauth2client.multistore_file._multistores oauth2client.multistore_file-module.html#_multistores
-oauth2client.multistore_file.get_credential_storage_custom_key oauth2client.multistore_file-module.html#get_credential_storage_custom_key
+oauth2client.multistore_file.get_all_credential_keys oauth2client.multistore_file-module.html#get_all_credential_keys
oauth2client.multistore_file.get_credential_storage_custom_string_key oauth2client.multistore_file-module.html#get_credential_storage_custom_string_key
+oauth2client.multistore_file._get_multistore oauth2client.multistore_file-module.html#_get_multistore
+oauth2client.multistore_file.get_credential_storage oauth2client.multistore_file-module.html#get_credential_storage
oauth2client.multistore_file.logger oauth2client.multistore_file-module.html#logger
+oauth2client.multistore_file._multistores oauth2client.multistore_file-module.html#_multistores
+oauth2client.multistore_file._multistores_lock oauth2client.multistore_file-module.html#_multistores_lock
+oauth2client.multistore_file.get_credential_storage_custom_key oauth2client.multistore_file-module.html#get_credential_storage_custom_key
+oauth2client.old_run oauth2client.old_run-module.html
+oauth2client.old_run.run oauth2client.old_run-module.html#run
+oauth2client.old_run.FLAGS oauth2client.old_run-module.html#FLAGS
oauth2client.tools oauth2client.tools-module.html
+oauth2client.tools.argparser oauth2client.tools-module.html#argparser
oauth2client.tools.run oauth2client.tools-module.html#run
-oauth2client.tools.FLAGS oauth2client.tools-module.html#FLAGS
+oauth2client.tools._CLIENT_SECRETS_MESSAGE oauth2client.tools-module.html#_CLIENT_SECRETS_MESSAGE
+oauth2client.tools.message_if_missing oauth2client.tools-module.html#message_if_missing
+oauth2client.tools.run_flow oauth2client.tools-module.html#run_flow
oauth2client.util oauth2client.util-module.html
-oauth2client.util.positional oauth2client.util-module.html#positional
-oauth2client.util.scopes_to_string oauth2client.util-module.html#scopes_to_string
-oauth2client.util.FLAGS oauth2client.util-module.html#FLAGS
-oauth2client.util.dict_to_tuple_key oauth2client.util-module.html#dict_to_tuple_key
+oauth2client.util.POSITIONAL_EXCEPTION oauth2client.util-module.html#POSITIONAL_EXCEPTION
oauth2client.util._add_query_parameter oauth2client.util-module.html#_add_query_parameter
+oauth2client.util.scopes_to_string oauth2client.util-module.html#scopes_to_string
+oauth2client.util.dict_to_tuple_key oauth2client.util-module.html#dict_to_tuple_key
+oauth2client.util.POSITIONAL_IGNORE oauth2client.util-module.html#POSITIONAL_IGNORE
+oauth2client.util.positional oauth2client.util-module.html#positional
+oauth2client.util.POSITIONAL_WARNING oauth2client.util-module.html#POSITIONAL_WARNING
oauth2client.util.logger oauth2client.util-module.html#logger
+oauth2client.util.positional_parameters_enforcement oauth2client.util-module.html#positional_parameters_enforcement
+oauth2client.util.POSITIONAL_SET oauth2client.util-module.html#POSITIONAL_SET
oauth2client.xsrfutil oauth2client.xsrfutil-module.html
oauth2client.xsrfutil.validate_token oauth2client.xsrfutil-module.html#validate_token
oauth2client.xsrfutil.DEFAULT_TIMEOUT_SECS oauth2client.xsrfutil-module.html#DEFAULT_TIMEOUT_SECS
oauth2client.xsrfutil.DELIMITER oauth2client.xsrfutil-module.html#DELIMITER
oauth2client.xsrfutil.generate_token oauth2client.xsrfutil-module.html#generate_token
+apiclient.channel.Channel apiclient.channel.Channel-class.html
+apiclient.channel.Channel.body apiclient.channel.Channel-class.html#body
+apiclient.channel.Channel.update apiclient.channel.Channel-class.html#update
+apiclient.channel.Channel.__init__ apiclient.channel.Channel-class.html#__init__
+apiclient.channel.Notification apiclient.channel.Notification-class.html
+apiclient.channel.Notification.__init__ apiclient.channel.Notification-class.html#__init__
apiclient.discovery.Resource apiclient.discovery.Resource-class.html
apiclient.discovery.Resource._add_nested_resources apiclient.discovery.Resource-class.html#_add_nested_resources
apiclient.discovery.Resource._set_dynamic_attr apiclient.discovery.Resource-class.html#_set_dynamic_attr
@@ -173,6 +194,7 @@
apiclient.errors.HttpError._get_reason apiclient.errors.HttpError-class.html#_get_reason
apiclient.errors.InvalidChunkSizeError apiclient.errors.InvalidChunkSizeError-class.html
apiclient.errors.InvalidJsonError apiclient.errors.InvalidJsonError-class.html
+apiclient.errors.InvalidNotificationError apiclient.errors.InvalidNotificationError-class.html
apiclient.errors.MediaUploadSizeError apiclient.errors.MediaUploadSizeError-class.html
apiclient.errors.ResumableUploadError apiclient.errors.ResumableUploadError-class.html
apiclient.errors.HttpError.__str__ apiclient.errors.HttpError-class.html#__str__
@@ -345,36 +367,6 @@
apiclient.model.BaseModel.request apiclient.model.BaseModel-class.html#request
apiclient.model.RawModel.no_content_response apiclient.model.RawModel-class.html#no_content_response
apiclient.model.BaseModel._log_response apiclient.model.BaseModel-class.html#_log_response
-apiclient.push.Channel apiclient.push.Channel-class.html
-apiclient.push.Channel.as_header_value apiclient.push.Channel-class.html#as_header_value
-apiclient.push.Channel.write_header apiclient.push.Channel-class.html#write_header
-apiclient.push.Channel.__init__ apiclient.push.Channel-class.html#__init__
-apiclient.push.Headers apiclient.push.Headers-class.html
-apiclient.push.Headers.__getitem__ apiclient.push.Headers-class.html#__getitem__
-apiclient.push.Headers._normalize_key apiclient.push.Headers-class.html#_normalize_key
-apiclient.push.Headers.read apiclient.push.Headers-class.html#read
-apiclient.push.Headers.items apiclient.push.Headers-class.html#items
-apiclient.push.Headers.write apiclient.push.Headers-class.html#write
-apiclient.push.Headers.__setitem__ apiclient.push.Headers-class.html#__setitem__
-apiclient.push.Headers.ALL_HEADERS apiclient.push.Headers-class.html#ALL_HEADERS
-apiclient.push.Headers.__init__ apiclient.push.Headers-class.html#__init__
-apiclient.push.InvalidSubscriptionRequestError apiclient.push.InvalidSubscriptionRequestError-class.html
-apiclient.push.Subscription apiclient.push.Subscription-class.html
-apiclient.push.Subscription.event_type apiclient.push.Subscription-class.html#event_type
-apiclient.push.Subscription.topic_uri apiclient.push.Subscription-class.html#topic_uri
-apiclient.push.Subscription.for_request apiclient.push.Subscription-class.html#for_request
-apiclient.push.Subscription.subscribe apiclient.push.Subscription-class.html#subscribe
-apiclient.push.Subscription.__init__ apiclient.push.Subscription-class.html#__init__
-apiclient.push.Subscription.verify apiclient.push.Subscription-class.html#verify
-apiclient.push.Subscription.topic_id apiclient.push.Subscription-class.html#topic_id
-apiclient.push.Subscription.subscription_id apiclient.push.Subscription-class.html#subscription_id
-apiclient.push.Subscription.client_token apiclient.push.Subscription-class.html#client_token
-apiclient.push.Subscription.for_channel apiclient.push.Subscription-class.html#for_channel
-apiclient.push.Subscription.unsubscribe apiclient.push.Subscription-class.html#unsubscribe
-apiclient.push.WebhookChannel apiclient.push.WebhookChannel-class.html
-apiclient.push.Channel.as_header_value apiclient.push.Channel-class.html#as_header_value
-apiclient.push.Channel.write_header apiclient.push.Channel-class.html#write_header
-apiclient.push.WebhookChannel.__init__ apiclient.push.WebhookChannel-class.html#__init__
apiclient.schema.Schemas apiclient.schema.Schemas-class.html
apiclient.schema.Schemas._prettyPrintByName apiclient.schema.Schemas-class.html#_prettyPrintByName
apiclient.schema.Schemas._prettyPrintSchema apiclient.schema.Schemas-class.html#_prettyPrintSchema
@@ -442,6 +434,9 @@
oauth2client.appengine.InvalidClientSecretsError oauth2client.appengine.InvalidClientSecretsError-class.html
oauth2client.appengine.InvalidXsrfTokenError oauth2client.appengine.InvalidXsrfTokenError-class.html
oauth2client.appengine.OAuth2Decorator oauth2client.appengine.OAuth2Decorator-class.html
+oauth2client.appengine.OAuth2Decorator.get_flow oauth2client.appengine.OAuth2Decorator-class.html#get_flow
+oauth2client.appengine.OAuth2Decorator.set_credentials oauth2client.appengine.OAuth2Decorator-class.html#set_credentials
+oauth2client.appengine.OAuth2Decorator.set_flow oauth2client.appengine.OAuth2Decorator-class.html#set_flow
oauth2client.appengine.OAuth2Decorator.__init__ oauth2client.appengine.OAuth2Decorator-class.html#__init__
oauth2client.appengine.OAuth2Decorator.authorize_url oauth2client.appengine.OAuth2Decorator-class.html#authorize_url
oauth2client.appengine.OAuth2Decorator.callback_handler oauth2client.appengine.OAuth2Decorator-class.html#callback_handler
@@ -449,11 +444,17 @@
oauth2client.appengine.OAuth2Decorator.http oauth2client.appengine.OAuth2Decorator-class.html#http
oauth2client.appengine.OAuth2Decorator._create_flow oauth2client.appengine.OAuth2Decorator-class.html#_create_flow
oauth2client.appengine.OAuth2Decorator.has_credentials oauth2client.appengine.OAuth2Decorator-class.html#has_credentials
+oauth2client.appengine.OAuth2Decorator.credentials oauth2client.appengine.OAuth2Decorator-class.html#credentials
oauth2client.appengine.OAuth2Decorator.callback_application oauth2client.appengine.OAuth2Decorator-class.html#callback_application
oauth2client.appengine.OAuth2Decorator.oauth_aware oauth2client.appengine.OAuth2Decorator-class.html#oauth_aware
+oauth2client.appengine.OAuth2Decorator.flow oauth2client.appengine.OAuth2Decorator-class.html#flow
+oauth2client.appengine.OAuth2Decorator.get_credentials oauth2client.appengine.OAuth2Decorator-class.html#get_credentials
oauth2client.appengine.OAuth2Decorator.callback_path oauth2client.appengine.OAuth2Decorator-class.html#callback_path
oauth2client.appengine.OAuth2Decorator.oauth_required oauth2client.appengine.OAuth2Decorator-class.html#oauth_required
oauth2client.appengine.OAuth2DecoratorFromClientSecrets oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html
+oauth2client.appengine.OAuth2Decorator.get_flow oauth2client.appengine.OAuth2Decorator-class.html#get_flow
+oauth2client.appengine.OAuth2Decorator.set_credentials oauth2client.appengine.OAuth2Decorator-class.html#set_credentials
+oauth2client.appengine.OAuth2Decorator.set_flow oauth2client.appengine.OAuth2Decorator-class.html#set_flow
oauth2client.appengine.OAuth2DecoratorFromClientSecrets.__init__ oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html#__init__
oauth2client.appengine.OAuth2Decorator.authorize_url oauth2client.appengine.OAuth2Decorator-class.html#authorize_url
oauth2client.appengine.OAuth2Decorator.callback_handler oauth2client.appengine.OAuth2Decorator-class.html#callback_handler
@@ -461,8 +462,11 @@
oauth2client.appengine.OAuth2Decorator.http oauth2client.appengine.OAuth2Decorator-class.html#http
oauth2client.appengine.OAuth2Decorator._create_flow oauth2client.appengine.OAuth2Decorator-class.html#_create_flow
oauth2client.appengine.OAuth2Decorator.has_credentials oauth2client.appengine.OAuth2Decorator-class.html#has_credentials
+oauth2client.appengine.OAuth2Decorator.credentials oauth2client.appengine.OAuth2Decorator-class.html#credentials
oauth2client.appengine.OAuth2Decorator.callback_application oauth2client.appengine.OAuth2Decorator-class.html#callback_application
oauth2client.appengine.OAuth2Decorator.oauth_aware oauth2client.appengine.OAuth2Decorator-class.html#oauth_aware
+oauth2client.appengine.OAuth2Decorator.flow oauth2client.appengine.OAuth2Decorator-class.html#flow
+oauth2client.appengine.OAuth2Decorator.get_credentials oauth2client.appengine.OAuth2Decorator-class.html#get_credentials
oauth2client.appengine.OAuth2Decorator.callback_path oauth2client.appengine.OAuth2Decorator-class.html#callback_path
oauth2client.appengine.OAuth2Decorator.oauth_required oauth2client.appengine.OAuth2Decorator-class.html#oauth_required
oauth2client.appengine.SiteXsrfSecretKey oauth2client.appengine.SiteXsrfSecretKey-class.html
@@ -720,6 +724,7 @@
oauth2client.multistore_file._MultiStore._refresh_data_cache oauth2client.multistore_file._MultiStore-class.html#_refresh_data_cache
oauth2client.multistore_file._MultiStore._unlock oauth2client.multistore_file._MultiStore-class.html#_unlock
oauth2client.multistore_file._MultiStore._create_file_if_needed oauth2client.multistore_file._MultiStore-class.html#_create_file_if_needed
+oauth2client.multistore_file._MultiStore._get_all_credential_keys oauth2client.multistore_file._MultiStore-class.html#_get_all_credential_keys
oauth2client.multistore_file._MultiStore._Storage oauth2client.multistore_file._MultiStore._Storage-class.html
oauth2client.multistore_file._MultiStore._update_credential oauth2client.multistore_file._MultiStore-class.html#_update_credential
oauth2client.multistore_file._MultiStore._decode_credential_from_json oauth2client.multistore_file._MultiStore-class.html#_decode_credential_from_json
diff --git a/docs/epy/apiclient-module.html b/docs/epy/apiclient-module.html
index 7ccfcf7..ff11bf8 100644
--- a/docs/epy/apiclient-module.html
+++ b/docs/epy/apiclient-module.html
@@ -54,7 +54,7 @@
<h1 class="epydoc">Package apiclient</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient-pysrc.html">source code</a></span></p>
<hr />
<div class="fields"> <p><strong>Version:</strong>
- 1.1
+ 1.2
</p>
</div><!-- ==================== SUBMODULES ==================== -->
<a name="section-Submodules"></a>
@@ -75,13 +75,13 @@
</tr>
<tr><td class="summary">
<ul class="nomargin">
+ <li> <strong class="uidlink"><a href="apiclient.channel-module.html">apiclient.channel</a></strong>: <em class="summary">Channel notifications support.</em> </li>
<li> <strong class="uidlink"><a href="apiclient.discovery-module.html">apiclient.discovery</a></strong>: <em class="summary">Client for discovery based APIs.</em> </li>
<li> <strong class="uidlink"><a href="apiclient.errors-module.html">apiclient.errors</a></strong>: <em class="summary">Errors for the library.</em> </li>
- <li> <strong class="uidlink"><a href="apiclient.ext-module.html">apiclient.ext</a></strong> </li>
<li> <strong class="uidlink"><a href="apiclient.http-module.html">apiclient.http</a></strong>: <em class="summary">Classes to encapsulate a single HTTP request.</em> </li>
<li> <strong class="uidlink"><a href="apiclient.mimeparse-module.html">apiclient.mimeparse</a></strong>: <em class="summary">MIME-Type Parser</em> </li>
<li> <strong class="uidlink"><a href="apiclient.model-module.html">apiclient.model</a></strong>: <em class="summary">Model objects for requests and responses.</em> </li>
- <li> <strong class="uidlink"><a href="apiclient.push-module.html">apiclient.push</a></strong>: <em class="summary">Push notifications support.</em> </li>
+ <li> <strong class="uidlink"><a href="apiclient.sample_tools-module.html">apiclient.sample_tools</a></strong>: <em class="summary">Utilities for making samples.</em> </li>
<li> <strong class="uidlink"><a href="apiclient.schema-module.html">apiclient.schema</a></strong>: <em class="summary">Schema processing for discovery based APIs</em> </li>
</ul></td></tr>
</table>
@@ -110,7 +110,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:22 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:42 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient-pysrc.html b/docs/epy/apiclient-pysrc.html
index 660313f..5bc17ff 100644
--- a/docs/epy/apiclient-pysrc.html
+++ b/docs/epy/apiclient-pysrc.html
@@ -52,8 +52,22 @@
</table>
<h1 class="epydoc">Source Code for <a href="apiclient-module.html">Package apiclient</a></h1>
<pre class="py-src">
-<a name="L1"></a><tt class="py-lineno">1</tt> <tt class="py-line"><tt class="py-name">__version__</tt> <tt class="py-op">=</tt> <tt class="py-docstring">"1.1"</tt> </tt>
-<a name="L2"></a><tt class="py-lineno">2</tt> <tt class="py-line"> </tt><script type="text/javascript">
+<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2012 Google Inc.</tt> </tt>
+<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"># Licensed under the Apache License, Version 2.0 (the "License");</tt> </tt>
+<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"># you may not use this file except in compliance with the License.</tt> </tt>
+<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"># You may obtain a copy of the License at</tt> </tt>
+<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"># http://www.apache.org/licenses/LICENSE-2.0</tt> </tt>
+<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"># Unless required by applicable law or agreed to in writing, software</tt> </tt>
+<a name="L10"></a><tt class="py-lineno">10</tt> <tt class="py-line"><tt class="py-comment"># distributed under the License is distributed on an "AS IS" BASIS,</tt> </tt>
+<a name="L11"></a><tt class="py-lineno">11</tt> <tt class="py-line"><tt class="py-comment"># WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</tt> </tt>
+<a name="L12"></a><tt class="py-lineno">12</tt> <tt class="py-line"><tt class="py-comment"># See the License for the specific language governing permissions and</tt> </tt>
+<a name="L13"></a><tt class="py-lineno">13</tt> <tt class="py-line"><tt class="py-comment"># limitations under the License.</tt> </tt>
+<a name="L14"></a><tt class="py-lineno">14</tt> <tt class="py-line"> </tt>
+<a name="L15"></a><tt class="py-lineno">15</tt> <tt class="py-line"><tt class="py-name">__version__</tt> <tt class="py-op">=</tt> <tt class="py-docstring">"1.2"</tt> </tt>
+<a name="L16"></a><tt class="py-lineno">16</tt> <tt class="py-line"> </tt><script type="text/javascript">
<!--
expandto(location.href);
// -->
@@ -83,7 +97,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:26 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:47 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.channel-module.html b/docs/epy/apiclient.channel-module.html
new file mode 100644
index 0000000..8db31e3
--- /dev/null
+++ b/docs/epy/apiclient.channel-module.html
@@ -0,0 +1,471 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>apiclient.channel</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+
+ <!-- Tree link -->
+ <th> <a
+ href="module-tree.html">Trees</a> </th>
+
+ <!-- Index link -->
+ <th> <a
+ href="identifier-index.html">Indices</a> </th>
+
+ <!-- Help link -->
+ <th> <a
+ href="help.html">Help</a> </th>
+
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="apiclient-module.html">Package apiclient</a> ::
+ Module channel
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >] | <a href="apiclient.channel-module.html"
+ target="_top">no frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module channel</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.channel-pysrc.html">source code</a></span></p>
+<pre class="literalblock">
+Channel notifications support.
+
+Classes and functions to support channel subscriptions and notifications
+on those channels.
+
+Notes:
+ - This code is based on experimental APIs and is subject to change.
+ - Notification does not do deduplication of notification ids, that's up to
+ the receiver.
+ - Storing the Channel between calls is up to the caller.
+
+
+Example setting up a channel:
+
+ # Create a new channel that gets notifications via webhook.
+ channel = new_webhook_channel("https://example.com/my_web_hook")
+
+ # Store the channel, keyed by 'channel.id'. Store it before calling the
+ # watch method because notifications may start arriving before the watch
+ # method returns.
+ ...
+
+ resp = service.objects().watchAll(
+ bucket="some_bucket_id", body=channel.body()).execute()
+ channel.update(resp)
+
+ # Store the channel, keyed by 'channel.id'. Store it after being updated
+ # since the resource_id value will now be correct, and that's needed to
+ # stop a subscription.
+ ...
+
+
+An example Webhook implementation using webapp2. Note that webapp2 puts
+headers in a case insensitive dictionary, as headers aren't guaranteed to
+always be upper case.
+
+ id = self.request.headers[X_GOOG_CHANNEL_ID]
+
+ # Retrieve the channel by id.
+ channel = ...
+
+ # Parse notification from the headers, including validating the id.
+ n = notification_from_headers(channel, self.request.headers)
+
+ # Do app specific stuff with the notification here.
+ if n.resource_state == 'sync':
+ # Code to handle sync state.
+ elif n.resource_state == 'exists':
+ # Code to handle the exists state.
+ elif n.resource_state == 'not_exists':
+ # Code to handle the not exists state.
+
+
+Example of unsubscribing.
+
+ service.channels().stop(channel.body())
+
+</pre>
+
+<!-- ==================== CLASSES ==================== -->
+<a name="section-Classes"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Classes</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Classes"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <a href="apiclient.channel.Notification-class.html" class="summary-name">Notification</a><br />
+ A Notification from a Channel.
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <a href="apiclient.channel.Channel-class.html" class="summary-name">Channel</a><br />
+ A Channel for notifications.
+ </td>
+ </tr>
+</table>
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Functions</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Functions"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a name="_upper_header_keys"></a><span class="summary-sig-name">_upper_header_keys</span>(<span class="summary-sig-arg">headers</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="apiclient.channel-pysrc.html#_upper_header_keys">source code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="apiclient.channel-module.html#notification_from_headers" class="summary-sig-name">notification_from_headers</a>(<span class="summary-sig-arg">channel</span>,
+ <span class="summary-sig-arg">headers</span>)</span><br />
+ Parse a notification from the webhook request headers, validate
+ the notification, and return a Notification object.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="apiclient.channel-pysrc.html#notification_from_headers">source code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="apiclient.channel-module.html#new_webhook_channel" class="summary-sig-name">new_webhook_channel</a>(<span class="summary-sig-arg">url</span>,
+ <span class="summary-sig-arg">token</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">expiration</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">params</span>=<span class="summary-sig-default">None</span>)</span><br />
+ Create a new webhook Channel.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="apiclient.channel-pysrc.html#new_webhook_channel">source code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Variables</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Variables"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <a name="EPOCH"></a><span class="summary-name">EPOCH</span> = <code title="datetime.datetime.utcfromtimestamp(0)">datetime.datetime.utcfromtimestamp(0)</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <a href="apiclient.channel-module.html#CHANNEL_PARAMS" class="summary-name">CHANNEL_PARAMS</a> = <code title="{'address': 'address', 'id': 'id', 'expiration': 'expiration', 'params\
+': 'params', 'resourceId': 'resource_id', 'resourceUri': 'resource_uri\
+', 'type': 'type', 'token': 'token',}">{'address': 'address', 'id': 'id', 'expiratio<code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <a name="X_GOOG_CHANNEL_ID"></a><span class="summary-name">X_GOOG_CHANNEL_ID</span> = <code title="'X-GOOG-CHANNEL-ID'">'X-GOOG-CHANNEL-ID'</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <a name="X_GOOG_MESSAGE_NUMBER"></a><span class="summary-name">X_GOOG_MESSAGE_NUMBER</span> = <code title="'X-GOOG-MESSAGE-NUMBER'">'X-GOOG-MESSAGE-NUMBER'</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <a name="X_GOOG_RESOURCE_STATE"></a><span class="summary-name">X_GOOG_RESOURCE_STATE</span> = <code title="'X-GOOG-RESOURCE-STATE'">'X-GOOG-RESOURCE-STATE'</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <a name="X_GOOG_RESOURCE_URI"></a><span class="summary-name">X_GOOG_RESOURCE_URI</span> = <code title="'X-GOOG-RESOURCE-URI'">'X-GOOG-RESOURCE-URI'</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <a name="X_GOOG_RESOURCE_ID"></a><span class="summary-name">X_GOOG_RESOURCE_ID</span> = <code title="'X-GOOG-RESOURCE-ID'">'X-GOOG-RESOURCE-ID'</code>
+ </td>
+ </tr>
+</table>
+<!-- ==================== FUNCTION DETAILS ==================== -->
+<a name="section-FunctionDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Function Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-FunctionDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="notification_from_headers"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">notification_from_headers</span>(<span class="sig-arg">channel</span>,
+ <span class="sig-arg">headers</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="apiclient.channel-pysrc.html#notification_from_headers">source code</a></span>
+ </td>
+ </tr></table>
+
+ <pre class="literalblock">
+Parse a notification from the webhook request headers, validate
+ the notification, and return a Notification object.
+
+Args:
+ channel: Channel, The channel that the notification is associated with.
+ headers: dict, A dictionary like object that contains the request headers
+ from the webhook HTTP request.
+
+Returns:
+ A Notification object.
+
+Raises:
+ errors.InvalidNotificationError if the notification is invalid.
+ ValueError if the X-GOOG-MESSAGE-NUMBER can't be converted to an int.
+
+</pre>
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="new_webhook_channel"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">new_webhook_channel</span>(<span class="sig-arg">url</span>,
+ <span class="sig-arg">token</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">expiration</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">params</span>=<span class="sig-default">None</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="apiclient.channel-pysrc.html#new_webhook_channel">source code</a></span>
+ </td>
+ </tr></table>
+
+ <pre class="literalblock">
+Create a new webhook Channel.
+
+Args:
+ url: str, URL to post notifications to.
+ token: str, An arbitrary string associated with the channel that
+ is delivered to the target address with each notification delivered
+ over this channel.
+ expiration: datetime.datetime, A time in the future when the channel
+ should expire. Can also be None if the subscription should use the
+ default expiration. Note that different services may have different
+ limits on how long a subscription lasts. Check the response from the
+ watch() method to see the value the service has set for an expiration
+ time.
+ params: dict, Extra parameters to pass on channel creation. Currently
+ not used for webhook channels.
+
+</pre>
+ <dl class="fields">
+ <dt>Decorators:</dt>
+ <dd><ul class="nomargin-top">
+ <li><code>@util.positional(2)</code></li>
+ </ul></dd>
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== VARIABLES DETAILS ==================== -->
+<a name="section-VariablesDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Variables Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-VariablesDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="CHANNEL_PARAMS"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">CHANNEL_PARAMS</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+{'address': 'address', 'id': 'id', 'expiration': 'expiration', 'params<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+': 'params', 'resourceId': 'resource_id', 'resourceUri': 'resource_uri<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+', 'type': 'type', 'token': 'token',}
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+
+ <!-- Tree link -->
+ <th> <a
+ href="module-tree.html">Trees</a> </th>
+
+ <!-- Index link -->
+ <th> <a
+ href="identifier-index.html">Indices</a> </th>
+
+ <!-- Help link -->
+ <th> <a
+ href="help.html">Help</a> </th>
+
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:42 2013
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/docs/epy/apiclient.channel-pysrc.html b/docs/epy/apiclient.channel-pysrc.html
new file mode 100644
index 0000000..3bfc25d
--- /dev/null
+++ b/docs/epy/apiclient.channel-pysrc.html
@@ -0,0 +1,391 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>apiclient.channel</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+
+ <!-- Tree link -->
+ <th> <a
+ href="module-tree.html">Trees</a> </th>
+
+ <!-- Index link -->
+ <th> <a
+ href="identifier-index.html">Indices</a> </th>
+
+ <!-- Help link -->
+ <th> <a
+ href="help.html">Help</a> </th>
+
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="apiclient-module.html">Package apiclient</a> ::
+ Module channel
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >] | <a href="apiclient.channel-pysrc.html"
+ target="_top">no frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="apiclient.channel-module.html">Module apiclient.channel</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-docstring">"""Channel notifications support.</tt> </tt>
+<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-docstring">Classes and functions to support channel subscriptions and notifications</tt> </tt>
+<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-docstring">on those channels.</tt> </tt>
+<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-docstring">Notes:</tt> </tt>
+<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-docstring"> - This code is based on experimental APIs and is subject to change.</tt> </tt>
+<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-docstring"> - Notification does not do deduplication of notification ids, that's up to</tt> </tt>
+<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-docstring"> the receiver.</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-docstring"> - Storing the Channel between calls is up to the caller.</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-docstring">Example setting up a channel:</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-docstring"> # Create a new channel that gets notifications via webhook.</tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-docstring"> channel = new_webhook_channel("https://example.com/my_web_hook")</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-docstring"> # Store the channel, keyed by 'channel.id'. Store it before calling the</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-docstring"> # watch method because notifications may start arriving before the watch</tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-docstring"> # method returns.</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-docstring"> ...</tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt> <tt class="py-line"><tt class="py-docstring"> resp = service.objects().watchAll(</tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt> <tt class="py-line"><tt class="py-docstring"> bucket="some_bucket_id", body=channel.body()).execute()</tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt> <tt class="py-line"><tt class="py-docstring"> channel.update(resp)</tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt> <tt class="py-line"><tt class="py-docstring"> # Store the channel, keyed by 'channel.id'. Store it after being updated</tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"><tt class="py-docstring"> # since the resource_id value will now be correct, and that's needed to</tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"><tt class="py-docstring"> # stop a subscription.</tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"><tt class="py-docstring"> ...</tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"><tt class="py-docstring">An example Webhook implementation using webapp2. Note that webapp2 puts</tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"><tt class="py-docstring">headers in a case insensitive dictionary, as headers aren't guaranteed to</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"><tt class="py-docstring">always be upper case.</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"><tt class="py-docstring"> id = self.request.headers[X_GOOG_CHANNEL_ID]</tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"><tt class="py-docstring"> # Retrieve the channel by id.</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"><tt class="py-docstring"> channel = ...</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"><tt class="py-docstring"> # Parse notification from the headers, including validating the id.</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"><tt class="py-docstring"> n = notification_from_headers(channel, self.request.headers)</tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"><tt class="py-docstring"> # Do app specific stuff with the notification here.</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"><tt class="py-docstring"> if n.resource_state == 'sync':</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"><tt class="py-docstring"> # Code to handle sync state.</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"><tt class="py-docstring"> elif n.resource_state == 'exists':</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"><tt class="py-docstring"> # Code to handle the exists state.</tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"><tt class="py-docstring"> elif n.resource_state == 'not_exists':</tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"><tt class="py-docstring"> # Code to handle the not exists state.</tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"><tt class="py-docstring">Example of unsubscribing.</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"><tt class="py-docstring"> service.channels().stop(channel.body())</tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">datetime</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">uuid</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-0" class="py-name" targets="Package apiclient=apiclient-module.html"><a title="apiclient" class="py-name" href="#" onclick="return doclink('link-0', 'apiclient', 'link-0');">apiclient</a></tt> <tt class="py-keyword">import</tt> <tt id="link-1" class="py-name" targets="Module apiclient.errors=apiclient.errors-module.html"><a title="apiclient.errors" class="py-name" href="#" onclick="return doclink('link-1', 'errors', 'link-1');">errors</a></tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-2" class="py-name" targets="Package oauth2client=oauth2client-module.html"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-2', 'oauth2client', 'link-2');">oauth2client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-3" class="py-name" targets="Module oauth2client.util=oauth2client.util-module.html"><a title="oauth2client.util" class="py-name" href="#" onclick="return doclink('link-3', 'util', 'link-3');">util</a></tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"><tt class="py-comment"># The unix time epoch starts at midnight 1970.</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"><tt id="link-4" class="py-name" targets="Variable apiclient.channel.EPOCH=apiclient.channel-module.html#EPOCH"><a title="apiclient.channel.EPOCH" class="py-name" href="#" onclick="return doclink('link-4', 'EPOCH', 'link-4');">EPOCH</a></tt> <tt class="py-op">=</tt> <tt class="py-name">datetime</tt><tt class="py-op">.</tt><tt class="py-name">datetime</tt><tt class="py-op">.</tt><tt class="py-name">utcfromtimestamp</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"><tt class="py-comment"># Map the names of the parameters in the JSON channel description to</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"><tt class="py-comment"># the parameter names we use in the Channel class.</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"><tt id="link-5" class="py-name" targets="Variable apiclient.channel.CHANNEL_PARAMS=apiclient.channel-module.html#CHANNEL_PARAMS"><a title="apiclient.channel.CHANNEL_PARAMS" class="py-name" href="#" onclick="return doclink('link-5', 'CHANNEL_PARAMS', 'link-5');">CHANNEL_PARAMS</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"> <tt class="py-string">'address'</tt><tt class="py-op">:</tt> <tt class="py-string">'address'</tt><tt class="py-op">,</tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"> <tt class="py-string">'id'</tt><tt class="py-op">:</tt> <tt class="py-string">'id'</tt><tt class="py-op">,</tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"> <tt class="py-string">'expiration'</tt><tt class="py-op">:</tt> <tt class="py-string">'expiration'</tt><tt class="py-op">,</tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"> <tt class="py-string">'params'</tt><tt class="py-op">:</tt> <tt class="py-string">'params'</tt><tt class="py-op">,</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"> <tt class="py-string">'resourceId'</tt><tt class="py-op">:</tt> <tt class="py-string">'resource_id'</tt><tt class="py-op">,</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"> <tt class="py-string">'resourceUri'</tt><tt class="py-op">:</tt> <tt class="py-string">'resource_uri'</tt><tt class="py-op">,</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"> <tt class="py-string">'type'</tt><tt class="py-op">:</tt> <tt class="py-string">'type'</tt><tt class="py-op">,</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"> <tt class="py-string">'token'</tt><tt class="py-op">:</tt> <tt class="py-string">'token'</tt><tt class="py-op">,</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"> <tt class="py-op">}</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"><tt id="link-6" class="py-name" targets="Variable apiclient.channel.X_GOOG_CHANNEL_ID=apiclient.channel-module.html#X_GOOG_CHANNEL_ID"><a title="apiclient.channel.X_GOOG_CHANNEL_ID" class="py-name" href="#" onclick="return doclink('link-6', 'X_GOOG_CHANNEL_ID', 'link-6');">X_GOOG_CHANNEL_ID</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'X-GOOG-CHANNEL-ID'</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"><tt id="link-7" class="py-name" targets="Variable apiclient.channel.X_GOOG_MESSAGE_NUMBER=apiclient.channel-module.html#X_GOOG_MESSAGE_NUMBER"><a title="apiclient.channel.X_GOOG_MESSAGE_NUMBER" class="py-name" href="#" onclick="return doclink('link-7', 'X_GOOG_MESSAGE_NUMBER', 'link-7');">X_GOOG_MESSAGE_NUMBER</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'X-GOOG-MESSAGE-NUMBER'</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"><tt id="link-8" class="py-name" targets="Variable apiclient.channel.X_GOOG_RESOURCE_STATE=apiclient.channel-module.html#X_GOOG_RESOURCE_STATE"><a title="apiclient.channel.X_GOOG_RESOURCE_STATE" class="py-name" href="#" onclick="return doclink('link-8', 'X_GOOG_RESOURCE_STATE', 'link-8');">X_GOOG_RESOURCE_STATE</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'X-GOOG-RESOURCE-STATE'</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"><tt id="link-9" class="py-name" targets="Variable apiclient.channel.X_GOOG_RESOURCE_URI=apiclient.channel-module.html#X_GOOG_RESOURCE_URI"><a title="apiclient.channel.X_GOOG_RESOURCE_URI" class="py-name" href="#" onclick="return doclink('link-9', 'X_GOOG_RESOURCE_URI', 'link-9');">X_GOOG_RESOURCE_URI</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'X-GOOG-RESOURCE-URI'</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"><tt id="link-10" class="py-name" targets="Variable apiclient.channel.X_GOOG_RESOURCE_ID=apiclient.channel-module.html#X_GOOG_RESOURCE_ID"><a title="apiclient.channel.X_GOOG_RESOURCE_ID" class="py-name" href="#" onclick="return doclink('link-10', 'X_GOOG_RESOURCE_ID', 'link-10');">X_GOOG_RESOURCE_ID</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'X-GOOG-RESOURCE-ID'</tt> </tt>
+<a name="_upper_header_keys"></a><div id="_upper_header_keys-def"><a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt> <a class="py-toggle" href="#" id="_upper_header_keys-toggle" onclick="return toggle('_upper_header_keys');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.channel-module.html#_upper_header_keys">_upper_header_keys</a><tt class="py-op">(</tt><tt class="py-param">headers</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_upper_header_keys-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_upper_header_keys-expanded"><a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"> <tt class="py-name">new_headers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">k</tt><tt class="py-op">,</tt> <tt class="py-name">v</tt> <tt class="py-keyword">in</tt> <tt class="py-name">headers</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"> <tt class="py-name">new_headers</tt><tt class="py-op">[</tt><tt class="py-name">k</tt><tt class="py-op">.</tt><tt class="py-name">upper</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">v</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">new_headers</tt> </tt>
+</div><a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"> </tt>
+<a name="Notification"></a><div id="Notification-def"><a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt> <a class="py-toggle" href="#" id="Notification-toggle" onclick="return toggle('Notification');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.channel.Notification-class.html">Notification</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Notification-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Notification-expanded"><a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"> <tt class="py-docstring">"""A Notification from a Channel.</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"><tt class="py-docstring"> Notifications are not usually constructed directly, but are returned</tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"><tt class="py-docstring"> from functions like notification_from_headers().</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"><tt class="py-docstring"> Attributes:</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"><tt class="py-docstring"> message_number: int, The unique id number of this notification.</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"><tt class="py-docstring"> state: str, The state of the resource being monitored.</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"><tt class="py-docstring"> uri: str, The address of the resource being monitored.</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"><tt class="py-docstring"> resource_id: str, The unique identifier of the version of the resource at</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"><tt class="py-docstring"> this event.</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-11" class="py-name" targets="Function oauth2client.util.positional()=oauth2client.util-module.html#positional"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-11', 'positional', 'link-11');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">5</tt><tt class="py-op">)</tt> </tt>
+<a name="Notification.__init__"></a><div id="Notification.__init__-def"><a name="L110"></a><tt class="py-lineno">110</tt> <a class="py-toggle" href="#" id="Notification.__init__-toggle" onclick="return toggle('Notification.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.channel.Notification-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">message_number</tt><tt class="py-op">,</tt> <tt class="py-param">state</tt><tt class="py-op">,</tt> <tt class="py-param">resource_uri</tt><tt class="py-op">,</tt> <tt class="py-param">resource_id</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Notification.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="Notification.__init__-expanded"><a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"> <tt class="py-docstring">"""Notification constructor.</tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"><tt class="py-docstring"> message_number: int, The unique id number of this notification.</tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"><tt class="py-docstring"> state: str, The state of the resource being monitored. Can be one</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"><tt class="py-docstring"> of "exists", "not_exists", or "sync".</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"><tt class="py-docstring"> resource_uri: str, The address of the resource being monitored.</tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"><tt class="py-docstring"> resource_id: str, The identifier of the watched resource.</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">message_number</tt> <tt class="py-op">=</tt> <tt class="py-name">message_number</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">state</tt> <tt class="py-op">=</tt> <tt class="py-name">state</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resource_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">resource_uri</tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resource_id</tt> <tt class="py-op">=</tt> <tt class="py-name">resource_id</tt> </tt>
+</div></div><a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"> </tt>
+<a name="Channel"></a><div id="Channel-def"><a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt> <a class="py-toggle" href="#" id="Channel-toggle" onclick="return toggle('Channel');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.channel.Channel-class.html">Channel</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Channel-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Channel-expanded"><a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"> <tt class="py-docstring">"""A Channel for notifications.</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"><tt class="py-docstring"> Usually not constructed directly, instead it is returned from helper</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"><tt class="py-docstring"> functions like new_webhook_channel().</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"><tt class="py-docstring"> Attributes:</tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"><tt class="py-docstring"> type: str, The type of delivery mechanism used by this channel. For</tt> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"><tt class="py-docstring"> example, 'web_hook'.</tt> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"><tt class="py-docstring"> id: str, A UUID for the channel.</tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"><tt class="py-docstring"> token: str, An arbitrary string associated with the channel that</tt> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"><tt class="py-docstring"> is delivered to the target address with each event delivered</tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"><tt class="py-docstring"> over this channel.</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"><tt class="py-docstring"> address: str, The address of the receiving entity where events are</tt> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"><tt class="py-docstring"> delivered. Specific to the channel type.</tt> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"><tt class="py-docstring"> expiration: int, The time, in milliseconds from the epoch, when this</tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"><tt class="py-docstring"> channel will expire.</tt> </tt>
+<a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"><tt class="py-docstring"> params: dict, A dictionary of string to string, with additional parameters</tt> </tt>
+<a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"><tt class="py-docstring"> controlling delivery channel behavior.</tt> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"><tt class="py-docstring"> resource_id: str, An opaque id that identifies the resource that is</tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"><tt class="py-docstring"> being watched. Stable across different API versions.</tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"><tt class="py-docstring"> resource_uri: str, The canonicalized ID of the watched resource.</tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-12" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-12', 'positional', 'link-11');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">5</tt><tt class="py-op">)</tt> </tt>
+<a name="Channel.__init__"></a><div id="Channel.__init__-def"><a name="L151"></a><tt class="py-lineno">151</tt> <a class="py-toggle" href="#" id="Channel.__init__-toggle" onclick="return toggle('Channel.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.channel.Channel-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">type</tt><tt class="py-op">,</tt> <tt class="py-param">id</tt><tt class="py-op">,</tt> <tt class="py-param">token</tt><tt class="py-op">,</tt> <tt class="py-param">address</tt><tt class="py-op">,</tt> <tt class="py-param">expiration</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L152"></a><tt class="py-lineno">152</tt> <tt class="py-line"> <tt class="py-param">params</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">resource_id</tt><tt class="py-op">=</tt><tt class="py-string">""</tt><tt class="py-op">,</tt> <tt class="py-param">resource_uri</tt><tt class="py-op">=</tt><tt class="py-string">""</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Channel.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="Channel.__init__-expanded"><a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"> <tt class="py-docstring">"""Create a new Channel.</tt> </tt>
+<a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"><tt class="py-docstring"> In user code, this Channel constructor will not typically be called</tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"><tt class="py-docstring"> manually since there are functions for creating channels for each specific</tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"><tt class="py-docstring"> type with a more customized set of arguments to pass.</tt> </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt> <tt class="py-line"><tt class="py-docstring"> type: str, The type of delivery mechanism used by this channel. For</tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"><tt class="py-docstring"> example, 'web_hook'.</tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"><tt class="py-docstring"> id: str, A UUID for the channel.</tt> </tt>
+<a name="L163"></a><tt class="py-lineno">163</tt> <tt class="py-line"><tt class="py-docstring"> token: str, An arbitrary string associated with the channel that</tt> </tt>
+<a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"><tt class="py-docstring"> is delivered to the target address with each event delivered</tt> </tt>
+<a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"><tt class="py-docstring"> over this channel.</tt> </tt>
+<a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"><tt class="py-docstring"> address: str, The address of the receiving entity where events are</tt> </tt>
+<a name="L167"></a><tt class="py-lineno">167</tt> <tt class="py-line"><tt class="py-docstring"> delivered. Specific to the channel type.</tt> </tt>
+<a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"><tt class="py-docstring"> expiration: int, The time, in milliseconds from the epoch, when this</tt> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"><tt class="py-docstring"> channel will expire.</tt> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"><tt class="py-docstring"> params: dict, A dictionary of string to string, with additional parameters</tt> </tt>
+<a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"><tt class="py-docstring"> controlling delivery channel behavior.</tt> </tt>
+<a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"><tt class="py-docstring"> resource_id: str, An opaque id that identifies the resource that is</tt> </tt>
+<a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"><tt class="py-docstring"> being watched. Stable across different API versions.</tt> </tt>
+<a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"><tt class="py-docstring"> resource_uri: str, The canonicalized ID of the watched resource.</tt> </tt>
+<a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">type</tt> <tt class="py-op">=</tt> <tt class="py-name">type</tt> </tt>
+<a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">id</tt> <tt class="py-op">=</tt> <tt class="py-name">id</tt> </tt>
+<a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">token</tt> <tt class="py-op">=</tt> <tt class="py-name">token</tt> </tt>
+<a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">address</tt> <tt class="py-op">=</tt> <tt class="py-name">address</tt> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expiration</tt> <tt class="py-op">=</tt> <tt class="py-name">expiration</tt> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">params</tt> <tt class="py-op">=</tt> <tt class="py-name">params</tt> </tt>
+<a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resource_id</tt> <tt class="py-op">=</tt> <tt class="py-name">resource_id</tt> </tt>
+<a name="L183"></a><tt class="py-lineno">183</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resource_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">resource_uri</tt> </tt>
+</div><a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"> </tt>
+<a name="Channel.body"></a><div id="Channel.body-def"><a name="L185"></a><tt class="py-lineno">185</tt> <a class="py-toggle" href="#" id="Channel.body-toggle" onclick="return toggle('Channel.body');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.channel.Channel-class.html#body">body</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Channel.body-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="Channel.body-expanded"><a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"> <tt class="py-docstring">"""Build a body from the Channel.</tt> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"><tt class="py-docstring"> Constructs a dictionary that's appropriate for passing into watch()</tt> </tt>
+<a name="L189"></a><tt class="py-lineno">189</tt> <tt class="py-line"><tt class="py-docstring"> methods as the value of body argument.</tt> </tt>
+<a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L191"></a><tt class="py-lineno">191</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"><tt class="py-docstring"> A dictionary representation of the channel.</tt> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L194"></a><tt class="py-lineno">194</tt> <tt class="py-line"> <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L195"></a><tt class="py-lineno">195</tt> <tt class="py-line"> <tt class="py-string">'id'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">id</tt><tt class="py-op">,</tt> </tt>
+<a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"> <tt class="py-string">'token'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">token</tt><tt class="py-op">,</tt> </tt>
+<a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"> <tt class="py-string">'type'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">type</tt><tt class="py-op">,</tt> </tt>
+<a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"> <tt class="py-string">'address'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">address</tt> </tt>
+<a name="L199"></a><tt class="py-lineno">199</tt> <tt class="py-line"> <tt class="py-op">}</tt> </tt>
+<a name="L200"></a><tt class="py-lineno">200</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">params</tt><tt class="py-op">:</tt> </tt>
+<a name="L201"></a><tt class="py-lineno">201</tt> <tt class="py-line"> <tt class="py-name">result</tt><tt class="py-op">[</tt><tt class="py-string">'params'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">params</tt> </tt>
+<a name="L202"></a><tt class="py-lineno">202</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resource_id</tt><tt class="py-op">:</tt> </tt>
+<a name="L203"></a><tt class="py-lineno">203</tt> <tt class="py-line"> <tt class="py-name">result</tt><tt class="py-op">[</tt><tt class="py-string">'resourceId'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resource_id</tt> </tt>
+<a name="L204"></a><tt class="py-lineno">204</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resource_uri</tt><tt class="py-op">:</tt> </tt>
+<a name="L205"></a><tt class="py-lineno">205</tt> <tt class="py-line"> <tt class="py-name">result</tt><tt class="py-op">[</tt><tt class="py-string">'resourceUri'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resource_uri</tt> </tt>
+<a name="L206"></a><tt class="py-lineno">206</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expiration</tt><tt class="py-op">:</tt> </tt>
+<a name="L207"></a><tt class="py-lineno">207</tt> <tt class="py-line"> <tt class="py-name">result</tt><tt class="py-op">[</tt><tt class="py-string">'expiration'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">expiration</tt> </tt>
+<a name="L208"></a><tt class="py-lineno">208</tt> <tt class="py-line"> </tt>
+<a name="L209"></a><tt class="py-lineno">209</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">result</tt> </tt>
+</div><a name="L210"></a><tt class="py-lineno">210</tt> <tt class="py-line"> </tt>
+<a name="Channel.update"></a><div id="Channel.update-def"><a name="L211"></a><tt class="py-lineno">211</tt> <a class="py-toggle" href="#" id="Channel.update-toggle" onclick="return toggle('Channel.update');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.channel.Channel-class.html#update">update</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">resp</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Channel.update-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="Channel.update-expanded"><a name="L212"></a><tt class="py-lineno">212</tt> <tt class="py-line"> <tt class="py-docstring">"""Update a channel with information from the response of watch().</tt> </tt>
+<a name="L213"></a><tt class="py-lineno">213</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L214"></a><tt class="py-lineno">214</tt> <tt class="py-line"><tt class="py-docstring"> When a request is sent to watch() a resource, the response returned</tt> </tt>
+<a name="L215"></a><tt class="py-lineno">215</tt> <tt class="py-line"><tt class="py-docstring"> from the watch() request is a dictionary with updated channel information,</tt> </tt>
+<a name="L216"></a><tt class="py-lineno">216</tt> <tt class="py-line"><tt class="py-docstring"> such as the resource_id, which is needed when stopping a subscription.</tt> </tt>
+<a name="L217"></a><tt class="py-lineno">217</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L218"></a><tt class="py-lineno">218</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L219"></a><tt class="py-lineno">219</tt> <tt class="py-line"><tt class="py-docstring"> resp: dict, The response from a watch() method.</tt> </tt>
+<a name="L220"></a><tt class="py-lineno">220</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L221"></a><tt class="py-lineno">221</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">json_name</tt><tt class="py-op">,</tt> <tt class="py-name">param_name</tt> <tt class="py-keyword">in</tt> <tt id="link-13" class="py-name"><a title="apiclient.channel.CHANNEL_PARAMS" class="py-name" href="#" onclick="return doclink('link-13', 'CHANNEL_PARAMS', 'link-5');">CHANNEL_PARAMS</a></tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L222"></a><tt class="py-lineno">222</tt> <tt class="py-line"> <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt id="link-14" class="py-name" targets="Method apiclient.schema.Schemas.get()=apiclient.schema.Schemas-class.html#get,Method oauth2client.client.MemoryCache.get()=oauth2client.client.MemoryCache-class.html#get,Method oauth2client.client.Storage.get()=oauth2client.client.Storage-class.html#get"><a title="apiclient.schema.Schemas.get
+oauth2client.client.MemoryCache.get
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-14', 'get', 'link-14');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">json_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">value</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L224"></a><tt class="py-lineno">224</tt> <tt class="py-line"> <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">param_name</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L225"></a><tt class="py-lineno">225</tt> <tt class="py-line"> </tt>
+<a name="notification_from_headers"></a><div id="notification_from_headers-def"><a name="L226"></a><tt class="py-lineno">226</tt> <tt class="py-line"> </tt>
+<a name="L227"></a><tt class="py-lineno">227</tt> <a class="py-toggle" href="#" id="notification_from_headers-toggle" onclick="return toggle('notification_from_headers');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.channel-module.html#notification_from_headers">notification_from_headers</a><tt class="py-op">(</tt><tt class="py-param">channel</tt><tt class="py-op">,</tt> <tt class="py-param">headers</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="notification_from_headers-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="notification_from_headers-expanded"><a name="L228"></a><tt class="py-lineno">228</tt> <tt class="py-line"> <tt class="py-docstring">"""Parse a notification from the webhook request headers, validate</tt> </tt>
+<a name="L229"></a><tt class="py-lineno">229</tt> <tt class="py-line"><tt class="py-docstring"> the notification, and return a Notification object.</tt> </tt>
+<a name="L230"></a><tt class="py-lineno">230</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L231"></a><tt class="py-lineno">231</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L232"></a><tt class="py-lineno">232</tt> <tt class="py-line"><tt class="py-docstring"> channel: Channel, The channel that the notification is associated with.</tt> </tt>
+<a name="L233"></a><tt class="py-lineno">233</tt> <tt class="py-line"><tt class="py-docstring"> headers: dict, A dictionary like object that contains the request headers</tt> </tt>
+<a name="L234"></a><tt class="py-lineno">234</tt> <tt class="py-line"><tt class="py-docstring"> from the webhook HTTP request.</tt> </tt>
+<a name="L235"></a><tt class="py-lineno">235</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L236"></a><tt class="py-lineno">236</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L237"></a><tt class="py-lineno">237</tt> <tt class="py-line"><tt class="py-docstring"> A Notification object.</tt> </tt>
+<a name="L238"></a><tt class="py-lineno">238</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L239"></a><tt class="py-lineno">239</tt> <tt class="py-line"><tt class="py-docstring"> Raises:</tt> </tt>
+<a name="L240"></a><tt class="py-lineno">240</tt> <tt class="py-line"><tt class="py-docstring"> errors.InvalidNotificationError if the notification is invalid.</tt> </tt>
+<a name="L241"></a><tt class="py-lineno">241</tt> <tt class="py-line"><tt class="py-docstring"> ValueError if the X-GOOG-MESSAGE-NUMBER can't be converted to an int.</tt> </tt>
+<a name="L242"></a><tt class="py-lineno">242</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L243"></a><tt class="py-lineno">243</tt> <tt class="py-line"> <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt id="link-15" class="py-name" targets="Function apiclient.channel._upper_header_keys()=apiclient.channel-module.html#_upper_header_keys"><a title="apiclient.channel._upper_header_keys" class="py-name" href="#" onclick="return doclink('link-15', '_upper_header_keys', 'link-15');">_upper_header_keys</a></tt><tt class="py-op">(</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
+<a name="L244"></a><tt class="py-lineno">244</tt> <tt class="py-line"> <tt class="py-name">channel_id</tt> <tt class="py-op">=</tt> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt id="link-16" class="py-name"><a title="apiclient.channel.X_GOOG_CHANNEL_ID" class="py-name" href="#" onclick="return doclink('link-16', 'X_GOOG_CHANNEL_ID', 'link-6');">X_GOOG_CHANNEL_ID</a></tt><tt class="py-op">]</tt> </tt>
+<a name="L245"></a><tt class="py-lineno">245</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-17" class="py-name" targets="Module apiclient.channel=apiclient.channel-module.html"><a title="apiclient.channel" class="py-name" href="#" onclick="return doclink('link-17', 'channel', 'link-17');">channel</a></tt><tt class="py-op">.</tt><tt class="py-name">id</tt> <tt class="py-op">!=</tt> <tt class="py-name">channel_id</tt><tt class="py-op">:</tt> </tt>
+<a name="L246"></a><tt class="py-lineno">246</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-18" class="py-name"><a title="apiclient.errors" class="py-name" href="#" onclick="return doclink('link-18', 'errors', 'link-1');">errors</a></tt><tt class="py-op">.</tt><tt id="link-19" class="py-name" targets="Class apiclient.errors.InvalidNotificationError=apiclient.errors.InvalidNotificationError-class.html"><a title="apiclient.errors.InvalidNotificationError" class="py-name" href="#" onclick="return doclink('link-19', 'InvalidNotificationError', 'link-19');">InvalidNotificationError</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L247"></a><tt class="py-lineno">247</tt> <tt class="py-line"> <tt class="py-string">'Channel id mismatch: %s != %s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-20" class="py-name"><a title="apiclient.channel" class="py-name" href="#" onclick="return doclink('link-20', 'channel', 'link-17');">channel</a></tt><tt class="py-op">.</tt><tt class="py-name">id</tt><tt class="py-op">,</tt> <tt class="py-name">channel_id</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L248"></a><tt class="py-lineno">248</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L249"></a><tt class="py-lineno">249</tt> <tt class="py-line"> <tt class="py-name">message_number</tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">headers</tt><tt class="py-op">[</tt><tt id="link-21" class="py-name"><a title="apiclient.channel.X_GOOG_MESSAGE_NUMBER" class="py-name" href="#" onclick="return doclink('link-21', 'X_GOOG_MESSAGE_NUMBER', 'link-7');">X_GOOG_MESSAGE_NUMBER</a></tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L250"></a><tt class="py-lineno">250</tt> <tt class="py-line"> <tt class="py-name">state</tt> <tt class="py-op">=</tt> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt id="link-22" class="py-name"><a title="apiclient.channel.X_GOOG_RESOURCE_STATE" class="py-name" href="#" onclick="return doclink('link-22', 'X_GOOG_RESOURCE_STATE', 'link-8');">X_GOOG_RESOURCE_STATE</a></tt><tt class="py-op">]</tt> </tt>
+<a name="L251"></a><tt class="py-lineno">251</tt> <tt class="py-line"> <tt class="py-name">resource_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt id="link-23" class="py-name"><a title="apiclient.channel.X_GOOG_RESOURCE_URI" class="py-name" href="#" onclick="return doclink('link-23', 'X_GOOG_RESOURCE_URI', 'link-9');">X_GOOG_RESOURCE_URI</a></tt><tt class="py-op">]</tt> </tt>
+<a name="L252"></a><tt class="py-lineno">252</tt> <tt class="py-line"> <tt class="py-name">resource_id</tt> <tt class="py-op">=</tt> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt id="link-24" class="py-name"><a title="apiclient.channel.X_GOOG_RESOURCE_ID" class="py-name" href="#" onclick="return doclink('link-24', 'X_GOOG_RESOURCE_ID', 'link-10');">X_GOOG_RESOURCE_ID</a></tt><tt class="py-op">]</tt> </tt>
+<a name="L253"></a><tt class="py-lineno">253</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-25" class="py-name" targets="Class apiclient.channel.Notification=apiclient.channel.Notification-class.html"><a title="apiclient.channel.Notification" class="py-name" href="#" onclick="return doclink('link-25', 'Notification', 'link-25');">Notification</a></tt><tt class="py-op">(</tt><tt class="py-name">message_number</tt><tt class="py-op">,</tt> <tt class="py-name">state</tt><tt class="py-op">,</tt> <tt class="py-name">resource_uri</tt><tt class="py-op">,</tt> <tt class="py-name">resource_id</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L254"></a><tt class="py-lineno">254</tt> <tt class="py-line"> </tt>
+<a name="new_webhook_channel"></a><div id="new_webhook_channel-def"><a name="L255"></a><tt class="py-lineno">255</tt> <tt class="py-line"> </tt>
+<a name="L256"></a><tt class="py-lineno">256</tt> <tt class="py-line"><tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-26', 'positional', 'link-11');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="L257"></a><tt class="py-lineno">257</tt> <a class="py-toggle" href="#" id="new_webhook_channel-toggle" onclick="return toggle('new_webhook_channel');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.channel-module.html#new_webhook_channel">new_webhook_channel</a><tt class="py-op">(</tt><tt class="py-param">url</tt><tt class="py-op">,</tt> <tt class="py-param">token</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">expiration</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">params</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="new_webhook_channel-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="new_webhook_channel-expanded"><a name="L258"></a><tt class="py-lineno">258</tt> <tt class="py-line"> <tt class="py-docstring">"""Create a new webhook Channel.</tt> </tt>
+<a name="L259"></a><tt class="py-lineno">259</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L260"></a><tt class="py-lineno">260</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L261"></a><tt class="py-lineno">261</tt> <tt class="py-line"><tt class="py-docstring"> url: str, URL to post notifications to.</tt> </tt>
+<a name="L262"></a><tt class="py-lineno">262</tt> <tt class="py-line"><tt class="py-docstring"> token: str, An arbitrary string associated with the channel that</tt> </tt>
+<a name="L263"></a><tt class="py-lineno">263</tt> <tt class="py-line"><tt class="py-docstring"> is delivered to the target address with each notification delivered</tt> </tt>
+<a name="L264"></a><tt class="py-lineno">264</tt> <tt class="py-line"><tt class="py-docstring"> over this channel.</tt> </tt>
+<a name="L265"></a><tt class="py-lineno">265</tt> <tt class="py-line"><tt class="py-docstring"> expiration: datetime.datetime, A time in the future when the channel</tt> </tt>
+<a name="L266"></a><tt class="py-lineno">266</tt> <tt class="py-line"><tt class="py-docstring"> should expire. Can also be None if the subscription should use the</tt> </tt>
+<a name="L267"></a><tt class="py-lineno">267</tt> <tt class="py-line"><tt class="py-docstring"> default expiration. Note that different services may have different</tt> </tt>
+<a name="L268"></a><tt class="py-lineno">268</tt> <tt class="py-line"><tt class="py-docstring"> limits on how long a subscription lasts. Check the response from the</tt> </tt>
+<a name="L269"></a><tt class="py-lineno">269</tt> <tt class="py-line"><tt class="py-docstring"> watch() method to see the value the service has set for an expiration</tt> </tt>
+<a name="L270"></a><tt class="py-lineno">270</tt> <tt class="py-line"><tt class="py-docstring"> time.</tt> </tt>
+<a name="L271"></a><tt class="py-lineno">271</tt> <tt class="py-line"><tt class="py-docstring"> params: dict, Extra parameters to pass on channel creation. Currently</tt> </tt>
+<a name="L272"></a><tt class="py-lineno">272</tt> <tt class="py-line"><tt class="py-docstring"> not used for webhook channels.</tt> </tt>
+<a name="L273"></a><tt class="py-lineno">273</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L274"></a><tt class="py-lineno">274</tt> <tt class="py-line"> <tt class="py-name">expiration_ms</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L275"></a><tt class="py-lineno">275</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">expiration</tt><tt class="py-op">:</tt> </tt>
+<a name="L276"></a><tt class="py-lineno">276</tt> <tt class="py-line"> <tt class="py-name">delta</tt> <tt class="py-op">=</tt> <tt class="py-name">expiration</tt> <tt class="py-op">-</tt> <tt id="link-27" class="py-name"><a title="apiclient.channel.EPOCH" class="py-name" href="#" onclick="return doclink('link-27', 'EPOCH', 'link-4');">EPOCH</a></tt> </tt>
+<a name="L277"></a><tt class="py-lineno">277</tt> <tt class="py-line"> <tt class="py-name">expiration_ms</tt> <tt class="py-op">=</tt> <tt class="py-name">delta</tt><tt class="py-op">.</tt><tt class="py-name">microseconds</tt><tt class="py-op">/</tt><tt class="py-number">1000</tt> <tt class="py-op">+</tt> <tt class="py-op">(</tt> </tt>
+<a name="L278"></a><tt class="py-lineno">278</tt> <tt class="py-line"> <tt class="py-name">delta</tt><tt class="py-op">.</tt><tt class="py-name">seconds</tt> <tt class="py-op">+</tt> <tt class="py-name">delta</tt><tt class="py-op">.</tt><tt class="py-name">days</tt><tt class="py-op">*</tt><tt class="py-number">24</tt><tt class="py-op">*</tt><tt class="py-number">3600</tt><tt class="py-op">)</tt><tt class="py-op">*</tt><tt class="py-number">1000</tt> </tt>
+<a name="L279"></a><tt class="py-lineno">279</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">expiration_ms</tt> <tt class="py-op"><</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L280"></a><tt class="py-lineno">280</tt> <tt class="py-line"> <tt class="py-name">expiration_ms</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L281"></a><tt class="py-lineno">281</tt> <tt class="py-line"> </tt>
+<a name="L282"></a><tt class="py-lineno">282</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-28" class="py-name" targets="Class apiclient.channel.Channel=apiclient.channel.Channel-class.html"><a title="apiclient.channel.Channel" class="py-name" href="#" onclick="return doclink('link-28', 'Channel', 'link-28');">Channel</a></tt><tt class="py-op">(</tt><tt class="py-string">'web_hook'</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">uuid</tt><tt class="py-op">.</tt><tt class="py-name">uuid4</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L283"></a><tt class="py-lineno">283</tt> <tt class="py-line"> <tt class="py-name">token</tt><tt class="py-op">,</tt> <tt class="py-name">url</tt><tt class="py-op">,</tt> <tt class="py-name">expiration</tt><tt class="py-op">=</tt><tt class="py-name">expiration_ms</tt><tt class="py-op">,</tt> </tt>
+<a name="L284"></a><tt class="py-lineno">284</tt> <tt class="py-line"> <tt class="py-name">params</tt><tt class="py-op">=</tt><tt class="py-name">params</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L285"></a><tt class="py-lineno">285</tt> <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+
+ <!-- Tree link -->
+ <th> <a
+ href="module-tree.html">Trees</a> </th>
+
+ <!-- Index link -->
+ <th> <a
+ href="identifier-index.html">Indices</a> </th>
+
+ <!-- Help link -->
+ <th> <a
+ href="help.html">Help</a> </th>
+
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:47 2013
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/docs/epy/apiclient.channel.Channel-class.html b/docs/epy/apiclient.channel.Channel-class.html
new file mode 100644
index 0000000..e3dd58e
--- /dev/null
+++ b/docs/epy/apiclient.channel.Channel-class.html
@@ -0,0 +1,392 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>apiclient.channel.Channel</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+
+ <!-- Tree link -->
+ <th> <a
+ href="module-tree.html">Trees</a> </th>
+
+ <!-- Index link -->
+ <th> <a
+ href="identifier-index.html">Indices</a> </th>
+
+ <!-- Help link -->
+ <th> <a
+ href="help.html">Help</a> </th>
+
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="apiclient-module.html">Package apiclient</a> ::
+ <a href="apiclient.channel-module.html">Module channel</a> ::
+ Class Channel
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >] | <a href="apiclient.channel.Channel-class.html"
+ target="_top">no frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Channel</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.channel-pysrc.html#Channel">source code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_apiclien" name="uml_class_diagram_for_apiclien">
+<area shape="rect" id="node0" href="apiclient.channel.Channel-class.html#__init__" title="Create a new Channel." alt="" coords="17,39,627,57"/>
+<area shape="rect" id="node0" href="apiclient.channel.Channel-class.html#body" title="Build a body from the Channel." alt="" coords="17,57,627,76"/>
+<area shape="rect" id="node0" href="apiclient.channel.Channel-class.html#update" title="Update a channel with information from the response of watch()." alt="" coords="17,76,627,95"/>
+<area shape="rect" id="node1" href="apiclient.channel.Channel-class.html" title="A Channel for notifications." alt="" coords="5,6,637,101"/>
+</map>
+ <img src="uml_class_diagram_for_apiclien.gif" alt='' usemap="#uml_class_diagram_for_apiclien" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<pre class="literalblock">
+A Channel for notifications.
+
+Usually not constructed directly, instead it is returned from helper
+functions like new_webhook_channel().
+
+Attributes:
+ type: str, The type of delivery mechanism used by this channel. For
+ example, 'web_hook'.
+ id: str, A UUID for the channel.
+ token: str, An arbitrary string associated with the channel that
+ is delivered to the target address with each event delivered
+ over this channel.
+ address: str, The address of the receiving entity where events are
+ delivered. Specific to the channel type.
+ expiration: int, The time, in milliseconds from the epoch, when this
+ channel will expire.
+ params: dict, A dictionary of string to string, with additional parameters
+ controlling delivery channel behavior.
+ resource_id: str, An opaque id that identifies the resource that is
+ being watched. Stable across different API versions.
+ resource_uri: str, The canonicalized ID of the watched resource.
+
+</pre>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="apiclient.channel.Channel-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">type</span>,
+ <span class="summary-sig-arg">id</span>,
+ <span class="summary-sig-arg">token</span>,
+ <span class="summary-sig-arg">address</span>,
+ <span class="summary-sig-arg">expiration</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">params</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">resource_id</span>=<span class="summary-sig-default">""</span>,
+ <span class="summary-sig-arg">resource_uri</span>=<span class="summary-sig-default">""</span>)</span><br />
+ Create a new Channel.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="apiclient.channel-pysrc.html#Channel.__init__">source code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="apiclient.channel.Channel-class.html#body" class="summary-sig-name">body</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Build a body from the Channel.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="apiclient.channel-pysrc.html#Channel.body">source code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="apiclient.channel.Channel-class.html#update" class="summary-sig-name">update</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">resp</span>)</span><br />
+ Update a channel with information from the response of watch().</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="apiclient.channel-pysrc.html#Channel.update">source code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__delattr__</code>,
+ <code>__format__</code>,
+ <code>__getattribute__</code>,
+ <code>__hash__</code>,
+ <code>__new__</code>,
+ <code>__reduce__</code>,
+ <code>__reduce_ex__</code>,
+ <code>__repr__</code>,
+ <code>__setattr__</code>,
+ <code>__sizeof__</code>,
+ <code>__str__</code>,
+ <code>__subclasshook__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Properties</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Properties"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__class__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">type</span>,
+ <span class="sig-arg">id</span>,
+ <span class="sig-arg">token</span>,
+ <span class="sig-arg">address</span>,
+ <span class="sig-arg">expiration</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">params</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">resource_id</span>=<span class="sig-default">""</span>,
+ <span class="sig-arg">resource_uri</span>=<span class="sig-default">""</span>)</span>
+ <br /><em class="fname">(Constructor)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="apiclient.channel-pysrc.html#Channel.__init__">source code</a></span>
+ </td>
+ </tr></table>
+
+ <pre class="literalblock">
+Create a new Channel.
+
+In user code, this Channel constructor will not typically be called
+manually since there are functions for creating channels for each specific
+type with a more customized set of arguments to pass.
+
+Args:
+ type: str, The type of delivery mechanism used by this channel. For
+ example, 'web_hook'.
+ id: str, A UUID for the channel.
+ token: str, An arbitrary string associated with the channel that
+ is delivered to the target address with each event delivered
+ over this channel.
+ address: str, The address of the receiving entity where events are
+ delivered. Specific to the channel type.
+ expiration: int, The time, in milliseconds from the epoch, when this
+ channel will expire.
+ params: dict, A dictionary of string to string, with additional parameters
+ controlling delivery channel behavior.
+ resource_id: str, An opaque id that identifies the resource that is
+ being watched. Stable across different API versions.
+ resource_uri: str, The canonicalized ID of the watched resource.
+
+</pre>
+ <dl class="fields">
+ <dt>Decorators:</dt>
+ <dd><ul class="nomargin-top">
+ <li><code>@util.positional(5)</code></li>
+ </ul></dd>
+ <dt>Overrides:
+ object.__init__
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<a name="body"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">body</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="apiclient.channel-pysrc.html#Channel.body">source code</a></span>
+ </td>
+ </tr></table>
+
+ <pre class="literalblock">
+Build a body from the Channel.
+
+Constructs a dictionary that's appropriate for passing into watch()
+methods as the value of body argument.
+
+Returns:
+ A dictionary representation of the channel.
+
+</pre>
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="update"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">update</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">resp</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="apiclient.channel-pysrc.html#Channel.update">source code</a></span>
+ </td>
+ </tr></table>
+
+ <pre class="literalblock">
+Update a channel with information from the response of watch().
+
+When a request is sent to watch() a resource, the response returned
+from the watch() request is a dictionary with updated channel information,
+such as the resource_id, which is needed when stopping a subscription.
+
+Args:
+ resp: dict, The response from a watch() method.
+
+</pre>
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+
+ <!-- Tree link -->
+ <th> <a
+ href="module-tree.html">Trees</a> </th>
+
+ <!-- Index link -->
+ <th> <a
+ href="identifier-index.html">Indices</a> </th>
+
+ <!-- Help link -->
+ <th> <a
+ href="help.html">Help</a> </th>
+
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:42 2013
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/docs/epy/apiclient.channel.Notification-class.html b/docs/epy/apiclient.channel.Notification-class.html
new file mode 100644
index 0000000..4185174
--- /dev/null
+++ b/docs/epy/apiclient.channel.Notification-class.html
@@ -0,0 +1,265 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>apiclient.channel.Notification</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+
+ <!-- Tree link -->
+ <th> <a
+ href="module-tree.html">Trees</a> </th>
+
+ <!-- Index link -->
+ <th> <a
+ href="identifier-index.html">Indices</a> </th>
+
+ <!-- Help link -->
+ <th> <a
+ href="help.html">Help</a> </th>
+
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="apiclient-module.html">Package apiclient</a> ::
+ <a href="apiclient.channel-module.html">Module channel</a> ::
+ Class Notification
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >] | <a href="apiclient.channel.Notification-class.html"
+ target="_top">no frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class Notification</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.channel-pysrc.html#Notification">source code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_apiclien_2" name="uml_class_diagram_for_apiclien_2">
+<area shape="rect" id="node1" href="apiclient.channel.Notification-class.html#__init__" title="Notification constructor." alt="" coords="17,39,401,57"/>
+<area shape="rect" id="node1" href="apiclient.channel.Notification-class.html" title="A Notification from a Channel." alt="" coords="5,6,413,63"/>
+</map>
+ <img src="uml_class_diagram_for_apiclien_2.gif" alt='' usemap="#uml_class_diagram_for_apiclien_2" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<pre class="literalblock">
+A Notification from a Channel.
+
+Notifications are not usually constructed directly, but are returned
+from functions like notification_from_headers().
+
+Attributes:
+ message_number: int, The unique id number of this notification.
+ state: str, The state of the resource being monitored.
+ uri: str, The address of the resource being monitored.
+ resource_id: str, The unique identifier of the version of the resource at
+ this event.
+
+</pre>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="apiclient.channel.Notification-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">message_number</span>,
+ <span class="summary-sig-arg">state</span>,
+ <span class="summary-sig-arg">resource_uri</span>,
+ <span class="summary-sig-arg">resource_id</span>)</span><br />
+ Notification constructor.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="apiclient.channel-pysrc.html#Notification.__init__">source code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__delattr__</code>,
+ <code>__format__</code>,
+ <code>__getattribute__</code>,
+ <code>__hash__</code>,
+ <code>__new__</code>,
+ <code>__reduce__</code>,
+ <code>__reduce_ex__</code>,
+ <code>__repr__</code>,
+ <code>__setattr__</code>,
+ <code>__sizeof__</code>,
+ <code>__str__</code>,
+ <code>__subclasshook__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Properties</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Properties"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__class__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== METHOD DETAILS ==================== -->
+<a name="section-MethodDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Method Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-MethodDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="__init__"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">message_number</span>,
+ <span class="sig-arg">state</span>,
+ <span class="sig-arg">resource_uri</span>,
+ <span class="sig-arg">resource_id</span>)</span>
+ <br /><em class="fname">(Constructor)</em>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="apiclient.channel-pysrc.html#Notification.__init__">source code</a></span>
+ </td>
+ </tr></table>
+
+ <pre class="literalblock">
+Notification constructor.
+
+Args:
+ message_number: int, The unique id number of this notification.
+ state: str, The state of the resource being monitored. Can be one
+ of "exists", "not_exists", or "sync".
+ resource_uri: str, The address of the resource being monitored.
+ resource_id: str, The identifier of the watched resource.
+
+</pre>
+ <dl class="fields">
+ <dt>Decorators:</dt>
+ <dd><ul class="nomargin-top">
+ <li><code>@util.positional(5)</code></li>
+ </ul></dd>
+ <dt>Overrides:
+ object.__init__
+ </dt>
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+
+ <!-- Tree link -->
+ <th> <a
+ href="module-tree.html">Trees</a> </th>
+
+ <!-- Index link -->
+ <th> <a
+ href="identifier-index.html">Indices</a> </th>
+
+ <!-- Help link -->
+ <th> <a
+ href="help.html">Help</a> </th>
+
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:43 2013
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/docs/epy/apiclient.discovery-module.html b/docs/epy/apiclient.discovery-module.html
index 7fe3c03..a431623 100644
--- a/docs/epy/apiclient.discovery-module.html
+++ b/docs/epy/apiclient.discovery-module.html
@@ -1068,7 +1068,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:23 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:42 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.discovery-pysrc.html b/docs/epy/apiclient.discovery-pysrc.html
index 5bef416..90332c0 100644
--- a/docs/epy/apiclient.discovery-pysrc.html
+++ b/docs/epy/apiclient.discovery-pysrc.html
@@ -459,9 +459,9 @@
<a name="L364"></a><tt class="py-lineno">364</tt> <tt class="py-line"> <tt class="py-comment"># Add 'body' (our own reserved word) to parameters if the method supports</tt> </tt>
<a name="L365"></a><tt class="py-lineno">365</tt> <tt class="py-line"> <tt class="py-comment"># a request payload.</tt> </tt>
<a name="L366"></a><tt class="py-lineno">366</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">http_method</tt> <tt class="py-keyword">in</tt> <tt id="link-99" class="py-name"><a title="apiclient.discovery.HTTP_PAYLOAD_METHODS" class="py-name" href="#" onclick="return doclink('link-99', 'HTTP_PAYLOAD_METHODS', 'link-53');">HTTP_PAYLOAD_METHODS</a></tt> <tt class="py-keyword">and</tt> <tt class="py-string">'request'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">method_desc</tt><tt class="py-op">:</tt> </tt>
-<a name="L367"></a><tt class="py-lineno">367</tt> <tt class="py-line"> <tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt id="link-100" class="py-name"><a title="apiclient.discovery.BODY_PARAMETER_DEFAULT_VALUE" class="py-name" href="#" onclick="return doclink('link-100', 'BODY_PARAMETER_DEFAULT_VALUE', 'link-55');">BODY_PARAMETER_DEFAULT_VALUE</a></tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L368"></a><tt class="py-lineno">368</tt> <tt class="py-line"> <tt class="py-name">body</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">method_desc</tt><tt class="py-op">[</tt><tt class="py-string">'request'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L369"></a><tt class="py-lineno">369</tt> <tt class="py-line"> <tt class="py-name">parameters</tt><tt class="py-op">[</tt><tt class="py-string">'body'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">body</tt> </tt>
+<a name="L367"></a><tt class="py-lineno">367</tt> <tt class="py-line"> <tt id="link-100" class="py-name" targets="Method apiclient.channel.Channel.body()=apiclient.channel.Channel-class.html#body"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-100', 'body', 'link-100');">body</a></tt> <tt class="py-op">=</tt> <tt id="link-101" class="py-name"><a title="apiclient.discovery.BODY_PARAMETER_DEFAULT_VALUE" class="py-name" href="#" onclick="return doclink('link-101', 'BODY_PARAMETER_DEFAULT_VALUE', 'link-55');">BODY_PARAMETER_DEFAULT_VALUE</a></tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L368"></a><tt class="py-lineno">368</tt> <tt class="py-line"> <tt id="link-102" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-102', 'body', 'link-100');">body</a></tt><tt class="py-op">.</tt><tt id="link-103" class="py-name" targets="Method apiclient.channel.Channel.update()=apiclient.channel.Channel-class.html#update"><a title="apiclient.channel.Channel.update" class="py-name" href="#" onclick="return doclink('link-103', 'update', 'link-103');">update</a></tt><tt class="py-op">(</tt><tt class="py-name">method_desc</tt><tt class="py-op">[</tt><tt class="py-string">'request'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L369"></a><tt class="py-lineno">369</tt> <tt class="py-line"> <tt class="py-name">parameters</tt><tt class="py-op">[</tt><tt class="py-string">'body'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-104" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-104', 'body', 'link-100');">body</a></tt> </tt>
<a name="L370"></a><tt class="py-lineno">370</tt> <tt class="py-line"> </tt>
<a name="L371"></a><tt class="py-lineno">371</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">parameters</tt> </tt>
</div><a name="L372"></a><tt class="py-lineno">372</tt> <tt class="py-line"> </tt>
@@ -496,32 +496,32 @@
<a name="L401"></a><tt class="py-lineno">401</tt> <tt class="py-line"><tt class="py-docstring"> the discovery document and the relative path for the API method. If</tt> </tt>
<a name="L402"></a><tt class="py-lineno">402</tt> <tt class="py-line"><tt class="py-docstring"> media upload is not supported, this is None.</tt> </tt>
<a name="L403"></a><tt class="py-lineno">403</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L404"></a><tt class="py-lineno">404</tt> <tt class="py-line"> <tt class="py-name">media_upload</tt> <tt class="py-op">=</tt> <tt class="py-name">method_desc</tt><tt class="py-op">.</tt><tt id="link-101" class="py-name"><a title="apiclient.schema.Schemas.get
+<a name="L404"></a><tt class="py-lineno">404</tt> <tt class="py-line"> <tt class="py-name">media_upload</tt> <tt class="py-op">=</tt> <tt class="py-name">method_desc</tt><tt class="py-op">.</tt><tt id="link-105" class="py-name"><a title="apiclient.schema.Schemas.get
oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-101', 'get', 'link-84');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'mediaUpload'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
-<a name="L405"></a><tt class="py-lineno">405</tt> <tt class="py-line"> <tt id="link-102" class="py-name" targets="Variable apiclient.model.BaseModel.accept=apiclient.model.BaseModel-class.html#accept,Variable apiclient.model.JsonModel.accept=apiclient.model.JsonModel-class.html#accept,Variable apiclient.model.MediaModel.accept=apiclient.model.MediaModel-class.html#accept,Variable apiclient.model.ProtocolBufferModel.accept=apiclient.model.ProtocolBufferModel-class.html#accept,Variable apiclient.model.RawModel.accept=apiclient.model.RawModel-class.html#accept"><a title="apiclient.model.BaseModel.accept
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-105', 'get', 'link-84');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'mediaUpload'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L405"></a><tt class="py-lineno">405</tt> <tt class="py-line"> <tt id="link-106" class="py-name" targets="Variable apiclient.model.BaseModel.accept=apiclient.model.BaseModel-class.html#accept,Variable apiclient.model.JsonModel.accept=apiclient.model.JsonModel-class.html#accept,Variable apiclient.model.MediaModel.accept=apiclient.model.MediaModel-class.html#accept,Variable apiclient.model.ProtocolBufferModel.accept=apiclient.model.ProtocolBufferModel-class.html#accept,Variable apiclient.model.RawModel.accept=apiclient.model.RawModel-class.html#accept"><a title="apiclient.model.BaseModel.accept
apiclient.model.JsonModel.accept
apiclient.model.MediaModel.accept
apiclient.model.ProtocolBufferModel.accept
-apiclient.model.RawModel.accept" class="py-name" href="#" onclick="return doclink('link-102', 'accept', 'link-102');">accept</a></tt> <tt class="py-op">=</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-103" class="py-name"><a title="apiclient.schema.Schemas.get
+apiclient.model.RawModel.accept" class="py-name" href="#" onclick="return doclink('link-106', 'accept', 'link-106');">accept</a></tt> <tt class="py-op">=</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-107" class="py-name"><a title="apiclient.schema.Schemas.get
oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-103', 'get', 'link-84');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'accept'</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L406"></a><tt class="py-lineno">406</tt> <tt class="py-line"> <tt class="py-name">max_size</tt> <tt class="py-op">=</tt> <tt id="link-104" class="py-name" targets="Function apiclient.discovery._media_size_to_long()=apiclient.discovery-module.html#_media_size_to_long"><a title="apiclient.discovery._media_size_to_long" class="py-name" href="#" onclick="return doclink('link-104', '_media_size_to_long', 'link-104');">_media_size_to_long</a></tt><tt class="py-op">(</tt><tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-105" class="py-name"><a title="apiclient.schema.Schemas.get
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-107', 'get', 'link-84');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'accept'</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L406"></a><tt class="py-lineno">406</tt> <tt class="py-line"> <tt class="py-name">max_size</tt> <tt class="py-op">=</tt> <tt id="link-108" class="py-name" targets="Function apiclient.discovery._media_size_to_long()=apiclient.discovery-module.html#_media_size_to_long"><a title="apiclient.discovery._media_size_to_long" class="py-name" href="#" onclick="return doclink('link-108', '_media_size_to_long', 'link-108');">_media_size_to_long</a></tt><tt class="py-op">(</tt><tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-109" class="py-name"><a title="apiclient.schema.Schemas.get
oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-105', 'get', 'link-84');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'maxSize'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-109', 'get', 'link-84');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'maxSize'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L407"></a><tt class="py-lineno">407</tt> <tt class="py-line"> <tt class="py-name">media_path_url</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
<a name="L408"></a><tt class="py-lineno">408</tt> <tt class="py-line"> </tt>
<a name="L409"></a><tt class="py-lineno">409</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">media_upload</tt><tt class="py-op">:</tt> </tt>
-<a name="L410"></a><tt class="py-lineno">410</tt> <tt class="py-line"> <tt class="py-name">media_path_url</tt> <tt class="py-op">=</tt> <tt id="link-106" class="py-name" targets="Function apiclient.discovery._media_path_url_from_info()=apiclient.discovery-module.html#_media_path_url_from_info"><a title="apiclient.discovery._media_path_url_from_info" class="py-name" href="#" onclick="return doclink('link-106', '_media_path_url_from_info', 'link-106');">_media_path_url_from_info</a></tt><tt class="py-op">(</tt><tt class="py-name">root_desc</tt><tt class="py-op">,</tt> <tt class="py-name">path_url</tt><tt class="py-op">)</tt> </tt>
-<a name="L411"></a><tt class="py-lineno">411</tt> <tt class="py-line"> <tt class="py-name">parameters</tt><tt class="py-op">[</tt><tt class="py-string">'media_body'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-107" class="py-name"><a title="apiclient.discovery.MEDIA_BODY_PARAMETER_DEFAULT_VALUE" class="py-name" href="#" onclick="return doclink('link-107', 'MEDIA_BODY_PARAMETER_DEFAULT_VALUE', 'link-56');">MEDIA_BODY_PARAMETER_DEFAULT_VALUE</a></tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L410"></a><tt class="py-lineno">410</tt> <tt class="py-line"> <tt class="py-name">media_path_url</tt> <tt class="py-op">=</tt> <tt id="link-110" class="py-name" targets="Function apiclient.discovery._media_path_url_from_info()=apiclient.discovery-module.html#_media_path_url_from_info"><a title="apiclient.discovery._media_path_url_from_info" class="py-name" href="#" onclick="return doclink('link-110', '_media_path_url_from_info', 'link-110');">_media_path_url_from_info</a></tt><tt class="py-op">(</tt><tt class="py-name">root_desc</tt><tt class="py-op">,</tt> <tt class="py-name">path_url</tt><tt class="py-op">)</tt> </tt>
+<a name="L411"></a><tt class="py-lineno">411</tt> <tt class="py-line"> <tt class="py-name">parameters</tt><tt class="py-op">[</tt><tt class="py-string">'media_body'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-111" class="py-name"><a title="apiclient.discovery.MEDIA_BODY_PARAMETER_DEFAULT_VALUE" class="py-name" href="#" onclick="return doclink('link-111', 'MEDIA_BODY_PARAMETER_DEFAULT_VALUE', 'link-56');">MEDIA_BODY_PARAMETER_DEFAULT_VALUE</a></tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L412"></a><tt class="py-lineno">412</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'body'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">parameters</tt><tt class="py-op">:</tt> </tt>
<a name="L413"></a><tt class="py-lineno">413</tt> <tt class="py-line"> <tt class="py-name">parameters</tt><tt class="py-op">[</tt><tt class="py-string">'body'</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'required'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
<a name="L414"></a><tt class="py-lineno">414</tt> <tt class="py-line"> </tt>
-<a name="L415"></a><tt class="py-lineno">415</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-108" class="py-name"><a title="apiclient.model.BaseModel.accept
+<a name="L415"></a><tt class="py-lineno">415</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-112" class="py-name"><a title="apiclient.model.BaseModel.accept
apiclient.model.JsonModel.accept
apiclient.model.MediaModel.accept
apiclient.model.ProtocolBufferModel.accept
-apiclient.model.RawModel.accept" class="py-name" href="#" onclick="return doclink('link-108', 'accept', 'link-102');">accept</a></tt><tt class="py-op">,</tt> <tt class="py-name">max_size</tt><tt class="py-op">,</tt> <tt class="py-name">media_path_url</tt> </tt>
+apiclient.model.RawModel.accept" class="py-name" href="#" onclick="return doclink('link-112', 'accept', 'link-106');">accept</a></tt><tt class="py-op">,</tt> <tt class="py-name">max_size</tt><tt class="py-op">,</tt> <tt class="py-name">media_path_url</tt> </tt>
</div><a name="L416"></a><tt class="py-lineno">416</tt> <tt class="py-line"> </tt>
<a name="_fix_up_method_description"></a><div id="_fix_up_method_description-def"><a name="L417"></a><tt class="py-lineno">417</tt> <tt class="py-line"> </tt>
<a name="L418"></a><tt class="py-lineno">418</tt> <a class="py-toggle" href="#" id="_fix_up_method_description-toggle" onclick="return toggle('_fix_up_method_description');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.discovery-module.html#_fix_up_method_description">_fix_up_method_description</a><tt class="py-op">(</tt><tt class="py-param">method_desc</tt><tt class="py-op">,</tt> <tt class="py-param">root_desc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
@@ -559,22 +559,22 @@
<a name="L450"></a><tt class="py-lineno">450</tt> <tt class="py-line"> <tt class="py-name">http_method</tt> <tt class="py-op">=</tt> <tt class="py-name">method_desc</tt><tt class="py-op">[</tt><tt class="py-string">'httpMethod'</tt><tt class="py-op">]</tt> </tt>
<a name="L451"></a><tt class="py-lineno">451</tt> <tt class="py-line"> <tt class="py-name">method_id</tt> <tt class="py-op">=</tt> <tt class="py-name">method_desc</tt><tt class="py-op">[</tt><tt class="py-string">'id'</tt><tt class="py-op">]</tt> </tt>
<a name="L452"></a><tt class="py-lineno">452</tt> <tt class="py-line"> </tt>
-<a name="L453"></a><tt class="py-lineno">453</tt> <tt class="py-line"> <tt class="py-name">parameters</tt> <tt class="py-op">=</tt> <tt id="link-109" class="py-name" targets="Function apiclient.discovery._fix_up_parameters()=apiclient.discovery-module.html#_fix_up_parameters"><a title="apiclient.discovery._fix_up_parameters" class="py-name" href="#" onclick="return doclink('link-109', '_fix_up_parameters', 'link-109');">_fix_up_parameters</a></tt><tt class="py-op">(</tt><tt class="py-name">method_desc</tt><tt class="py-op">,</tt> <tt class="py-name">root_desc</tt><tt class="py-op">,</tt> <tt class="py-name">http_method</tt><tt class="py-op">)</tt> </tt>
+<a name="L453"></a><tt class="py-lineno">453</tt> <tt class="py-line"> <tt class="py-name">parameters</tt> <tt class="py-op">=</tt> <tt id="link-113" class="py-name" targets="Function apiclient.discovery._fix_up_parameters()=apiclient.discovery-module.html#_fix_up_parameters"><a title="apiclient.discovery._fix_up_parameters" class="py-name" href="#" onclick="return doclink('link-113', '_fix_up_parameters', 'link-113');">_fix_up_parameters</a></tt><tt class="py-op">(</tt><tt class="py-name">method_desc</tt><tt class="py-op">,</tt> <tt class="py-name">root_desc</tt><tt class="py-op">,</tt> <tt class="py-name">http_method</tt><tt class="py-op">)</tt> </tt>
<a name="L454"></a><tt class="py-lineno">454</tt> <tt class="py-line"> <tt class="py-comment"># Order is important. `_fix_up_media_upload` needs `method_desc` to have a</tt> </tt>
<a name="L455"></a><tt class="py-lineno">455</tt> <tt class="py-line"> <tt class="py-comment"># 'parameters' key and needs to know if there is a 'body' parameter because it</tt> </tt>
<a name="L456"></a><tt class="py-lineno">456</tt> <tt class="py-line"> <tt class="py-comment"># also sets a 'media_body' parameter.</tt> </tt>
-<a name="L457"></a><tt class="py-lineno">457</tt> <tt class="py-line"> <tt id="link-110" class="py-name"><a title="apiclient.model.BaseModel.accept
+<a name="L457"></a><tt class="py-lineno">457</tt> <tt class="py-line"> <tt id="link-114" class="py-name"><a title="apiclient.model.BaseModel.accept
apiclient.model.JsonModel.accept
apiclient.model.MediaModel.accept
apiclient.model.ProtocolBufferModel.accept
-apiclient.model.RawModel.accept" class="py-name" href="#" onclick="return doclink('link-110', 'accept', 'link-102');">accept</a></tt><tt class="py-op">,</tt> <tt class="py-name">max_size</tt><tt class="py-op">,</tt> <tt class="py-name">media_path_url</tt> <tt class="py-op">=</tt> <tt id="link-111" class="py-name" targets="Function apiclient.discovery._fix_up_media_upload()=apiclient.discovery-module.html#_fix_up_media_upload"><a title="apiclient.discovery._fix_up_media_upload" class="py-name" href="#" onclick="return doclink('link-111', '_fix_up_media_upload', 'link-111');">_fix_up_media_upload</a></tt><tt class="py-op">(</tt> </tt>
+apiclient.model.RawModel.accept" class="py-name" href="#" onclick="return doclink('link-114', 'accept', 'link-106');">accept</a></tt><tt class="py-op">,</tt> <tt class="py-name">max_size</tt><tt class="py-op">,</tt> <tt class="py-name">media_path_url</tt> <tt class="py-op">=</tt> <tt id="link-115" class="py-name" targets="Function apiclient.discovery._fix_up_media_upload()=apiclient.discovery-module.html#_fix_up_media_upload"><a title="apiclient.discovery._fix_up_media_upload" class="py-name" href="#" onclick="return doclink('link-115', '_fix_up_media_upload', 'link-115');">_fix_up_media_upload</a></tt><tt class="py-op">(</tt> </tt>
<a name="L458"></a><tt class="py-lineno">458</tt> <tt class="py-line"> <tt class="py-name">method_desc</tt><tt class="py-op">,</tt> <tt class="py-name">root_desc</tt><tt class="py-op">,</tt> <tt class="py-name">path_url</tt><tt class="py-op">,</tt> <tt class="py-name">parameters</tt><tt class="py-op">)</tt> </tt>
<a name="L459"></a><tt class="py-lineno">459</tt> <tt class="py-line"> </tt>
-<a name="L460"></a><tt class="py-lineno">460</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">path_url</tt><tt class="py-op">,</tt> <tt class="py-name">http_method</tt><tt class="py-op">,</tt> <tt class="py-name">method_id</tt><tt class="py-op">,</tt> <tt id="link-112" class="py-name"><a title="apiclient.model.BaseModel.accept
+<a name="L460"></a><tt class="py-lineno">460</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">path_url</tt><tt class="py-op">,</tt> <tt class="py-name">http_method</tt><tt class="py-op">,</tt> <tt class="py-name">method_id</tt><tt class="py-op">,</tt> <tt id="link-116" class="py-name"><a title="apiclient.model.BaseModel.accept
apiclient.model.JsonModel.accept
apiclient.model.MediaModel.accept
apiclient.model.ProtocolBufferModel.accept
-apiclient.model.RawModel.accept" class="py-name" href="#" onclick="return doclink('link-112', 'accept', 'link-102');">accept</a></tt><tt class="py-op">,</tt> <tt class="py-name">max_size</tt><tt class="py-op">,</tt> <tt class="py-name">media_path_url</tt> </tt>
+apiclient.model.RawModel.accept" class="py-name" href="#" onclick="return doclink('link-116', 'accept', 'link-106');">accept</a></tt><tt class="py-op">,</tt> <tt class="py-name">max_size</tt><tt class="py-op">,</tt> <tt class="py-name">media_path_url</tt> </tt>
</div><a name="L461"></a><tt class="py-lineno">461</tt> <tt class="py-line"> </tt>
<a name="ResourceMethodParameters"></a><div id="ResourceMethodParameters-def"><a name="L462"></a><tt class="py-lineno">462</tt> <tt class="py-line"> </tt>
<a name="L463"></a><tt class="py-lineno">463</tt> <tt class="py-line"><tt class="py-comment"># TODO(dhermes): Convert this class to ResourceMethod and make it callable</tt> </tt>
@@ -617,14 +617,14 @@
<a name="L500"></a><tt class="py-lineno">500</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">required_params</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
<a name="L501"></a><tt class="py-lineno">501</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">repeated_params</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
<a name="L502"></a><tt class="py-lineno">502</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">pattern_params</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-<a name="L503"></a><tt class="py-lineno">503</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-113" class="py-name" targets="Variable oauth2client.tools.ClientRedirectServer.query_params=oauth2client.tools.ClientRedirectServer-class.html#query_params"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-113', 'query_params', 'link-113');">query_params</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L503"></a><tt class="py-lineno">503</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-117" class="py-name" targets="Variable oauth2client.tools.ClientRedirectServer.query_params=oauth2client.tools.ClientRedirectServer-class.html#query_params"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-117', 'query_params', 'link-117');">query_params</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
<a name="L504"></a><tt class="py-lineno">504</tt> <tt class="py-line"> <tt class="py-comment"># TODO(dhermes): Change path_params to a list if the extra URITEMPLATE</tt> </tt>
<a name="L505"></a><tt class="py-lineno">505</tt> <tt class="py-line"> <tt class="py-comment"># parsing is gotten rid of.</tt> </tt>
-<a name="L506"></a><tt class="py-lineno">506</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">path_params</tt> <tt class="py-op">=</tt> <tt id="link-114" class="py-name" targets="Method oauth2client.client.MemoryCache.set()=oauth2client.client.MemoryCache-class.html#set"><a title="oauth2client.client.MemoryCache.set" class="py-name" href="#" onclick="return doclink('link-114', 'set', 'link-114');">set</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L506"></a><tt class="py-lineno">506</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">path_params</tt> <tt class="py-op">=</tt> <tt id="link-118" class="py-name" targets="Method oauth2client.client.MemoryCache.set()=oauth2client.client.MemoryCache-class.html#set"><a title="oauth2client.client.MemoryCache.set" class="py-name" href="#" onclick="return doclink('link-118', 'set', 'link-118');">set</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L507"></a><tt class="py-lineno">507</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">param_types</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
<a name="L508"></a><tt class="py-lineno">508</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">enum_params</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
<a name="L509"></a><tt class="py-lineno">509</tt> <tt class="py-line"> </tt>
-<a name="L510"></a><tt class="py-lineno">510</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-115" class="py-name" targets="Method apiclient.discovery.ResourceMethodParameters.set_parameters()=apiclient.discovery.ResourceMethodParameters-class.html#set_parameters"><a title="apiclient.discovery.ResourceMethodParameters.set_parameters" class="py-name" href="#" onclick="return doclink('link-115', 'set_parameters', 'link-115');">set_parameters</a></tt><tt class="py-op">(</tt><tt class="py-name">method_desc</tt><tt class="py-op">)</tt> </tt>
+<a name="L510"></a><tt class="py-lineno">510</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-119" class="py-name" targets="Method apiclient.discovery.ResourceMethodParameters.set_parameters()=apiclient.discovery.ResourceMethodParameters-class.html#set_parameters"><a title="apiclient.discovery.ResourceMethodParameters.set_parameters" class="py-name" href="#" onclick="return doclink('link-119', 'set_parameters', 'link-119');">set_parameters</a></tt><tt class="py-op">(</tt><tt class="py-name">method_desc</tt><tt class="py-op">)</tt> </tt>
</div><a name="L511"></a><tt class="py-lineno">511</tt> <tt class="py-line"> </tt>
<a name="ResourceMethodParameters.set_parameters"></a><div id="ResourceMethodParameters.set_parameters-def"><a name="L512"></a><tt class="py-lineno">512</tt> <a class="py-toggle" href="#" id="ResourceMethodParameters.set_parameters-toggle" onclick="return toggle('ResourceMethodParameters.set_parameters');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.discovery.ResourceMethodParameters-class.html#set_parameters">set_parameters</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">method_desc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="ResourceMethodParameters.set_parameters-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="ResourceMethodParameters.set_parameters-expanded"><a name="L513"></a><tt class="py-lineno">513</tt> <tt class="py-line"> <tt class="py-docstring">"""Populates maps and lists based on method description.</tt> </tt>
@@ -637,49 +637,49 @@
<a name="L520"></a><tt class="py-lineno">520</tt> <tt class="py-line"><tt class="py-docstring"> comes from the dictionary of methods stored in the 'methods' key in</tt> </tt>
<a name="L521"></a><tt class="py-lineno">521</tt> <tt class="py-line"><tt class="py-docstring"> the deserialized discovery document.</tt> </tt>
<a name="L522"></a><tt class="py-lineno">522</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L523"></a><tt class="py-lineno">523</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">arg</tt><tt class="py-op">,</tt> <tt class="py-name">desc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">method_desc</tt><tt class="py-op">.</tt><tt id="link-116" class="py-name"><a title="apiclient.schema.Schemas.get
+<a name="L523"></a><tt class="py-lineno">523</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">arg</tt><tt class="py-op">,</tt> <tt class="py-name">desc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">method_desc</tt><tt class="py-op">.</tt><tt id="link-120" class="py-name"><a title="apiclient.schema.Schemas.get
oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-116', 'get', 'link-84');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'parameters'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L524"></a><tt class="py-lineno">524</tt> <tt class="py-line"> <tt class="py-name">param</tt> <tt class="py-op">=</tt> <tt id="link-117" class="py-name" targets="Function apiclient.discovery.key2param()=apiclient.discovery-module.html#key2param"><a title="apiclient.discovery.key2param" class="py-name" href="#" onclick="return doclink('link-117', 'key2param', 'link-117');">key2param</a></tt><tt class="py-op">(</tt><tt class="py-name">arg</tt><tt class="py-op">)</tt> </tt>
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-120', 'get', 'link-84');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'parameters'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L524"></a><tt class="py-lineno">524</tt> <tt class="py-line"> <tt class="py-name">param</tt> <tt class="py-op">=</tt> <tt id="link-121" class="py-name" targets="Function apiclient.discovery.key2param()=apiclient.discovery-module.html#key2param"><a title="apiclient.discovery.key2param" class="py-name" href="#" onclick="return doclink('link-121', 'key2param', 'link-121');">key2param</a></tt><tt class="py-op">(</tt><tt class="py-name">arg</tt><tt class="py-op">)</tt> </tt>
<a name="L525"></a><tt class="py-lineno">525</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">argmap</tt><tt class="py-op">[</tt><tt class="py-name">param</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">arg</tt> </tt>
<a name="L526"></a><tt class="py-lineno">526</tt> <tt class="py-line"> </tt>
-<a name="L527"></a><tt class="py-lineno">527</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">desc</tt><tt class="py-op">.</tt><tt id="link-118" class="py-name"><a title="apiclient.schema.Schemas.get
+<a name="L527"></a><tt class="py-lineno">527</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">desc</tt><tt class="py-op">.</tt><tt id="link-122" class="py-name"><a title="apiclient.schema.Schemas.get
oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-118', 'get', 'link-84');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'pattern'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-122', 'get', 'link-84');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'pattern'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L528"></a><tt class="py-lineno">528</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">pattern_params</tt><tt class="py-op">[</tt><tt class="py-name">param</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">desc</tt><tt class="py-op">[</tt><tt class="py-string">'pattern'</tt><tt class="py-op">]</tt> </tt>
-<a name="L529"></a><tt class="py-lineno">529</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">desc</tt><tt class="py-op">.</tt><tt id="link-119" class="py-name"><a title="apiclient.schema.Schemas.get
+<a name="L529"></a><tt class="py-lineno">529</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">desc</tt><tt class="py-op">.</tt><tt id="link-123" class="py-name"><a title="apiclient.schema.Schemas.get
oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-119', 'get', 'link-84');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'enum'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-123', 'get', 'link-84');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'enum'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L530"></a><tt class="py-lineno">530</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">enum_params</tt><tt class="py-op">[</tt><tt class="py-name">param</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">desc</tt><tt class="py-op">[</tt><tt class="py-string">'enum'</tt><tt class="py-op">]</tt> </tt>
-<a name="L531"></a><tt class="py-lineno">531</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">desc</tt><tt class="py-op">.</tt><tt id="link-120" class="py-name"><a title="apiclient.schema.Schemas.get
+<a name="L531"></a><tt class="py-lineno">531</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">desc</tt><tt class="py-op">.</tt><tt id="link-124" class="py-name"><a title="apiclient.schema.Schemas.get
oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-120', 'get', 'link-84');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'required'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-124', 'get', 'link-84');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'required'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L532"></a><tt class="py-lineno">532</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">required_params</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">param</tt><tt class="py-op">)</tt> </tt>
-<a name="L533"></a><tt class="py-lineno">533</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">desc</tt><tt class="py-op">.</tt><tt id="link-121" class="py-name"><a title="apiclient.schema.Schemas.get
+<a name="L533"></a><tt class="py-lineno">533</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">desc</tt><tt class="py-op">.</tt><tt id="link-125" class="py-name"><a title="apiclient.schema.Schemas.get
oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-121', 'get', 'link-84');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'repeated'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-125', 'get', 'link-84');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'repeated'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L534"></a><tt class="py-lineno">534</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">repeated_params</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">param</tt><tt class="py-op">)</tt> </tt>
-<a name="L535"></a><tt class="py-lineno">535</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">desc</tt><tt class="py-op">.</tt><tt id="link-122" class="py-name"><a title="apiclient.schema.Schemas.get
+<a name="L535"></a><tt class="py-lineno">535</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">desc</tt><tt class="py-op">.</tt><tt id="link-126" class="py-name"><a title="apiclient.schema.Schemas.get
oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-122', 'get', 'link-84');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'location'</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">'query'</tt><tt class="py-op">:</tt> </tt>
-<a name="L536"></a><tt class="py-lineno">536</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-123" class="py-name"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-123', 'query_params', 'link-113');">query_params</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">param</tt><tt class="py-op">)</tt> </tt>
-<a name="L537"></a><tt class="py-lineno">537</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">desc</tt><tt class="py-op">.</tt><tt id="link-124" class="py-name"><a title="apiclient.schema.Schemas.get
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-126', 'get', 'link-84');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'location'</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">'query'</tt><tt class="py-op">:</tt> </tt>
+<a name="L536"></a><tt class="py-lineno">536</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-127" class="py-name"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-127', 'query_params', 'link-117');">query_params</a></tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">param</tt><tt class="py-op">)</tt> </tt>
+<a name="L537"></a><tt class="py-lineno">537</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">desc</tt><tt class="py-op">.</tt><tt id="link-128" class="py-name"><a title="apiclient.schema.Schemas.get
oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-124', 'get', 'link-84');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'location'</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">'path'</tt><tt class="py-op">:</tt> </tt>
-<a name="L538"></a><tt class="py-lineno">538</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">path_params</tt><tt class="py-op">.</tt><tt id="link-125" class="py-name" targets="Method apiclient.http.BatchHttpRequest.add()=apiclient.http.BatchHttpRequest-class.html#add"><a title="apiclient.http.BatchHttpRequest.add" class="py-name" href="#" onclick="return doclink('link-125', 'add', 'link-125');">add</a></tt><tt class="py-op">(</tt><tt class="py-name">param</tt><tt class="py-op">)</tt> </tt>
-<a name="L539"></a><tt class="py-lineno">539</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">param_types</tt><tt class="py-op">[</tt><tt class="py-name">param</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">desc</tt><tt class="py-op">.</tt><tt id="link-126" class="py-name"><a title="apiclient.schema.Schemas.get
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-128', 'get', 'link-84');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'location'</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">'path'</tt><tt class="py-op">:</tt> </tt>
+<a name="L538"></a><tt class="py-lineno">538</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">path_params</tt><tt class="py-op">.</tt><tt id="link-129" class="py-name" targets="Method apiclient.http.BatchHttpRequest.add()=apiclient.http.BatchHttpRequest-class.html#add"><a title="apiclient.http.BatchHttpRequest.add" class="py-name" href="#" onclick="return doclink('link-129', 'add', 'link-129');">add</a></tt><tt class="py-op">(</tt><tt class="py-name">param</tt><tt class="py-op">)</tt> </tt>
+<a name="L539"></a><tt class="py-lineno">539</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">param_types</tt><tt class="py-op">[</tt><tt class="py-name">param</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">desc</tt><tt class="py-op">.</tt><tt id="link-130" class="py-name"><a title="apiclient.schema.Schemas.get
oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-126', 'get', 'link-84');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'type'</tt><tt class="py-op">,</tt> <tt class="py-string">'string'</tt><tt class="py-op">)</tt> </tt>
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-130', 'get', 'link-84');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'type'</tt><tt class="py-op">,</tt> <tt class="py-string">'string'</tt><tt class="py-op">)</tt> </tt>
<a name="L540"></a><tt class="py-lineno">540</tt> <tt class="py-line"> </tt>
<a name="L541"></a><tt class="py-lineno">541</tt> <tt class="py-line"> <tt class="py-comment"># TODO(dhermes): Determine if this is still necessary. Discovery based APIs</tt> </tt>
<a name="L542"></a><tt class="py-lineno">542</tt> <tt class="py-line"> <tt class="py-comment"># should have all path parameters already marked with</tt> </tt>
<a name="L543"></a><tt class="py-lineno">543</tt> <tt class="py-line"> <tt class="py-comment"># 'location: path'.</tt> </tt>
-<a name="L544"></a><tt class="py-lineno">544</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">match</tt> <tt class="py-keyword">in</tt> <tt id="link-127" class="py-name"><a title="apiclient.discovery.URITEMPLATE" class="py-name" href="#" onclick="return doclink('link-127', 'URITEMPLATE', 'link-49');">URITEMPLATE</a></tt><tt class="py-op">.</tt><tt class="py-name">finditer</tt><tt class="py-op">(</tt><tt class="py-name">method_desc</tt><tt class="py-op">[</tt><tt class="py-string">'path'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L545"></a><tt class="py-lineno">545</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">namematch</tt> <tt class="py-keyword">in</tt> <tt id="link-128" class="py-name"><a title="apiclient.discovery.VARNAME" class="py-name" href="#" onclick="return doclink('link-128', 'VARNAME', 'link-50');">VARNAME</a></tt><tt class="py-op">.</tt><tt class="py-name">finditer</tt><tt class="py-op">(</tt><tt class="py-name">match</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L546"></a><tt class="py-lineno">546</tt> <tt class="py-line"> <tt class="py-name">name</tt> <tt class="py-op">=</tt> <tt id="link-129" class="py-name"><a title="apiclient.discovery.key2param" class="py-name" href="#" onclick="return doclink('link-129', 'key2param', 'link-117');">key2param</a></tt><tt class="py-op">(</tt><tt class="py-name">namematch</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L547"></a><tt class="py-lineno">547</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">path_params</tt><tt class="py-op">.</tt><tt id="link-130" class="py-name"><a title="apiclient.http.BatchHttpRequest.add" class="py-name" href="#" onclick="return doclink('link-130', 'add', 'link-125');">add</a></tt><tt class="py-op">(</tt><tt class="py-name">name</tt><tt class="py-op">)</tt> </tt>
-<a name="L548"></a><tt class="py-lineno">548</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-131" class="py-name"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-131', 'query_params', 'link-113');">query_params</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L549"></a><tt class="py-lineno">549</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-132" class="py-name"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-132', 'query_params', 'link-113');">query_params</a></tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-name">name</tt><tt class="py-op">)</tt> </tt>
+<a name="L544"></a><tt class="py-lineno">544</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">match</tt> <tt class="py-keyword">in</tt> <tt id="link-131" class="py-name"><a title="apiclient.discovery.URITEMPLATE" class="py-name" href="#" onclick="return doclink('link-131', 'URITEMPLATE', 'link-49');">URITEMPLATE</a></tt><tt class="py-op">.</tt><tt class="py-name">finditer</tt><tt class="py-op">(</tt><tt class="py-name">method_desc</tt><tt class="py-op">[</tt><tt class="py-string">'path'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L545"></a><tt class="py-lineno">545</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">namematch</tt> <tt class="py-keyword">in</tt> <tt id="link-132" class="py-name"><a title="apiclient.discovery.VARNAME" class="py-name" href="#" onclick="return doclink('link-132', 'VARNAME', 'link-50');">VARNAME</a></tt><tt class="py-op">.</tt><tt class="py-name">finditer</tt><tt class="py-op">(</tt><tt class="py-name">match</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L546"></a><tt class="py-lineno">546</tt> <tt class="py-line"> <tt class="py-name">name</tt> <tt class="py-op">=</tt> <tt id="link-133" class="py-name"><a title="apiclient.discovery.key2param" class="py-name" href="#" onclick="return doclink('link-133', 'key2param', 'link-121');">key2param</a></tt><tt class="py-op">(</tt><tt class="py-name">namematch</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L547"></a><tt class="py-lineno">547</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">path_params</tt><tt class="py-op">.</tt><tt id="link-134" class="py-name"><a title="apiclient.http.BatchHttpRequest.add" class="py-name" href="#" onclick="return doclink('link-134', 'add', 'link-129');">add</a></tt><tt class="py-op">(</tt><tt class="py-name">name</tt><tt class="py-op">)</tt> </tt>
+<a name="L548"></a><tt class="py-lineno">548</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">name</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-135" class="py-name"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-135', 'query_params', 'link-117');">query_params</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L549"></a><tt class="py-lineno">549</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-136" class="py-name"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-136', 'query_params', 'link-117');">query_params</a></tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-name">name</tt><tt class="py-op">)</tt> </tt>
</div></div><a name="L550"></a><tt class="py-lineno">550</tt> <tt class="py-line"> </tt>
<a name="createMethod"></a><div id="createMethod-def"><a name="L551"></a><tt class="py-lineno">551</tt> <tt class="py-line"> </tt>
<a name="L552"></a><tt class="py-lineno">552</tt> <a class="py-toggle" href="#" id="createMethod-toggle" onclick="return toggle('createMethod');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.discovery-module.html#createMethod">createMethod</a><tt class="py-op">(</tt><tt class="py-param">methodName</tt><tt class="py-op">,</tt> <tt class="py-param">methodDesc</tt><tt class="py-op">,</tt> <tt class="py-param">rootDesc</tt><tt class="py-op">,</tt> <tt class="py-param">schema</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
@@ -692,15 +692,15 @@
<a name="L559"></a><tt class="py-lineno">559</tt> <tt class="py-line"><tt class="py-docstring"> rootDesc: object, the entire deserialized discovery document.</tt> </tt>
<a name="L560"></a><tt class="py-lineno">560</tt> <tt class="py-line"><tt class="py-docstring"> schema: object, mapping of schema names to schema descriptions.</tt> </tt>
<a name="L561"></a><tt class="py-lineno">561</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L562"></a><tt class="py-lineno">562</tt> <tt class="py-line"> <tt class="py-name">methodName</tt> <tt class="py-op">=</tt> <tt id="link-133" class="py-name" targets="Function apiclient.discovery.fix_method_name()=apiclient.discovery-module.html#fix_method_name"><a title="apiclient.discovery.fix_method_name" class="py-name" href="#" onclick="return doclink('link-133', 'fix_method_name', 'link-133');">fix_method_name</a></tt><tt class="py-op">(</tt><tt class="py-name">methodName</tt><tt class="py-op">)</tt> </tt>
-<a name="L563"></a><tt class="py-lineno">563</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">pathUrl</tt><tt class="py-op">,</tt> <tt class="py-name">httpMethod</tt><tt class="py-op">,</tt> <tt class="py-name">methodId</tt><tt class="py-op">,</tt> <tt id="link-134" class="py-name"><a title="apiclient.model.BaseModel.accept
+<a name="L562"></a><tt class="py-lineno">562</tt> <tt class="py-line"> <tt class="py-name">methodName</tt> <tt class="py-op">=</tt> <tt id="link-137" class="py-name" targets="Function apiclient.discovery.fix_method_name()=apiclient.discovery-module.html#fix_method_name"><a title="apiclient.discovery.fix_method_name" class="py-name" href="#" onclick="return doclink('link-137', 'fix_method_name', 'link-137');">fix_method_name</a></tt><tt class="py-op">(</tt><tt class="py-name">methodName</tt><tt class="py-op">)</tt> </tt>
+<a name="L563"></a><tt class="py-lineno">563</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">pathUrl</tt><tt class="py-op">,</tt> <tt class="py-name">httpMethod</tt><tt class="py-op">,</tt> <tt class="py-name">methodId</tt><tt class="py-op">,</tt> <tt id="link-138" class="py-name"><a title="apiclient.model.BaseModel.accept
apiclient.model.JsonModel.accept
apiclient.model.MediaModel.accept
apiclient.model.ProtocolBufferModel.accept
-apiclient.model.RawModel.accept" class="py-name" href="#" onclick="return doclink('link-134', 'accept', 'link-102');">accept</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L564"></a><tt class="py-lineno">564</tt> <tt class="py-line"> <tt class="py-name">maxSize</tt><tt class="py-op">,</tt> <tt class="py-name">mediaPathUrl</tt><tt class="py-op">)</tt> <tt class="py-op">=</tt> <tt id="link-135" class="py-name" targets="Function apiclient.discovery._fix_up_method_description()=apiclient.discovery-module.html#_fix_up_method_description"><a title="apiclient.discovery._fix_up_method_description" class="py-name" href="#" onclick="return doclink('link-135', '_fix_up_method_description', 'link-135');">_fix_up_method_description</a></tt><tt class="py-op">(</tt><tt class="py-name">methodDesc</tt><tt class="py-op">,</tt> <tt class="py-name">rootDesc</tt><tt class="py-op">)</tt> </tt>
+apiclient.model.RawModel.accept" class="py-name" href="#" onclick="return doclink('link-138', 'accept', 'link-106');">accept</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L564"></a><tt class="py-lineno">564</tt> <tt class="py-line"> <tt class="py-name">maxSize</tt><tt class="py-op">,</tt> <tt class="py-name">mediaPathUrl</tt><tt class="py-op">)</tt> <tt class="py-op">=</tt> <tt id="link-139" class="py-name" targets="Function apiclient.discovery._fix_up_method_description()=apiclient.discovery-module.html#_fix_up_method_description"><a title="apiclient.discovery._fix_up_method_description" class="py-name" href="#" onclick="return doclink('link-139', '_fix_up_method_description', 'link-139');">_fix_up_method_description</a></tt><tt class="py-op">(</tt><tt class="py-name">methodDesc</tt><tt class="py-op">,</tt> <tt class="py-name">rootDesc</tt><tt class="py-op">)</tt> </tt>
<a name="L565"></a><tt class="py-lineno">565</tt> <tt class="py-line"> </tt>
-<a name="L566"></a><tt class="py-lineno">566</tt> <tt class="py-line"> <tt class="py-name">parameters</tt> <tt class="py-op">=</tt> <tt id="link-136" class="py-name" targets="Class apiclient.discovery.ResourceMethodParameters=apiclient.discovery.ResourceMethodParameters-class.html"><a title="apiclient.discovery.ResourceMethodParameters" class="py-name" href="#" onclick="return doclink('link-136', 'ResourceMethodParameters', 'link-136');">ResourceMethodParameters</a></tt><tt class="py-op">(</tt><tt class="py-name">methodDesc</tt><tt class="py-op">)</tt> </tt>
+<a name="L566"></a><tt class="py-lineno">566</tt> <tt class="py-line"> <tt class="py-name">parameters</tt> <tt class="py-op">=</tt> <tt id="link-140" class="py-name" targets="Class apiclient.discovery.ResourceMethodParameters=apiclient.discovery.ResourceMethodParameters-class.html"><a title="apiclient.discovery.ResourceMethodParameters" class="py-name" href="#" onclick="return doclink('link-140', 'ResourceMethodParameters', 'link-140');">ResourceMethodParameters</a></tt><tt class="py-op">(</tt><tt class="py-name">methodDesc</tt><tt class="py-op">)</tt> </tt>
<a name="L567"></a><tt class="py-lineno">567</tt> <tt class="py-line"> </tt>
<a name="L568"></a><tt class="py-lineno">568</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">method</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L569"></a><tt class="py-lineno">569</tt> <tt class="py-line"> <tt class="py-comment"># Don't bother with doc string, it will be over-written by createMethod.</tt> </tt>
@@ -750,46 +750,46 @@
<a name="L613"></a><tt class="py-lineno">613</tt> <tt class="py-line"> <tt class="py-name">actual_query_params</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
<a name="L614"></a><tt class="py-lineno">614</tt> <tt class="py-line"> <tt class="py-name">actual_path_params</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
<a name="L615"></a><tt class="py-lineno">615</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt> <tt class="py-keyword">in</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L616"></a><tt class="py-lineno">616</tt> <tt class="py-line"> <tt class="py-name">to_type</tt> <tt class="py-op">=</tt> <tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">param_types</tt><tt class="py-op">.</tt><tt id="link-137" class="py-name"><a title="apiclient.schema.Schemas.get
+<a name="L616"></a><tt class="py-lineno">616</tt> <tt class="py-line"> <tt class="py-name">to_type</tt> <tt class="py-op">=</tt> <tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">param_types</tt><tt class="py-op">.</tt><tt id="link-141" class="py-name"><a title="apiclient.schema.Schemas.get
oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-137', 'get', 'link-84');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-string">'string'</tt><tt class="py-op">)</tt> </tt>
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-141', 'get', 'link-84');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-string">'string'</tt><tt class="py-op">)</tt> </tt>
<a name="L617"></a><tt class="py-lineno">617</tt> <tt class="py-line"> <tt class="py-comment"># For repeated parameters we cast each member of the list.</tt> </tt>
<a name="L618"></a><tt class="py-lineno">618</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">repeated_params</tt> <tt class="py-keyword">and</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L619"></a><tt class="py-lineno">619</tt> <tt class="py-line"> <tt class="py-name">cast_value</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-138" class="py-name" targets="Function apiclient.discovery._cast()=apiclient.discovery-module.html#_cast"><a title="apiclient.discovery._cast" class="py-name" href="#" onclick="return doclink('link-138', '_cast', 'link-138');">_cast</a></tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">,</tt> <tt class="py-name">to_type</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">x</tt> <tt class="py-keyword">in</tt> <tt class="py-name">value</tt><tt class="py-op">]</tt> </tt>
+<a name="L619"></a><tt class="py-lineno">619</tt> <tt class="py-line"> <tt class="py-name">cast_value</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-142" class="py-name" targets="Function apiclient.discovery._cast()=apiclient.discovery-module.html#_cast"><a title="apiclient.discovery._cast" class="py-name" href="#" onclick="return doclink('link-142', '_cast', 'link-142');">_cast</a></tt><tt class="py-op">(</tt><tt class="py-name">x</tt><tt class="py-op">,</tt> <tt class="py-name">to_type</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">x</tt> <tt class="py-keyword">in</tt> <tt class="py-name">value</tt><tt class="py-op">]</tt> </tt>
<a name="L620"></a><tt class="py-lineno">620</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L621"></a><tt class="py-lineno">621</tt> <tt class="py-line"> <tt class="py-name">cast_value</tt> <tt class="py-op">=</tt> <tt id="link-139" class="py-name"><a title="apiclient.discovery._cast" class="py-name" href="#" onclick="return doclink('link-139', '_cast', 'link-138');">_cast</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt class="py-name">to_type</tt><tt class="py-op">)</tt> </tt>
-<a name="L622"></a><tt class="py-lineno">622</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt id="link-140" class="py-name"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-140', 'query_params', 'link-113');">query_params</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L621"></a><tt class="py-lineno">621</tt> <tt class="py-line"> <tt class="py-name">cast_value</tt> <tt class="py-op">=</tt> <tt id="link-143" class="py-name"><a title="apiclient.discovery._cast" class="py-name" href="#" onclick="return doclink('link-143', '_cast', 'link-142');">_cast</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt class="py-name">to_type</tt><tt class="py-op">)</tt> </tt>
+<a name="L622"></a><tt class="py-lineno">622</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt id="link-144" class="py-name"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-144', 'query_params', 'link-117');">query_params</a></tt><tt class="py-op">:</tt> </tt>
<a name="L623"></a><tt class="py-lineno">623</tt> <tt class="py-line"> <tt class="py-name">actual_query_params</tt><tt class="py-op">[</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">argmap</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">cast_value</tt> </tt>
<a name="L624"></a><tt class="py-lineno">624</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">path_params</tt><tt class="py-op">:</tt> </tt>
<a name="L625"></a><tt class="py-lineno">625</tt> <tt class="py-line"> <tt class="py-name">actual_path_params</tt><tt class="py-op">[</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">argmap</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">cast_value</tt> </tt>
-<a name="L626"></a><tt class="py-lineno">626</tt> <tt class="py-line"> <tt class="py-name">body_value</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt id="link-141" class="py-name"><a title="apiclient.schema.Schemas.get
+<a name="L626"></a><tt class="py-lineno">626</tt> <tt class="py-line"> <tt class="py-name">body_value</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt id="link-145" class="py-name"><a title="apiclient.schema.Schemas.get
oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-141', 'get', 'link-84');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'body'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
-<a name="L627"></a><tt class="py-lineno">627</tt> <tt class="py-line"> <tt class="py-name">media_filename</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt id="link-142" class="py-name"><a title="apiclient.schema.Schemas.get
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-145', 'get', 'link-84');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'body'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L627"></a><tt class="py-lineno">627</tt> <tt class="py-line"> <tt class="py-name">media_filename</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt><tt class="py-op">.</tt><tt id="link-146" class="py-name"><a title="apiclient.schema.Schemas.get
oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-142', 'get', 'link-84');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'media_body'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-146', 'get', 'link-84');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'media_body'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
<a name="L628"></a><tt class="py-lineno">628</tt> <tt class="py-line"> </tt>
<a name="L629"></a><tt class="py-lineno">629</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_developerKey</tt><tt class="py-op">:</tt> </tt>
<a name="L630"></a><tt class="py-lineno">630</tt> <tt class="py-line"> <tt class="py-name">actual_query_params</tt><tt class="py-op">[</tt><tt class="py-string">'key'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_developerKey</tt> </tt>
<a name="L631"></a><tt class="py-lineno">631</tt> <tt class="py-line"> </tt>
-<a name="L632"></a><tt class="py-lineno">632</tt> <tt class="py-line"> <tt id="link-143" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-143', 'model', 'link-29');">model</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_model</tt> </tt>
+<a name="L632"></a><tt class="py-lineno">632</tt> <tt class="py-line"> <tt id="link-147" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-147', 'model', 'link-29');">model</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_model</tt> </tt>
<a name="L633"></a><tt class="py-lineno">633</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">methodName</tt><tt class="py-op">.</tt><tt class="py-name">endswith</tt><tt class="py-op">(</tt><tt class="py-string">'_media'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L634"></a><tt class="py-lineno">634</tt> <tt class="py-line"> <tt id="link-144" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-144', 'model', 'link-29');">model</a></tt> <tt class="py-op">=</tt> <tt id="link-145" class="py-name"><a title="apiclient.model.MediaModel" class="py-name" href="#" onclick="return doclink('link-145', 'MediaModel', 'link-33');">MediaModel</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L634"></a><tt class="py-lineno">634</tt> <tt class="py-line"> <tt id="link-148" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-148', 'model', 'link-29');">model</a></tt> <tt class="py-op">=</tt> <tt id="link-149" class="py-name"><a title="apiclient.model.MediaModel" class="py-name" href="#" onclick="return doclink('link-149', 'MediaModel', 'link-33');">MediaModel</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L635"></a><tt class="py-lineno">635</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-string">'response'</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">:</tt> </tt>
-<a name="L636"></a><tt class="py-lineno">636</tt> <tt class="py-line"> <tt id="link-146" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-146', 'model', 'link-29');">model</a></tt> <tt class="py-op">=</tt> <tt id="link-147" class="py-name"><a title="apiclient.model.RawModel" class="py-name" href="#" onclick="return doclink('link-147', 'RawModel', 'link-36');">RawModel</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L636"></a><tt class="py-lineno">636</tt> <tt class="py-line"> <tt id="link-150" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-150', 'model', 'link-29');">model</a></tt> <tt class="py-op">=</tt> <tt id="link-151" class="py-name"><a title="apiclient.model.RawModel" class="py-name" href="#" onclick="return doclink('link-151', 'RawModel', 'link-36');">RawModel</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L637"></a><tt class="py-lineno">637</tt> <tt class="py-line"> </tt>
<a name="L638"></a><tt class="py-lineno">638</tt> <tt class="py-line"> <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-<a name="L639"></a><tt class="py-lineno">639</tt> <tt class="py-line"> <tt class="py-name">headers</tt><tt class="py-op">,</tt> <tt class="py-name">params</tt><tt class="py-op">,</tt> <tt class="py-name">query</tt><tt class="py-op">,</tt> <tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt id="link-148" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-148', 'model', 'link-29');">model</a></tt><tt class="py-op">.</tt><tt id="link-149" class="py-name"><a title="apiclient.http.HttpMock.request
+<a name="L639"></a><tt class="py-lineno">639</tt> <tt class="py-line"> <tt class="py-name">headers</tt><tt class="py-op">,</tt> <tt class="py-name">params</tt><tt class="py-op">,</tt> <tt class="py-name">query</tt><tt class="py-op">,</tt> <tt id="link-152" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-152', 'body', 'link-100');">body</a></tt> <tt class="py-op">=</tt> <tt id="link-153" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-153', 'model', 'link-29');">model</a></tt><tt class="py-op">.</tt><tt id="link-154" class="py-name"><a title="apiclient.http.HttpMock.request
apiclient.http.HttpMockSequence.request
apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-149', 'request', 'link-68');">request</a></tt><tt class="py-op">(</tt><tt class="py-name">headers</tt><tt class="py-op">,</tt> </tt>
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-154', 'request', 'link-68');">request</a></tt><tt class="py-op">(</tt><tt class="py-name">headers</tt><tt class="py-op">,</tt> </tt>
<a name="L640"></a><tt class="py-lineno">640</tt> <tt class="py-line"> <tt class="py-name">actual_path_params</tt><tt class="py-op">,</tt> <tt class="py-name">actual_query_params</tt><tt class="py-op">,</tt> <tt class="py-name">body_value</tt><tt class="py-op">)</tt> </tt>
<a name="L641"></a><tt class="py-lineno">641</tt> <tt class="py-line"> </tt>
<a name="L642"></a><tt class="py-lineno">642</tt> <tt class="py-line"> <tt class="py-name">expanded_url</tt> <tt class="py-op">=</tt> <tt class="py-name">uritemplate</tt><tt class="py-op">.</tt><tt class="py-name">expand</tt><tt class="py-op">(</tt><tt class="py-name">pathUrl</tt><tt class="py-op">,</tt> <tt class="py-name">params</tt><tt class="py-op">)</tt> </tt>
<a name="L643"></a><tt class="py-lineno">643</tt> <tt class="py-line"> <tt class="py-name">url</tt> <tt class="py-op">=</tt> <tt class="py-name">urlparse</tt><tt class="py-op">.</tt><tt class="py-name">urljoin</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_baseUrl</tt><tt class="py-op">,</tt> <tt class="py-name">expanded_url</tt> <tt class="py-op">+</tt> <tt class="py-name">query</tt><tt class="py-op">)</tt> </tt>
<a name="L644"></a><tt class="py-lineno">644</tt> <tt class="py-line"> </tt>
-<a name="L645"></a><tt class="py-lineno">645</tt> <tt class="py-line"> <tt id="link-150" class="py-name" targets="Method apiclient.http.MediaIoBaseUpload.resumable()=apiclient.http.MediaIoBaseUpload-class.html#resumable,Method apiclient.http.MediaUpload.resumable()=apiclient.http.MediaUpload-class.html#resumable"><a title="apiclient.http.MediaIoBaseUpload.resumable
-apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-150', 'resumable', 'link-150');">resumable</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L645"></a><tt class="py-lineno">645</tt> <tt class="py-line"> <tt id="link-155" class="py-name" targets="Method apiclient.http.MediaIoBaseUpload.resumable()=apiclient.http.MediaIoBaseUpload-class.html#resumable,Method apiclient.http.MediaUpload.resumable()=apiclient.http.MediaUpload-class.html#resumable"><a title="apiclient.http.MediaIoBaseUpload.resumable
+apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-155', 'resumable', 'link-155');">resumable</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
<a name="L646"></a><tt class="py-lineno">646</tt> <tt class="py-line"> <tt class="py-name">multipart_boundary</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
<a name="L647"></a><tt class="py-lineno">647</tt> <tt class="py-line"> </tt>
<a name="L648"></a><tt class="py-lineno">648</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">media_filename</tt><tt class="py-op">:</tt> </tt>
@@ -797,49 +797,49 @@
<a name="L650"></a><tt class="py-lineno">650</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">media_filename</tt><tt class="py-op">,</tt> <tt class="py-name">basestring</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L651"></a><tt class="py-lineno">651</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">media_mime_type</tt><tt class="py-op">,</tt> <tt class="py-name">encoding</tt><tt class="py-op">)</tt> <tt class="py-op">=</tt> <tt class="py-name">mimetypes</tt><tt class="py-op">.</tt><tt class="py-name">guess_type</tt><tt class="py-op">(</tt><tt class="py-name">media_filename</tt><tt class="py-op">)</tt> </tt>
<a name="L652"></a><tt class="py-lineno">652</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">media_mime_type</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L653"></a><tt class="py-lineno">653</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-151" class="py-name"><a title="apiclient.errors.UnknownFileType" class="py-name" href="#" onclick="return doclink('link-151', 'UnknownFileType', 'link-18');">UnknownFileType</a></tt><tt class="py-op">(</tt><tt class="py-name">media_filename</tt><tt class="py-op">)</tt> </tt>
-<a name="L654"></a><tt class="py-lineno">654</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-152" class="py-name"><a title="apiclient.mimeparse" class="py-name" href="#" onclick="return doclink('link-152', 'mimeparse', 'link-0');">mimeparse</a></tt><tt class="py-op">.</tt><tt id="link-153" class="py-name" targets="Function apiclient.mimeparse.best_match()=apiclient.mimeparse-module.html#best_match"><a title="apiclient.mimeparse.best_match" class="py-name" href="#" onclick="return doclink('link-153', 'best_match', 'link-153');">best_match</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">media_mime_type</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-string">','</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt id="link-154" class="py-name"><a title="apiclient.model.BaseModel.accept
+<a name="L653"></a><tt class="py-lineno">653</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-156" class="py-name"><a title="apiclient.errors.UnknownFileType" class="py-name" href="#" onclick="return doclink('link-156', 'UnknownFileType', 'link-18');">UnknownFileType</a></tt><tt class="py-op">(</tt><tt class="py-name">media_filename</tt><tt class="py-op">)</tt> </tt>
+<a name="L654"></a><tt class="py-lineno">654</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-157" class="py-name"><a title="apiclient.mimeparse" class="py-name" href="#" onclick="return doclink('link-157', 'mimeparse', 'link-0');">mimeparse</a></tt><tt class="py-op">.</tt><tt id="link-158" class="py-name" targets="Function apiclient.mimeparse.best_match()=apiclient.mimeparse-module.html#best_match"><a title="apiclient.mimeparse.best_match" class="py-name" href="#" onclick="return doclink('link-158', 'best_match', 'link-158');">best_match</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">media_mime_type</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-string">','</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt id="link-159" class="py-name"><a title="apiclient.model.BaseModel.accept
apiclient.model.JsonModel.accept
apiclient.model.MediaModel.accept
apiclient.model.ProtocolBufferModel.accept
-apiclient.model.RawModel.accept" class="py-name" href="#" onclick="return doclink('link-154', 'accept', 'link-102');">accept</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L655"></a><tt class="py-lineno">655</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-155" class="py-name"><a title="apiclient.errors.UnacceptableMimeTypeError" class="py-name" href="#" onclick="return doclink('link-155', 'UnacceptableMimeTypeError', 'link-12');">UnacceptableMimeTypeError</a></tt><tt class="py-op">(</tt><tt class="py-name">media_mime_type</tt><tt class="py-op">)</tt> </tt>
-<a name="L656"></a><tt class="py-lineno">656</tt> <tt class="py-line"> <tt class="py-name">media_upload</tt> <tt class="py-op">=</tt> <tt id="link-156" class="py-name"><a title="apiclient.http.MediaFileUpload" class="py-name" href="#" onclick="return doclink('link-156', 'MediaFileUpload', 'link-24');">MediaFileUpload</a></tt><tt class="py-op">(</tt><tt class="py-name">media_filename</tt><tt class="py-op">,</tt> </tt>
-<a name="L657"></a><tt class="py-lineno">657</tt> <tt class="py-line"> <tt id="link-157" class="py-name" targets="Method apiclient.http.MediaIoBaseUpload.mimetype()=apiclient.http.MediaIoBaseUpload-class.html#mimetype,Method apiclient.http.MediaUpload.mimetype()=apiclient.http.MediaUpload-class.html#mimetype"><a title="apiclient.http.MediaIoBaseUpload.mimetype
-apiclient.http.MediaUpload.mimetype" class="py-name" href="#" onclick="return doclink('link-157', 'mimetype', 'link-157');">mimetype</a></tt><tt class="py-op">=</tt><tt class="py-name">media_mime_type</tt><tt class="py-op">)</tt> </tt>
-<a name="L658"></a><tt class="py-lineno">658</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">media_filename</tt><tt class="py-op">,</tt> <tt id="link-158" class="py-name"><a title="apiclient.http.MediaUpload" class="py-name" href="#" onclick="return doclink('link-158', 'MediaUpload', 'link-27');">MediaUpload</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+apiclient.model.RawModel.accept" class="py-name" href="#" onclick="return doclink('link-159', 'accept', 'link-106');">accept</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L655"></a><tt class="py-lineno">655</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-160" class="py-name"><a title="apiclient.errors.UnacceptableMimeTypeError" class="py-name" href="#" onclick="return doclink('link-160', 'UnacceptableMimeTypeError', 'link-12');">UnacceptableMimeTypeError</a></tt><tt class="py-op">(</tt><tt class="py-name">media_mime_type</tt><tt class="py-op">)</tt> </tt>
+<a name="L656"></a><tt class="py-lineno">656</tt> <tt class="py-line"> <tt class="py-name">media_upload</tt> <tt class="py-op">=</tt> <tt id="link-161" class="py-name"><a title="apiclient.http.MediaFileUpload" class="py-name" href="#" onclick="return doclink('link-161', 'MediaFileUpload', 'link-24');">MediaFileUpload</a></tt><tt class="py-op">(</tt><tt class="py-name">media_filename</tt><tt class="py-op">,</tt> </tt>
+<a name="L657"></a><tt class="py-lineno">657</tt> <tt class="py-line"> <tt id="link-162" class="py-name" targets="Method apiclient.http.MediaIoBaseUpload.mimetype()=apiclient.http.MediaIoBaseUpload-class.html#mimetype,Method apiclient.http.MediaUpload.mimetype()=apiclient.http.MediaUpload-class.html#mimetype"><a title="apiclient.http.MediaIoBaseUpload.mimetype
+apiclient.http.MediaUpload.mimetype" class="py-name" href="#" onclick="return doclink('link-162', 'mimetype', 'link-162');">mimetype</a></tt><tt class="py-op">=</tt><tt class="py-name">media_mime_type</tt><tt class="py-op">)</tt> </tt>
+<a name="L658"></a><tt class="py-lineno">658</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">media_filename</tt><tt class="py-op">,</tt> <tt id="link-163" class="py-name"><a title="apiclient.http.MediaUpload" class="py-name" href="#" onclick="return doclink('link-163', 'MediaUpload', 'link-27');">MediaUpload</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L659"></a><tt class="py-lineno">659</tt> <tt class="py-line"> <tt class="py-name">media_upload</tt> <tt class="py-op">=</tt> <tt class="py-name">media_filename</tt> </tt>
<a name="L660"></a><tt class="py-lineno">660</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L661"></a><tt class="py-lineno">661</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">'media_filename must be str or MediaUpload.'</tt><tt class="py-op">)</tt> </tt>
<a name="L662"></a><tt class="py-lineno">662</tt> <tt class="py-line"> </tt>
<a name="L663"></a><tt class="py-lineno">663</tt> <tt class="py-line"> <tt class="py-comment"># Check the maxSize</tt> </tt>
-<a name="L664"></a><tt class="py-lineno">664</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">maxSize</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt> <tt class="py-keyword">and</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-159" class="py-name" targets="Method apiclient.http.MediaIoBaseUpload.size()=apiclient.http.MediaIoBaseUpload-class.html#size,Method apiclient.http.MediaUpload.size()=apiclient.http.MediaUpload-class.html#size"><a title="apiclient.http.MediaIoBaseUpload.size
-apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-159', 'size', 'link-159');">size</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-name">maxSize</tt><tt class="py-op">:</tt> </tt>
-<a name="L665"></a><tt class="py-lineno">665</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-160" class="py-name"><a title="apiclient.errors.MediaUploadSizeError" class="py-name" href="#" onclick="return doclink('link-160', 'MediaUploadSizeError', 'link-9');">MediaUploadSizeError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Media larger than: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">maxSize</tt><tt class="py-op">)</tt> </tt>
+<a name="L664"></a><tt class="py-lineno">664</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">maxSize</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt> <tt class="py-keyword">and</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-164" class="py-name" targets="Method apiclient.http.MediaIoBaseUpload.size()=apiclient.http.MediaIoBaseUpload-class.html#size,Method apiclient.http.MediaUpload.size()=apiclient.http.MediaUpload-class.html#size"><a title="apiclient.http.MediaIoBaseUpload.size
+apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-164', 'size', 'link-164');">size</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-name">maxSize</tt><tt class="py-op">:</tt> </tt>
+<a name="L665"></a><tt class="py-lineno">665</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-165" class="py-name"><a title="apiclient.errors.MediaUploadSizeError" class="py-name" href="#" onclick="return doclink('link-165', 'MediaUploadSizeError', 'link-9');">MediaUploadSizeError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Media larger than: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">maxSize</tt><tt class="py-op">)</tt> </tt>
<a name="L666"></a><tt class="py-lineno">666</tt> <tt class="py-line"> </tt>
<a name="L667"></a><tt class="py-lineno">667</tt> <tt class="py-line"> <tt class="py-comment"># Use the media path uri for media uploads</tt> </tt>
<a name="L668"></a><tt class="py-lineno">668</tt> <tt class="py-line"> <tt class="py-name">expanded_url</tt> <tt class="py-op">=</tt> <tt class="py-name">uritemplate</tt><tt class="py-op">.</tt><tt class="py-name">expand</tt><tt class="py-op">(</tt><tt class="py-name">mediaPathUrl</tt><tt class="py-op">,</tt> <tt class="py-name">params</tt><tt class="py-op">)</tt> </tt>
<a name="L669"></a><tt class="py-lineno">669</tt> <tt class="py-line"> <tt class="py-name">url</tt> <tt class="py-op">=</tt> <tt class="py-name">urlparse</tt><tt class="py-op">.</tt><tt class="py-name">urljoin</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_baseUrl</tt><tt class="py-op">,</tt> <tt class="py-name">expanded_url</tt> <tt class="py-op">+</tt> <tt class="py-name">query</tt><tt class="py-op">)</tt> </tt>
-<a name="L670"></a><tt class="py-lineno">670</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-161" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
-apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-161', 'resumable', 'link-150');">resumable</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L671"></a><tt class="py-lineno">671</tt> <tt class="py-line"> <tt class="py-name">url</tt> <tt class="py-op">=</tt> <tt id="link-162" class="py-name"><a title="oauth2client.util._add_query_parameter" class="py-name" href="#" onclick="return doclink('link-162', '_add_query_parameter', 'link-44');">_add_query_parameter</a></tt><tt class="py-op">(</tt><tt class="py-name">url</tt><tt class="py-op">,</tt> <tt class="py-string">'uploadType'</tt><tt class="py-op">,</tt> <tt class="py-string">'resumable'</tt><tt class="py-op">)</tt> </tt>
+<a name="L670"></a><tt class="py-lineno">670</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-166" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
+apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-166', 'resumable', 'link-155');">resumable</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L671"></a><tt class="py-lineno">671</tt> <tt class="py-line"> <tt class="py-name">url</tt> <tt class="py-op">=</tt> <tt id="link-167" class="py-name"><a title="oauth2client.util._add_query_parameter" class="py-name" href="#" onclick="return doclink('link-167', '_add_query_parameter', 'link-44');">_add_query_parameter</a></tt><tt class="py-op">(</tt><tt class="py-name">url</tt><tt class="py-op">,</tt> <tt class="py-string">'uploadType'</tt><tt class="py-op">,</tt> <tt class="py-string">'resumable'</tt><tt class="py-op">)</tt> </tt>
<a name="L672"></a><tt class="py-lineno">672</tt> <tt class="py-line"> </tt>
-<a name="L673"></a><tt class="py-lineno">673</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-163" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
-apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-163', 'resumable', 'link-150');">resumable</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L673"></a><tt class="py-lineno">673</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-168" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
+apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-168', 'resumable', 'link-155');">resumable</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L674"></a><tt class="py-lineno">674</tt> <tt class="py-line"> <tt class="py-comment"># This is all we need to do for resumable, if the body exists it gets</tt> </tt>
<a name="L675"></a><tt class="py-lineno">675</tt> <tt class="py-line"> <tt class="py-comment"># sent in the first request, otherwise an empty body is sent.</tt> </tt>
-<a name="L676"></a><tt class="py-lineno">676</tt> <tt class="py-line"> <tt id="link-164" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
-apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-164', 'resumable', 'link-150');">resumable</a></tt> <tt class="py-op">=</tt> <tt class="py-name">media_upload</tt> </tt>
+<a name="L676"></a><tt class="py-lineno">676</tt> <tt class="py-line"> <tt id="link-169" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
+apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-169', 'resumable', 'link-155');">resumable</a></tt> <tt class="py-op">=</tt> <tt class="py-name">media_upload</tt> </tt>
<a name="L677"></a><tt class="py-lineno">677</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L678"></a><tt class="py-lineno">678</tt> <tt class="py-line"> <tt class="py-comment"># A non-resumable upload</tt> </tt>
-<a name="L679"></a><tt class="py-lineno">679</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">body</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L679"></a><tt class="py-lineno">679</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-170" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-170', 'body', 'link-100');">body</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
<a name="L680"></a><tt class="py-lineno">680</tt> <tt class="py-line"> <tt class="py-comment"># This is a simple media upload</tt> </tt>
-<a name="L681"></a><tt class="py-lineno">681</tt> <tt class="py-line"> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'content-type'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-165" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.mimetype
-apiclient.http.MediaUpload.mimetype" class="py-name" href="#" onclick="return doclink('link-165', 'mimetype', 'link-157');">mimetype</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L682"></a><tt class="py-lineno">682</tt> <tt class="py-line"> <tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-166" class="py-name" targets="Method apiclient.http.MediaIoBaseUpload.getbytes()=apiclient.http.MediaIoBaseUpload-class.html#getbytes,Method apiclient.http.MediaUpload.getbytes()=apiclient.http.MediaUpload-class.html#getbytes"><a title="apiclient.http.MediaIoBaseUpload.getbytes
-apiclient.http.MediaUpload.getbytes" class="py-name" href="#" onclick="return doclink('link-166', 'getbytes', 'link-166');">getbytes</a></tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-167" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.size
-apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-167', 'size', 'link-159');">size</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L683"></a><tt class="py-lineno">683</tt> <tt class="py-line"> <tt class="py-name">url</tt> <tt class="py-op">=</tt> <tt id="link-168" class="py-name"><a title="oauth2client.util._add_query_parameter" class="py-name" href="#" onclick="return doclink('link-168', '_add_query_parameter', 'link-44');">_add_query_parameter</a></tt><tt class="py-op">(</tt><tt class="py-name">url</tt><tt class="py-op">,</tt> <tt class="py-string">'uploadType'</tt><tt class="py-op">,</tt> <tt class="py-string">'media'</tt><tt class="py-op">)</tt> </tt>
+<a name="L681"></a><tt class="py-lineno">681</tt> <tt class="py-line"> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'content-type'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-171" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.mimetype
+apiclient.http.MediaUpload.mimetype" class="py-name" href="#" onclick="return doclink('link-171', 'mimetype', 'link-162');">mimetype</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L682"></a><tt class="py-lineno">682</tt> <tt class="py-line"> <tt id="link-172" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-172', 'body', 'link-100');">body</a></tt> <tt class="py-op">=</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-173" class="py-name" targets="Method apiclient.http.MediaIoBaseUpload.getbytes()=apiclient.http.MediaIoBaseUpload-class.html#getbytes,Method apiclient.http.MediaUpload.getbytes()=apiclient.http.MediaUpload-class.html#getbytes"><a title="apiclient.http.MediaIoBaseUpload.getbytes
+apiclient.http.MediaUpload.getbytes" class="py-name" href="#" onclick="return doclink('link-173', 'getbytes', 'link-173');">getbytes</a></tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-174" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.size
+apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-174', 'size', 'link-164');">size</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L683"></a><tt class="py-lineno">683</tt> <tt class="py-line"> <tt class="py-name">url</tt> <tt class="py-op">=</tt> <tt id="link-175" class="py-name"><a title="oauth2client.util._add_query_parameter" class="py-name" href="#" onclick="return doclink('link-175', '_add_query_parameter', 'link-44');">_add_query_parameter</a></tt><tt class="py-op">(</tt><tt class="py-name">url</tt><tt class="py-op">,</tt> <tt class="py-string">'uploadType'</tt><tt class="py-op">,</tt> <tt class="py-string">'media'</tt><tt class="py-op">)</tt> </tt>
<a name="L684"></a><tt class="py-lineno">684</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L685"></a><tt class="py-lineno">685</tt> <tt class="py-line"> <tt class="py-comment"># This is a multipart/related upload.</tt> </tt>
<a name="L686"></a><tt class="py-lineno">686</tt> <tt class="py-line"> <tt class="py-name">msgRoot</tt> <tt class="py-op">=</tt> <tt class="py-name">MIMEMultipart</tt><tt class="py-op">(</tt><tt class="py-string">'related'</tt><tt class="py-op">)</tt> </tt>
@@ -848,62 +848,62 @@
<a name="L689"></a><tt class="py-lineno">689</tt> <tt class="py-line"> </tt>
<a name="L690"></a><tt class="py-lineno">690</tt> <tt class="py-line"> <tt class="py-comment"># attach the body as one part</tt> </tt>
<a name="L691"></a><tt class="py-lineno">691</tt> <tt class="py-line"> <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">MIMENonMultipart</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'content-type'</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'/'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L692"></a><tt class="py-lineno">692</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt class="py-name">set_payload</tt><tt class="py-op">(</tt><tt class="py-name">body</tt><tt class="py-op">)</tt> </tt>
+<a name="L692"></a><tt class="py-lineno">692</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt class="py-name">set_payload</tt><tt class="py-op">(</tt><tt id="link-176" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-176', 'body', 'link-100');">body</a></tt><tt class="py-op">)</tt> </tt>
<a name="L693"></a><tt class="py-lineno">693</tt> <tt class="py-line"> <tt class="py-name">msgRoot</tt><tt class="py-op">.</tt><tt class="py-name">attach</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt>
<a name="L694"></a><tt class="py-lineno">694</tt> <tt class="py-line"> </tt>
<a name="L695"></a><tt class="py-lineno">695</tt> <tt class="py-line"> <tt class="py-comment"># attach the media as the second part</tt> </tt>
-<a name="L696"></a><tt class="py-lineno">696</tt> <tt class="py-line"> <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">MIMENonMultipart</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-169" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.mimetype
-apiclient.http.MediaUpload.mimetype" class="py-name" href="#" onclick="return doclink('link-169', 'mimetype', 'link-157');">mimetype</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'/'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L696"></a><tt class="py-lineno">696</tt> <tt class="py-line"> <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">MIMENonMultipart</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-177" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.mimetype
+apiclient.http.MediaUpload.mimetype" class="py-name" href="#" onclick="return doclink('link-177', 'mimetype', 'link-162');">mimetype</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'/'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L697"></a><tt class="py-lineno">697</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">[</tt><tt class="py-string">'Content-Transfer-Encoding'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'binary'</tt> </tt>
<a name="L698"></a><tt class="py-lineno">698</tt> <tt class="py-line"> </tt>
-<a name="L699"></a><tt class="py-lineno">699</tt> <tt class="py-line"> <tt class="py-name">payload</tt> <tt class="py-op">=</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-170" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.getbytes
-apiclient.http.MediaUpload.getbytes" class="py-name" href="#" onclick="return doclink('link-170', 'getbytes', 'link-166');">getbytes</a></tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-171" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.size
-apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-171', 'size', 'link-159');">size</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L699"></a><tt class="py-lineno">699</tt> <tt class="py-line"> <tt class="py-name">payload</tt> <tt class="py-op">=</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-178" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.getbytes
+apiclient.http.MediaUpload.getbytes" class="py-name" href="#" onclick="return doclink('link-178', 'getbytes', 'link-173');">getbytes</a></tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">media_upload</tt><tt class="py-op">.</tt><tt id="link-179" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.size
+apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-179', 'size', 'link-164');">size</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L700"></a><tt class="py-lineno">700</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt class="py-name">set_payload</tt><tt class="py-op">(</tt><tt class="py-name">payload</tt><tt class="py-op">)</tt> </tt>
<a name="L701"></a><tt class="py-lineno">701</tt> <tt class="py-line"> <tt class="py-name">msgRoot</tt><tt class="py-op">.</tt><tt class="py-name">attach</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt>
-<a name="L702"></a><tt class="py-lineno">702</tt> <tt class="py-line"> <tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">msgRoot</tt><tt class="py-op">.</tt><tt class="py-name">as_string</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L702"></a><tt class="py-lineno">702</tt> <tt class="py-line"> <tt id="link-180" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-180', 'body', 'link-100');">body</a></tt> <tt class="py-op">=</tt> <tt class="py-name">msgRoot</tt><tt class="py-op">.</tt><tt class="py-name">as_string</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L703"></a><tt class="py-lineno">703</tt> <tt class="py-line"> </tt>
<a name="L704"></a><tt class="py-lineno">704</tt> <tt class="py-line"> <tt class="py-name">multipart_boundary</tt> <tt class="py-op">=</tt> <tt class="py-name">msgRoot</tt><tt class="py-op">.</tt><tt class="py-name">get_boundary</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L705"></a><tt class="py-lineno">705</tt> <tt class="py-line"> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'content-type'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">'multipart/related; '</tt> </tt>
<a name="L706"></a><tt class="py-lineno">706</tt> <tt class="py-line"> <tt class="py-string">'boundary="%s"'</tt><tt class="py-op">)</tt> <tt class="py-op">%</tt> <tt class="py-name">multipart_boundary</tt> </tt>
-<a name="L707"></a><tt class="py-lineno">707</tt> <tt class="py-line"> <tt class="py-name">url</tt> <tt class="py-op">=</tt> <tt id="link-172" class="py-name"><a title="oauth2client.util._add_query_parameter" class="py-name" href="#" onclick="return doclink('link-172', '_add_query_parameter', 'link-44');">_add_query_parameter</a></tt><tt class="py-op">(</tt><tt class="py-name">url</tt><tt class="py-op">,</tt> <tt class="py-string">'uploadType'</tt><tt class="py-op">,</tt> <tt class="py-string">'multipart'</tt><tt class="py-op">)</tt> </tt>
+<a name="L707"></a><tt class="py-lineno">707</tt> <tt class="py-line"> <tt class="py-name">url</tt> <tt class="py-op">=</tt> <tt id="link-181" class="py-name"><a title="oauth2client.util._add_query_parameter" class="py-name" href="#" onclick="return doclink('link-181', '_add_query_parameter', 'link-44');">_add_query_parameter</a></tt><tt class="py-op">(</tt><tt class="py-name">url</tt><tt class="py-op">,</tt> <tt class="py-string">'uploadType'</tt><tt class="py-op">,</tt> <tt class="py-string">'multipart'</tt><tt class="py-op">)</tt> </tt>
<a name="L708"></a><tt class="py-lineno">708</tt> <tt class="py-line"> </tt>
-<a name="L709"></a><tt class="py-lineno">709</tt> <tt class="py-line"> <tt id="link-173" class="py-name"><a title="apiclient.discovery.logger
+<a name="L709"></a><tt class="py-lineno">709</tt> <tt class="py-line"> <tt id="link-182" class="py-name"><a title="apiclient.discovery.logger
oauth2client.appengine.logger
oauth2client.client.logger
oauth2client.crypt.logger
oauth2client.gce.logger
oauth2client.locked_file.logger
oauth2client.multistore_file.logger
-oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-173', 'logger', 'link-48');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'URL being requested: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">url</tt><tt class="py-op">)</tt> </tt>
+oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-182', 'logger', 'link-48');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'URL being requested: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">url</tt><tt class="py-op">)</tt> </tt>
<a name="L710"></a><tt class="py-lineno">710</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requestBuilder</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_http</tt><tt class="py-op">,</tt> </tt>
-<a name="L711"></a><tt class="py-lineno">711</tt> <tt class="py-line"> <tt id="link-174" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-174', 'model', 'link-29');">model</a></tt><tt class="py-op">.</tt><tt id="link-175" class="py-name" targets="Method apiclient.model.BaseModel.response()=apiclient.model.BaseModel-class.html#response,Method apiclient.model.Model.response()=apiclient.model.Model-class.html#response"><a title="apiclient.model.BaseModel.response
-apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-175', 'response', 'link-175');">response</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L711"></a><tt class="py-lineno">711</tt> <tt class="py-line"> <tt id="link-183" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-183', 'model', 'link-29');">model</a></tt><tt class="py-op">.</tt><tt id="link-184" class="py-name" targets="Method apiclient.model.BaseModel.response()=apiclient.model.BaseModel-class.html#response,Method apiclient.model.Model.response()=apiclient.model.Model-class.html#response"><a title="apiclient.model.BaseModel.response
+apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-184', 'response', 'link-184');">response</a></tt><tt class="py-op">,</tt> </tt>
<a name="L712"></a><tt class="py-lineno">712</tt> <tt class="py-line"> <tt class="py-name">url</tt><tt class="py-op">,</tt> </tt>
<a name="L713"></a><tt class="py-lineno">713</tt> <tt class="py-line"> <tt class="py-name">method</tt><tt class="py-op">=</tt><tt class="py-name">httpMethod</tt><tt class="py-op">,</tt> </tt>
-<a name="L714"></a><tt class="py-lineno">714</tt> <tt class="py-line"> <tt class="py-name">body</tt><tt class="py-op">=</tt><tt class="py-name">body</tt><tt class="py-op">,</tt> </tt>
+<a name="L714"></a><tt class="py-lineno">714</tt> <tt class="py-line"> <tt id="link-185" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-185', 'body', 'link-100');">body</a></tt><tt class="py-op">=</tt><tt id="link-186" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-186', 'body', 'link-100');">body</a></tt><tt class="py-op">,</tt> </tt>
<a name="L715"></a><tt class="py-lineno">715</tt> <tt class="py-line"> <tt class="py-name">headers</tt><tt class="py-op">=</tt><tt class="py-name">headers</tt><tt class="py-op">,</tt> </tt>
<a name="L716"></a><tt class="py-lineno">716</tt> <tt class="py-line"> <tt class="py-name">methodId</tt><tt class="py-op">=</tt><tt class="py-name">methodId</tt><tt class="py-op">,</tt> </tt>
-<a name="L717"></a><tt class="py-lineno">717</tt> <tt class="py-line"> <tt id="link-176" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
-apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-176', 'resumable', 'link-150');">resumable</a></tt><tt class="py-op">=</tt><tt id="link-177" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
-apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-177', 'resumable', 'link-150');">resumable</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L717"></a><tt class="py-lineno">717</tt> <tt class="py-line"> <tt id="link-187" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
+apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-187', 'resumable', 'link-155');">resumable</a></tt><tt class="py-op">=</tt><tt id="link-188" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
+apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-188', 'resumable', 'link-155');">resumable</a></tt><tt class="py-op">)</tt> </tt>
</div><a name="L718"></a><tt class="py-lineno">718</tt> <tt class="py-line"> </tt>
-<a name="L719"></a><tt class="py-lineno">719</tt> <tt class="py-line"> <tt class="py-name">docs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">methodDesc</tt><tt class="py-op">.</tt><tt id="link-178" class="py-name"><a title="apiclient.schema.Schemas.get
+<a name="L719"></a><tt class="py-lineno">719</tt> <tt class="py-line"> <tt class="py-name">docs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">methodDesc</tt><tt class="py-op">.</tt><tt id="link-189" class="py-name"><a title="apiclient.schema.Schemas.get
oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-178', 'get', 'link-84');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'description'</tt><tt class="py-op">,</tt> <tt id="link-179" class="py-name"><a title="apiclient.discovery.DEFAULT_METHOD_DOC" class="py-name" href="#" onclick="return doclink('link-179', 'DEFAULT_METHOD_DOC', 'link-52');">DEFAULT_METHOD_DOC</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">'\n\n'</tt><tt class="py-op">]</tt> </tt>
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-189', 'get', 'link-84');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'description'</tt><tt class="py-op">,</tt> <tt id="link-190" class="py-name"><a title="apiclient.discovery.DEFAULT_METHOD_DOC" class="py-name" href="#" onclick="return doclink('link-190', 'DEFAULT_METHOD_DOC', 'link-52');">DEFAULT_METHOD_DOC</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">'\n\n'</tt><tt class="py-op">]</tt> </tt>
<a name="L720"></a><tt class="py-lineno">720</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">argmap</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
<a name="L721"></a><tt class="py-lineno">721</tt> <tt class="py-line"> <tt class="py-name">docs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'Args:\n'</tt><tt class="py-op">)</tt> </tt>
<a name="L722"></a><tt class="py-lineno">722</tt> <tt class="py-line"> </tt>
<a name="L723"></a><tt class="py-lineno">723</tt> <tt class="py-line"> <tt class="py-comment"># Skip undocumented params and params common to all methods.</tt> </tt>
-<a name="L724"></a><tt class="py-lineno">724</tt> <tt class="py-line"> <tt class="py-name">skip_parameters</tt> <tt class="py-op">=</tt> <tt class="py-name">rootDesc</tt><tt class="py-op">.</tt><tt id="link-180" class="py-name"><a title="apiclient.schema.Schemas.get
+<a name="L724"></a><tt class="py-lineno">724</tt> <tt class="py-line"> <tt class="py-name">skip_parameters</tt> <tt class="py-op">=</tt> <tt class="py-name">rootDesc</tt><tt class="py-op">.</tt><tt id="link-191" class="py-name"><a title="apiclient.schema.Schemas.get
oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-180', 'get', 'link-84');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'parameters'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L725"></a><tt class="py-lineno">725</tt> <tt class="py-line"> <tt class="py-name">skip_parameters</tt><tt class="py-op">.</tt><tt class="py-name">extend</tt><tt class="py-op">(</tt><tt id="link-181" class="py-name"><a title="apiclient.discovery.STACK_QUERY_PARAMETERS" class="py-name" href="#" onclick="return doclink('link-181', 'STACK_QUERY_PARAMETERS', 'link-57');">STACK_QUERY_PARAMETERS</a></tt><tt class="py-op">)</tt> </tt>
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-191', 'get', 'link-84');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'parameters'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L725"></a><tt class="py-lineno">725</tt> <tt class="py-line"> <tt class="py-name">skip_parameters</tt><tt class="py-op">.</tt><tt class="py-name">extend</tt><tt class="py-op">(</tt><tt id="link-192" class="py-name"><a title="apiclient.discovery.STACK_QUERY_PARAMETERS" class="py-name" href="#" onclick="return doclink('link-192', 'STACK_QUERY_PARAMETERS', 'link-57');">STACK_QUERY_PARAMETERS</a></tt><tt class="py-op">)</tt> </tt>
<a name="L726"></a><tt class="py-lineno">726</tt> <tt class="py-line"> </tt>
<a name="L727"></a><tt class="py-lineno">727</tt> <tt class="py-line"> <tt class="py-name">all_args</tt> <tt class="py-op">=</tt> <tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">argmap</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L728"></a><tt class="py-lineno">728</tt> <tt class="py-line"> <tt class="py-name">args_ordered</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-182" class="py-name"><a title="apiclient.discovery.key2param" class="py-name" href="#" onclick="return doclink('link-182', 'key2param', 'link-117');">key2param</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">s</tt> <tt class="py-keyword">in</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">.</tt><tt id="link-183" class="py-name"><a title="apiclient.schema.Schemas.get
+<a name="L728"></a><tt class="py-lineno">728</tt> <tt class="py-line"> <tt class="py-name">args_ordered</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-193" class="py-name"><a title="apiclient.discovery.key2param" class="py-name" href="#" onclick="return doclink('link-193', 'key2param', 'link-121');">key2param</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">s</tt> <tt class="py-keyword">in</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">.</tt><tt id="link-194" class="py-name"><a title="apiclient.schema.Schemas.get
oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-183', 'get', 'link-84');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'parameterOrder'</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-194', 'get', 'link-84');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'parameterOrder'</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
<a name="L729"></a><tt class="py-lineno">729</tt> <tt class="py-line"> </tt>
<a name="L730"></a><tt class="py-lineno">730</tt> <tt class="py-line"> <tt class="py-comment"># Move body to the front of the line.</tt> </tt>
<a name="L731"></a><tt class="py-lineno">731</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'body'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">all_args</tt><tt class="py-op">:</tt> </tt>
@@ -924,26 +924,26 @@
<a name="L746"></a><tt class="py-lineno">746</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">arg</tt> <tt class="py-keyword">in</tt> <tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">required_params</tt><tt class="py-op">:</tt> </tt>
<a name="L747"></a><tt class="py-lineno">747</tt> <tt class="py-line"> <tt class="py-name">required</tt> <tt class="py-op">=</tt> <tt class="py-string">' (required)'</tt> </tt>
<a name="L748"></a><tt class="py-lineno">748</tt> <tt class="py-line"> <tt class="py-name">paramdesc</tt> <tt class="py-op">=</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">[</tt><tt class="py-string">'parameters'</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">parameters</tt><tt class="py-op">.</tt><tt class="py-name">argmap</tt><tt class="py-op">[</tt><tt class="py-name">arg</tt><tt class="py-op">]</tt><tt class="py-op">]</tt> </tt>
-<a name="L749"></a><tt class="py-lineno">749</tt> <tt class="py-line"> <tt class="py-name">paramdoc</tt> <tt class="py-op">=</tt> <tt class="py-name">paramdesc</tt><tt class="py-op">.</tt><tt id="link-184" class="py-name"><a title="apiclient.schema.Schemas.get
+<a name="L749"></a><tt class="py-lineno">749</tt> <tt class="py-line"> <tt class="py-name">paramdoc</tt> <tt class="py-op">=</tt> <tt class="py-name">paramdesc</tt><tt class="py-op">.</tt><tt id="link-195" class="py-name"><a title="apiclient.schema.Schemas.get
oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-184', 'get', 'link-84');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'description'</tt><tt class="py-op">,</tt> <tt class="py-string">'A parameter'</tt><tt class="py-op">)</tt> </tt>
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-195', 'get', 'link-84');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'description'</tt><tt class="py-op">,</tt> <tt class="py-string">'A parameter'</tt><tt class="py-op">)</tt> </tt>
<a name="L750"></a><tt class="py-lineno">750</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'$ref'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">paramdesc</tt><tt class="py-op">:</tt> </tt>
<a name="L751"></a><tt class="py-lineno">751</tt> <tt class="py-line"> <tt class="py-name">docs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt> </tt>
<a name="L752"></a><tt class="py-lineno">752</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-string">' %s: object, %s%s%s\n The object takes the'</tt> </tt>
<a name="L753"></a><tt class="py-lineno">753</tt> <tt class="py-line"> <tt class="py-string">' form of:\n\n%s\n\n'</tt><tt class="py-op">)</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">arg</tt><tt class="py-op">,</tt> <tt class="py-name">paramdoc</tt><tt class="py-op">,</tt> <tt class="py-name">required</tt><tt class="py-op">,</tt> <tt class="py-name">repeated</tt><tt class="py-op">,</tt> </tt>
-<a name="L754"></a><tt class="py-lineno">754</tt> <tt class="py-line"> <tt id="link-185" class="py-name"><a title="apiclient.schema" class="py-name" href="#" onclick="return doclink('link-185', 'schema', 'link-38');">schema</a></tt><tt class="py-op">.</tt><tt id="link-186" class="py-name" targets="Method apiclient.schema.Schemas.prettyPrintByName()=apiclient.schema.Schemas-class.html#prettyPrintByName"><a title="apiclient.schema.Schemas.prettyPrintByName" class="py-name" href="#" onclick="return doclink('link-186', 'prettyPrintByName', 'link-186');">prettyPrintByName</a></tt><tt class="py-op">(</tt><tt class="py-name">paramdesc</tt><tt class="py-op">[</tt><tt class="py-string">'$ref'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L754"></a><tt class="py-lineno">754</tt> <tt class="py-line"> <tt id="link-196" class="py-name"><a title="apiclient.schema" class="py-name" href="#" onclick="return doclink('link-196', 'schema', 'link-38');">schema</a></tt><tt class="py-op">.</tt><tt id="link-197" class="py-name" targets="Method apiclient.schema.Schemas.prettyPrintByName()=apiclient.schema.Schemas-class.html#prettyPrintByName"><a title="apiclient.schema.Schemas.prettyPrintByName" class="py-name" href="#" onclick="return doclink('link-197', 'prettyPrintByName', 'link-197');">prettyPrintByName</a></tt><tt class="py-op">(</tt><tt class="py-name">paramdesc</tt><tt class="py-op">[</tt><tt class="py-string">'$ref'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L755"></a><tt class="py-lineno">755</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L756"></a><tt class="py-lineno">756</tt> <tt class="py-line"> <tt class="py-name">paramtype</tt> <tt class="py-op">=</tt> <tt class="py-name">paramdesc</tt><tt class="py-op">.</tt><tt id="link-187" class="py-name"><a title="apiclient.schema.Schemas.get
+<a name="L756"></a><tt class="py-lineno">756</tt> <tt class="py-line"> <tt class="py-name">paramtype</tt> <tt class="py-op">=</tt> <tt class="py-name">paramdesc</tt><tt class="py-op">.</tt><tt id="link-198" class="py-name"><a title="apiclient.schema.Schemas.get
oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-187', 'get', 'link-84');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'type'</tt><tt class="py-op">,</tt> <tt class="py-string">'string'</tt><tt class="py-op">)</tt> </tt>
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-198', 'get', 'link-84');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'type'</tt><tt class="py-op">,</tt> <tt class="py-string">'string'</tt><tt class="py-op">)</tt> </tt>
<a name="L757"></a><tt class="py-lineno">757</tt> <tt class="py-line"> <tt class="py-name">docs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">' %s: %s, %s%s%s\n'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">arg</tt><tt class="py-op">,</tt> <tt class="py-name">paramtype</tt><tt class="py-op">,</tt> <tt class="py-name">paramdoc</tt><tt class="py-op">,</tt> <tt class="py-name">required</tt><tt class="py-op">,</tt> </tt>
<a name="L758"></a><tt class="py-lineno">758</tt> <tt class="py-line"> <tt class="py-name">repeated</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L759"></a><tt class="py-lineno">759</tt> <tt class="py-line"> <tt class="py-name">enum</tt> <tt class="py-op">=</tt> <tt class="py-name">paramdesc</tt><tt class="py-op">.</tt><tt id="link-188" class="py-name"><a title="apiclient.schema.Schemas.get
+<a name="L759"></a><tt class="py-lineno">759</tt> <tt class="py-line"> <tt class="py-name">enum</tt> <tt class="py-op">=</tt> <tt class="py-name">paramdesc</tt><tt class="py-op">.</tt><tt id="link-199" class="py-name"><a title="apiclient.schema.Schemas.get
oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-188', 'get', 'link-84');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'enum'</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L760"></a><tt class="py-lineno">760</tt> <tt class="py-line"> <tt class="py-name">enumDesc</tt> <tt class="py-op">=</tt> <tt class="py-name">paramdesc</tt><tt class="py-op">.</tt><tt id="link-189" class="py-name"><a title="apiclient.schema.Schemas.get
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-199', 'get', 'link-84');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'enum'</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L760"></a><tt class="py-lineno">760</tt> <tt class="py-line"> <tt class="py-name">enumDesc</tt> <tt class="py-op">=</tt> <tt class="py-name">paramdesc</tt><tt class="py-op">.</tt><tt id="link-200" class="py-name"><a title="apiclient.schema.Schemas.get
oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-189', 'get', 'link-84');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'enumDescriptions'</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-200', 'get', 'link-84');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'enumDescriptions'</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
<a name="L761"></a><tt class="py-lineno">761</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">enum</tt> <tt class="py-keyword">and</tt> <tt class="py-name">enumDesc</tt><tt class="py-op">:</tt> </tt>
<a name="L762"></a><tt class="py-lineno">762</tt> <tt class="py-line"> <tt class="py-name">docs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">' Allowed values\n'</tt><tt class="py-op">)</tt> </tt>
<a name="L763"></a><tt class="py-lineno">763</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">name</tt><tt class="py-op">,</tt> <tt class="py-name">desc</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">zip</tt><tt class="py-op">(</tt><tt class="py-name">enum</tt><tt class="py-op">,</tt> <tt class="py-name">enumDesc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
@@ -953,7 +953,7 @@
<a name="L767"></a><tt class="py-lineno">767</tt> <tt class="py-line"> <tt class="py-name">docs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'\nReturns:\n The media object as a string.\n\n '</tt><tt class="py-op">)</tt> </tt>
<a name="L768"></a><tt class="py-lineno">768</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L769"></a><tt class="py-lineno">769</tt> <tt class="py-line"> <tt class="py-name">docs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-string">'\nReturns:\n An object of the form:\n\n '</tt><tt class="py-op">)</tt> </tt>
-<a name="L770"></a><tt class="py-lineno">770</tt> <tt class="py-line"> <tt class="py-name">docs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-190" class="py-name"><a title="apiclient.schema" class="py-name" href="#" onclick="return doclink('link-190', 'schema', 'link-38');">schema</a></tt><tt class="py-op">.</tt><tt id="link-191" class="py-name" targets="Method apiclient.schema.Schemas.prettyPrintSchema()=apiclient.schema.Schemas-class.html#prettyPrintSchema"><a title="apiclient.schema.Schemas.prettyPrintSchema" class="py-name" href="#" onclick="return doclink('link-191', 'prettyPrintSchema', 'link-191');">prettyPrintSchema</a></tt><tt class="py-op">(</tt><tt class="py-name">methodDesc</tt><tt class="py-op">[</tt><tt class="py-string">'response'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L770"></a><tt class="py-lineno">770</tt> <tt class="py-line"> <tt class="py-name">docs</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-201" class="py-name"><a title="apiclient.schema" class="py-name" href="#" onclick="return doclink('link-201', 'schema', 'link-38');">schema</a></tt><tt class="py-op">.</tt><tt id="link-202" class="py-name" targets="Method apiclient.schema.Schemas.prettyPrintSchema()=apiclient.schema.Schemas-class.html#prettyPrintSchema"><a title="apiclient.schema.Schemas.prettyPrintSchema" class="py-name" href="#" onclick="return doclink('link-202', 'prettyPrintSchema', 'link-202');">prettyPrintSchema</a></tt><tt class="py-op">(</tt><tt class="py-name">methodDesc</tt><tt class="py-op">[</tt><tt class="py-string">'response'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L771"></a><tt class="py-lineno">771</tt> <tt class="py-line"> </tt>
<a name="L772"></a><tt class="py-lineno">772</tt> <tt class="py-line"> <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">method</tt><tt class="py-op">,</tt> <tt class="py-string">'__doc__'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">docs</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L773"></a><tt class="py-lineno">773</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">methodName</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt><tt class="py-op">)</tt> </tt>
@@ -967,7 +967,7 @@
<a name="L781"></a><tt class="py-lineno">781</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
<a name="L782"></a><tt class="py-lineno">782</tt> <tt class="py-line"><tt class="py-docstring"> methodName: string, name of the method to use.</tt> </tt>
<a name="L783"></a><tt class="py-lineno">783</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L784"></a><tt class="py-lineno">784</tt> <tt class="py-line"> <tt class="py-name">methodName</tt> <tt class="py-op">=</tt> <tt id="link-192" class="py-name"><a title="apiclient.discovery.fix_method_name" class="py-name" href="#" onclick="return doclink('link-192', 'fix_method_name', 'link-133');">fix_method_name</a></tt><tt class="py-op">(</tt><tt class="py-name">methodName</tt><tt class="py-op">)</tt> </tt>
+<a name="L784"></a><tt class="py-lineno">784</tt> <tt class="py-line"> <tt class="py-name">methodName</tt> <tt class="py-op">=</tt> <tt id="link-203" class="py-name"><a title="apiclient.discovery.fix_method_name" class="py-name" href="#" onclick="return doclink('link-203', 'fix_method_name', 'link-137');">fix_method_name</a></tt><tt class="py-op">(</tt><tt class="py-name">methodName</tt><tt class="py-op">)</tt> </tt>
<a name="L785"></a><tt class="py-lineno">785</tt> <tt class="py-line"> </tt>
<a name="L786"></a><tt class="py-lineno">786</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">methodNext</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">previous_request</tt><tt class="py-op">,</tt> <tt class="py-param">previous_response</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L787"></a><tt class="py-lineno">787</tt> <tt class="py-line"> <tt class="py-docstring">"""Retrieves the next page of results.</tt> </tt>
@@ -986,16 +986,16 @@
<a name="L800"></a><tt class="py-lineno">800</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'nextPageToken'</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">previous_response</tt><tt class="py-op">:</tt> </tt>
<a name="L801"></a><tt class="py-lineno">801</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
<a name="L802"></a><tt class="py-lineno">802</tt> <tt class="py-line"> </tt>
-<a name="L803"></a><tt class="py-lineno">803</tt> <tt class="py-line"> <tt id="link-193" class="py-name"><a title="apiclient.http.HttpMock.request
+<a name="L803"></a><tt class="py-lineno">803</tt> <tt class="py-line"> <tt id="link-204" class="py-name"><a title="apiclient.http.HttpMock.request
apiclient.http.HttpMockSequence.request
apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-193', 'request', 'link-68');">request</a></tt> <tt class="py-op">=</tt> <tt class="py-name">copy</tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-name">previous_request</tt><tt class="py-op">)</tt> </tt>
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-204', 'request', 'link-68');">request</a></tt> <tt class="py-op">=</tt> <tt class="py-name">copy</tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-name">previous_request</tt><tt class="py-op">)</tt> </tt>
<a name="L804"></a><tt class="py-lineno">804</tt> <tt class="py-line"> </tt>
<a name="L805"></a><tt class="py-lineno">805</tt> <tt class="py-line"> <tt class="py-name">pageToken</tt> <tt class="py-op">=</tt> <tt class="py-name">previous_response</tt><tt class="py-op">[</tt><tt class="py-string">'nextPageToken'</tt><tt class="py-op">]</tt> </tt>
-<a name="L806"></a><tt class="py-lineno">806</tt> <tt class="py-line"> <tt class="py-name">parsed</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">urlparse</tt><tt class="py-op">.</tt><tt class="py-name">urlparse</tt><tt class="py-op">(</tt><tt id="link-194" class="py-name"><a title="apiclient.http.HttpMock.request
+<a name="L806"></a><tt class="py-lineno">806</tt> <tt class="py-line"> <tt class="py-name">parsed</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">urlparse</tt><tt class="py-op">.</tt><tt class="py-name">urlparse</tt><tt class="py-op">(</tt><tt id="link-205" class="py-name"><a title="apiclient.http.HttpMock.request
apiclient.http.HttpMockSequence.request
apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-194', 'request', 'link-68');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-205', 'request', 'link-68');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L807"></a><tt class="py-lineno">807</tt> <tt class="py-line"> <tt class="py-name">q</tt> <tt class="py-op">=</tt> <tt class="py-name">parse_qsl</tt><tt class="py-op">(</tt><tt class="py-name">parsed</tt><tt class="py-op">[</tt><tt class="py-number">4</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
<a name="L808"></a><tt class="py-lineno">808</tt> <tt class="py-line"> </tt>
<a name="L809"></a><tt class="py-lineno">809</tt> <tt class="py-line"> <tt class="py-comment"># Find and remove old 'pageToken' value from URI</tt> </tt>
@@ -1004,24 +1004,24 @@
<a name="L812"></a><tt class="py-lineno">812</tt> <tt class="py-line"> <tt class="py-name">parsed</tt><tt class="py-op">[</tt><tt class="py-number">4</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">urlencode</tt><tt class="py-op">(</tt><tt class="py-name">newq</tt><tt class="py-op">)</tt> </tt>
<a name="L813"></a><tt class="py-lineno">813</tt> <tt class="py-line"> <tt class="py-name">uri</tt> <tt class="py-op">=</tt> <tt class="py-name">urlparse</tt><tt class="py-op">.</tt><tt class="py-name">urlunparse</tt><tt class="py-op">(</tt><tt class="py-name">parsed</tt><tt class="py-op">)</tt> </tt>
<a name="L814"></a><tt class="py-lineno">814</tt> <tt class="py-line"> </tt>
-<a name="L815"></a><tt class="py-lineno">815</tt> <tt class="py-line"> <tt id="link-195" class="py-name"><a title="apiclient.http.HttpMock.request
+<a name="L815"></a><tt class="py-lineno">815</tt> <tt class="py-line"> <tt id="link-206" class="py-name"><a title="apiclient.http.HttpMock.request
apiclient.http.HttpMockSequence.request
apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-195', 'request', 'link-68');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">uri</tt> <tt class="py-op">=</tt> <tt class="py-name">uri</tt> </tt>
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-206', 'request', 'link-68');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">uri</tt> <tt class="py-op">=</tt> <tt class="py-name">uri</tt> </tt>
<a name="L816"></a><tt class="py-lineno">816</tt> <tt class="py-line"> </tt>
-<a name="L817"></a><tt class="py-lineno">817</tt> <tt class="py-line"> <tt id="link-196" class="py-name"><a title="apiclient.discovery.logger
+<a name="L817"></a><tt class="py-lineno">817</tt> <tt class="py-line"> <tt id="link-207" class="py-name"><a title="apiclient.discovery.logger
oauth2client.appengine.logger
oauth2client.client.logger
oauth2client.crypt.logger
oauth2client.gce.logger
oauth2client.locked_file.logger
oauth2client.multistore_file.logger
-oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-196', 'logger', 'link-48');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'URL being requested: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">uri</tt><tt class="py-op">)</tt> </tt>
+oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-207', 'logger', 'link-48');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'URL being requested: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">uri</tt><tt class="py-op">)</tt> </tt>
<a name="L818"></a><tt class="py-lineno">818</tt> <tt class="py-line"> </tt>
-<a name="L819"></a><tt class="py-lineno">819</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-197" class="py-name"><a title="apiclient.http.HttpMock.request
+<a name="L819"></a><tt class="py-lineno">819</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-208" class="py-name"><a title="apiclient.http.HttpMock.request
apiclient.http.HttpMockSequence.request
apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-197', 'request', 'link-68');">request</a></tt> </tt>
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-208', 'request', 'link-68');">request</a></tt> </tt>
</div><a name="L820"></a><tt class="py-lineno">820</tt> <tt class="py-line"> </tt>
<a name="L821"></a><tt class="py-lineno">821</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">methodName</tt><tt class="py-op">,</tt> <tt class="py-name">methodNext</tt><tt class="py-op">)</tt> </tt>
</div><a name="L822"></a><tt class="py-lineno">822</tt> <tt class="py-line"> </tt>
@@ -1050,17 +1050,17 @@
<a name="L845"></a><tt class="py-lineno">845</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
<a name="L846"></a><tt class="py-lineno">846</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_dynamic_attrs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
<a name="L847"></a><tt class="py-lineno">847</tt> <tt class="py-line"> </tt>
-<a name="L848"></a><tt class="py-lineno">848</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_http</tt> <tt class="py-op">=</tt> <tt id="link-198" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-198', 'http', 'link-20');">http</a></tt> </tt>
+<a name="L848"></a><tt class="py-lineno">848</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_http</tt> <tt class="py-op">=</tt> <tt id="link-209" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-209', 'http', 'link-20');">http</a></tt> </tt>
<a name="L849"></a><tt class="py-lineno">849</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_baseUrl</tt> <tt class="py-op">=</tt> <tt class="py-name">baseUrl</tt> </tt>
-<a name="L850"></a><tt class="py-lineno">850</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_model</tt> <tt class="py-op">=</tt> <tt id="link-199" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-199', 'model', 'link-29');">model</a></tt> </tt>
+<a name="L850"></a><tt class="py-lineno">850</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_model</tt> <tt class="py-op">=</tt> <tt id="link-210" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-210', 'model', 'link-29');">model</a></tt> </tt>
<a name="L851"></a><tt class="py-lineno">851</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_developerKey</tt> <tt class="py-op">=</tt> <tt class="py-name">developerKey</tt> </tt>
<a name="L852"></a><tt class="py-lineno">852</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requestBuilder</tt> <tt class="py-op">=</tt> <tt class="py-name">requestBuilder</tt> </tt>
<a name="L853"></a><tt class="py-lineno">853</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_resourceDesc</tt> <tt class="py-op">=</tt> <tt class="py-name">resourceDesc</tt> </tt>
<a name="L854"></a><tt class="py-lineno">854</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_rootDesc</tt> <tt class="py-op">=</tt> <tt class="py-name">rootDesc</tt> </tt>
-<a name="L855"></a><tt class="py-lineno">855</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_schema</tt> <tt class="py-op">=</tt> <tt id="link-200" class="py-name"><a title="apiclient.schema" class="py-name" href="#" onclick="return doclink('link-200', 'schema', 'link-38');">schema</a></tt> </tt>
+<a name="L855"></a><tt class="py-lineno">855</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_schema</tt> <tt class="py-op">=</tt> <tt id="link-211" class="py-name"><a title="apiclient.schema" class="py-name" href="#" onclick="return doclink('link-211', 'schema', 'link-38');">schema</a></tt> </tt>
<a name="L856"></a><tt class="py-lineno">856</tt> <tt class="py-line"> </tt>
-<a name="L857"></a><tt class="py-lineno">857</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-201" class="py-name" targets="Method apiclient.discovery.Resource._set_service_methods()=apiclient.discovery.Resource-class.html#_set_service_methods"><a title="apiclient.discovery.Resource._set_service_methods" class="py-name" href="#" onclick="return doclink('link-201', '_set_service_methods', 'link-201');">_set_service_methods</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L857"></a><tt class="py-lineno">857</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-212" class="py-name" targets="Method apiclient.discovery.Resource._set_service_methods()=apiclient.discovery.Resource-class.html#_set_service_methods"><a title="apiclient.discovery.Resource._set_service_methods" class="py-name" href="#" onclick="return doclink('link-212', '_set_service_methods', 'link-212');">_set_service_methods</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
</div><a name="L858"></a><tt class="py-lineno">858</tt> <tt class="py-line"> </tt>
<a name="Resource._set_dynamic_attr"></a><div id="Resource._set_dynamic_attr-def"><a name="L859"></a><tt class="py-lineno">859</tt> <a class="py-toggle" href="#" id="Resource._set_dynamic_attr-toggle" onclick="return toggle('Resource._set_dynamic_attr');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.discovery.Resource-class.html#_set_dynamic_attr">_set_dynamic_attr</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">attr_name</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="Resource._set_dynamic_attr-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="Resource._set_dynamic_attr-expanded"><a name="L860"></a><tt class="py-lineno">860</tt> <tt class="py-line"> <tt class="py-docstring">"""Sets an instance attribute and tracks it in a list of dynamic attributes.</tt> </tt>
@@ -1090,31 +1090,31 @@
<a name="L884"></a><tt class="py-lineno">884</tt> <tt class="py-line"><tt class="py-docstring"> Uses the fact that the instance variable _dynamic_attrs holds attrs that</tt> </tt>
<a name="L885"></a><tt class="py-lineno">885</tt> <tt class="py-line"><tt class="py-docstring"> will be wiped and restored on pickle serialization.</tt> </tt>
<a name="L886"></a><tt class="py-lineno">886</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L887"></a><tt class="py-lineno">887</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">state</tt><tt class="py-op">)</tt> </tt>
+<a name="L887"></a><tt class="py-lineno">887</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">.</tt><tt id="link-213" class="py-name"><a title="apiclient.channel.Channel.update" class="py-name" href="#" onclick="return doclink('link-213', 'update', 'link-103');">update</a></tt><tt class="py-op">(</tt><tt class="py-name">state</tt><tt class="py-op">)</tt> </tt>
<a name="L888"></a><tt class="py-lineno">888</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_dynamic_attrs</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L889"></a><tt class="py-lineno">889</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-202" class="py-name"><a title="apiclient.discovery.Resource._set_service_methods" class="py-name" href="#" onclick="return doclink('link-202', '_set_service_methods', 'link-201');">_set_service_methods</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L889"></a><tt class="py-lineno">889</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-214" class="py-name"><a title="apiclient.discovery.Resource._set_service_methods" class="py-name" href="#" onclick="return doclink('link-214', '_set_service_methods', 'link-212');">_set_service_methods</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
</div><a name="L890"></a><tt class="py-lineno">890</tt> <tt class="py-line"> </tt>
<a name="Resource._set_service_methods"></a><div id="Resource._set_service_methods-def"><a name="L891"></a><tt class="py-lineno">891</tt> <a class="py-toggle" href="#" id="Resource._set_service_methods-toggle" onclick="return toggle('Resource._set_service_methods');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.discovery.Resource-class.html#_set_service_methods">_set_service_methods</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Resource._set_service_methods-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="Resource._set_service_methods-expanded"><a name="L892"></a><tt class="py-lineno">892</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-203" class="py-name" targets="Method apiclient.discovery.Resource._add_basic_methods()=apiclient.discovery.Resource-class.html#_add_basic_methods"><a title="apiclient.discovery.Resource._add_basic_methods" class="py-name" href="#" onclick="return doclink('link-203', '_add_basic_methods', 'link-203');">_add_basic_methods</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_resourceDesc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_rootDesc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_schema</tt><tt class="py-op">)</tt> </tt>
-<a name="L893"></a><tt class="py-lineno">893</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-204" class="py-name" targets="Method apiclient.discovery.Resource._add_nested_resources()=apiclient.discovery.Resource-class.html#_add_nested_resources"><a title="apiclient.discovery.Resource._add_nested_resources" class="py-name" href="#" onclick="return doclink('link-204', '_add_nested_resources', 'link-204');">_add_nested_resources</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_resourceDesc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_rootDesc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_schema</tt><tt class="py-op">)</tt> </tt>
-<a name="L894"></a><tt class="py-lineno">894</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-205" class="py-name" targets="Method apiclient.discovery.Resource._add_next_methods()=apiclient.discovery.Resource-class.html#_add_next_methods"><a title="apiclient.discovery.Resource._add_next_methods" class="py-name" href="#" onclick="return doclink('link-205', '_add_next_methods', 'link-205');">_add_next_methods</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_resourceDesc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_schema</tt><tt class="py-op">)</tt> </tt>
+</div><div id="Resource._set_service_methods-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="Resource._set_service_methods-expanded"><a name="L892"></a><tt class="py-lineno">892</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-215" class="py-name" targets="Method apiclient.discovery.Resource._add_basic_methods()=apiclient.discovery.Resource-class.html#_add_basic_methods"><a title="apiclient.discovery.Resource._add_basic_methods" class="py-name" href="#" onclick="return doclink('link-215', '_add_basic_methods', 'link-215');">_add_basic_methods</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_resourceDesc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_rootDesc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_schema</tt><tt class="py-op">)</tt> </tt>
+<a name="L893"></a><tt class="py-lineno">893</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-216" class="py-name" targets="Method apiclient.discovery.Resource._add_nested_resources()=apiclient.discovery.Resource-class.html#_add_nested_resources"><a title="apiclient.discovery.Resource._add_nested_resources" class="py-name" href="#" onclick="return doclink('link-216', '_add_nested_resources', 'link-216');">_add_nested_resources</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_resourceDesc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_rootDesc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_schema</tt><tt class="py-op">)</tt> </tt>
+<a name="L894"></a><tt class="py-lineno">894</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-217" class="py-name" targets="Method apiclient.discovery.Resource._add_next_methods()=apiclient.discovery.Resource-class.html#_add_next_methods"><a title="apiclient.discovery.Resource._add_next_methods" class="py-name" href="#" onclick="return doclink('link-217', '_add_next_methods', 'link-217');">_add_next_methods</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_resourceDesc</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_schema</tt><tt class="py-op">)</tt> </tt>
</div><a name="L895"></a><tt class="py-lineno">895</tt> <tt class="py-line"> </tt>
<a name="Resource._add_basic_methods"></a><div id="Resource._add_basic_methods-def"><a name="L896"></a><tt class="py-lineno">896</tt> <a class="py-toggle" href="#" id="Resource._add_basic_methods-toggle" onclick="return toggle('Resource._add_basic_methods');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.discovery.Resource-class.html#_add_basic_methods">_add_basic_methods</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">resourceDesc</tt><tt class="py-op">,</tt> <tt class="py-param">rootDesc</tt><tt class="py-op">,</tt> <tt class="py-param">schema</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="Resource._add_basic_methods-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="Resource._add_basic_methods-expanded"><a name="L897"></a><tt class="py-lineno">897</tt> <tt class="py-line"> <tt class="py-comment"># Add basic methods to Resource</tt> </tt>
<a name="L898"></a><tt class="py-lineno">898</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'methods'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">resourceDesc</tt><tt class="py-op">:</tt> </tt>
<a name="L899"></a><tt class="py-lineno">899</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">methodName</tt><tt class="py-op">,</tt> <tt class="py-name">methodDesc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">resourceDesc</tt><tt class="py-op">[</tt><tt class="py-string">'methods'</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L900"></a><tt class="py-lineno">900</tt> <tt class="py-line"> <tt class="py-name">fixedMethodName</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt id="link-206" class="py-name" targets="Function apiclient.discovery.createMethod()=apiclient.discovery-module.html#createMethod"><a title="apiclient.discovery.createMethod" class="py-name" href="#" onclick="return doclink('link-206', 'createMethod', 'link-206');">createMethod</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L901"></a><tt class="py-lineno">901</tt> <tt class="py-line"> <tt class="py-name">methodName</tt><tt class="py-op">,</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">,</tt> <tt class="py-name">rootDesc</tt><tt class="py-op">,</tt> <tt id="link-207" class="py-name"><a title="apiclient.schema" class="py-name" href="#" onclick="return doclink('link-207', 'schema', 'link-38');">schema</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L902"></a><tt class="py-lineno">902</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-208" class="py-name" targets="Method apiclient.discovery.Resource._set_dynamic_attr()=apiclient.discovery.Resource-class.html#_set_dynamic_attr"><a title="apiclient.discovery.Resource._set_dynamic_attr" class="py-name" href="#" onclick="return doclink('link-208', '_set_dynamic_attr', 'link-208');">_set_dynamic_attr</a></tt><tt class="py-op">(</tt><tt class="py-name">fixedMethodName</tt><tt class="py-op">,</tt> </tt>
+<a name="L900"></a><tt class="py-lineno">900</tt> <tt class="py-line"> <tt class="py-name">fixedMethodName</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt id="link-218" class="py-name" targets="Function apiclient.discovery.createMethod()=apiclient.discovery-module.html#createMethod"><a title="apiclient.discovery.createMethod" class="py-name" href="#" onclick="return doclink('link-218', 'createMethod', 'link-218');">createMethod</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L901"></a><tt class="py-lineno">901</tt> <tt class="py-line"> <tt class="py-name">methodName</tt><tt class="py-op">,</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">,</tt> <tt class="py-name">rootDesc</tt><tt class="py-op">,</tt> <tt id="link-219" class="py-name"><a title="apiclient.schema" class="py-name" href="#" onclick="return doclink('link-219', 'schema', 'link-38');">schema</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L902"></a><tt class="py-lineno">902</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-220" class="py-name" targets="Method apiclient.discovery.Resource._set_dynamic_attr()=apiclient.discovery.Resource-class.html#_set_dynamic_attr"><a title="apiclient.discovery.Resource._set_dynamic_attr" class="py-name" href="#" onclick="return doclink('link-220', '_set_dynamic_attr', 'link-220');">_set_dynamic_attr</a></tt><tt class="py-op">(</tt><tt class="py-name">fixedMethodName</tt><tt class="py-op">,</tt> </tt>
<a name="L903"></a><tt class="py-lineno">903</tt> <tt class="py-line"> <tt class="py-name">method</tt><tt class="py-op">.</tt><tt class="py-name">__get__</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L904"></a><tt class="py-lineno">904</tt> <tt class="py-line"> <tt class="py-comment"># Add in _media methods. The functionality of the attached method will</tt> </tt>
<a name="L905"></a><tt class="py-lineno">905</tt> <tt class="py-line"> <tt class="py-comment"># change when it sees that the method name ends in _media.</tt> </tt>
-<a name="L906"></a><tt class="py-lineno">906</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">.</tt><tt id="link-209" class="py-name"><a title="apiclient.schema.Schemas.get
+<a name="L906"></a><tt class="py-lineno">906</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">.</tt><tt id="link-221" class="py-name"><a title="apiclient.schema.Schemas.get
oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-209', 'get', 'link-84');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'supportsMediaDownload'</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L907"></a><tt class="py-lineno">907</tt> <tt class="py-line"> <tt class="py-name">fixedMethodName</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt id="link-210" class="py-name"><a title="apiclient.discovery.createMethod" class="py-name" href="#" onclick="return doclink('link-210', 'createMethod', 'link-206');">createMethod</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L908"></a><tt class="py-lineno">908</tt> <tt class="py-line"> <tt class="py-name">methodName</tt> <tt class="py-op">+</tt> <tt class="py-string">'_media'</tt><tt class="py-op">,</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">,</tt> <tt class="py-name">rootDesc</tt><tt class="py-op">,</tt> <tt id="link-211" class="py-name"><a title="apiclient.schema" class="py-name" href="#" onclick="return doclink('link-211', 'schema', 'link-38');">schema</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L909"></a><tt class="py-lineno">909</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-212" class="py-name"><a title="apiclient.discovery.Resource._set_dynamic_attr" class="py-name" href="#" onclick="return doclink('link-212', '_set_dynamic_attr', 'link-208');">_set_dynamic_attr</a></tt><tt class="py-op">(</tt><tt class="py-name">fixedMethodName</tt><tt class="py-op">,</tt> </tt>
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-221', 'get', 'link-84');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'supportsMediaDownload'</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L907"></a><tt class="py-lineno">907</tt> <tt class="py-line"> <tt class="py-name">fixedMethodName</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt id="link-222" class="py-name"><a title="apiclient.discovery.createMethod" class="py-name" href="#" onclick="return doclink('link-222', 'createMethod', 'link-218');">createMethod</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L908"></a><tt class="py-lineno">908</tt> <tt class="py-line"> <tt class="py-name">methodName</tt> <tt class="py-op">+</tt> <tt class="py-string">'_media'</tt><tt class="py-op">,</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">,</tt> <tt class="py-name">rootDesc</tt><tt class="py-op">,</tt> <tt id="link-223" class="py-name"><a title="apiclient.schema" class="py-name" href="#" onclick="return doclink('link-223', 'schema', 'link-38');">schema</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L909"></a><tt class="py-lineno">909</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-224" class="py-name"><a title="apiclient.discovery.Resource._set_dynamic_attr" class="py-name" href="#" onclick="return doclink('link-224', '_set_dynamic_attr', 'link-220');">_set_dynamic_attr</a></tt><tt class="py-op">(</tt><tt class="py-name">fixedMethodName</tt><tt class="py-op">,</tt> </tt>
<a name="L910"></a><tt class="py-lineno">910</tt> <tt class="py-line"> <tt class="py-name">method</tt><tt class="py-op">.</tt><tt class="py-name">__get__</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
</div><a name="L911"></a><tt class="py-lineno">911</tt> <tt class="py-line"> </tt>
<a name="Resource._add_nested_resources"></a><div id="Resource._add_nested_resources-def"><a name="L912"></a><tt class="py-lineno">912</tt> <a class="py-toggle" href="#" id="Resource._add_nested_resources-toggle" onclick="return toggle('Resource._add_nested_resources');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.discovery.Resource-class.html#_add_nested_resources">_add_nested_resources</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">resourceDesc</tt><tt class="py-op">,</tt> <tt class="py-param">rootDesc</tt><tt class="py-op">,</tt> <tt class="py-param">schema</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
@@ -1129,15 +1129,15 @@
<a name="L921"></a><tt class="py-lineno">921</tt> <tt class="py-line"><tt class="py-docstring"> methodDesc: object, fragment of deserialized discovery document that</tt> </tt>
<a name="L922"></a><tt class="py-lineno">922</tt> <tt class="py-line"><tt class="py-docstring"> describes the method.</tt> </tt>
<a name="L923"></a><tt class="py-lineno">923</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L924"></a><tt class="py-lineno">924</tt> <tt class="py-line"> <tt class="py-name">methodName</tt> <tt class="py-op">=</tt> <tt id="link-213" class="py-name"><a title="apiclient.discovery.fix_method_name" class="py-name" href="#" onclick="return doclink('link-213', 'fix_method_name', 'link-133');">fix_method_name</a></tt><tt class="py-op">(</tt><tt class="py-name">methodName</tt><tt class="py-op">)</tt> </tt>
+<a name="L924"></a><tt class="py-lineno">924</tt> <tt class="py-line"> <tt class="py-name">methodName</tt> <tt class="py-op">=</tt> <tt id="link-225" class="py-name"><a title="apiclient.discovery.fix_method_name" class="py-name" href="#" onclick="return doclink('link-225', 'fix_method_name', 'link-137');">fix_method_name</a></tt><tt class="py-op">(</tt><tt class="py-name">methodName</tt><tt class="py-op">)</tt> </tt>
<a name="L925"></a><tt class="py-lineno">925</tt> <tt class="py-line"> </tt>
<a name="L926"></a><tt class="py-lineno">926</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">methodResource</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L927"></a><tt class="py-lineno">927</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-214" class="py-name"><a title="apiclient.discovery.Resource" class="py-name" href="#" onclick="return doclink('link-214', 'Resource', 'link-87');">Resource</a></tt><tt class="py-op">(</tt><tt id="link-215" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-215', 'http', 'link-20');">http</a></tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_http</tt><tt class="py-op">,</tt> <tt class="py-name">baseUrl</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_baseUrl</tt><tt class="py-op">,</tt> </tt>
-<a name="L928"></a><tt class="py-lineno">928</tt> <tt class="py-line"> <tt id="link-216" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-216', 'model', 'link-29');">model</a></tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_model</tt><tt class="py-op">,</tt> <tt class="py-name">developerKey</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_developerKey</tt><tt class="py-op">,</tt> </tt>
+<a name="L927"></a><tt class="py-lineno">927</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-226" class="py-name"><a title="apiclient.discovery.Resource" class="py-name" href="#" onclick="return doclink('link-226', 'Resource', 'link-87');">Resource</a></tt><tt class="py-op">(</tt><tt id="link-227" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-227', 'http', 'link-20');">http</a></tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_http</tt><tt class="py-op">,</tt> <tt class="py-name">baseUrl</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_baseUrl</tt><tt class="py-op">,</tt> </tt>
+<a name="L928"></a><tt class="py-lineno">928</tt> <tt class="py-line"> <tt id="link-228" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-228', 'model', 'link-29');">model</a></tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_model</tt><tt class="py-op">,</tt> <tt class="py-name">developerKey</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_developerKey</tt><tt class="py-op">,</tt> </tt>
<a name="L929"></a><tt class="py-lineno">929</tt> <tt class="py-line"> <tt class="py-name">requestBuilder</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requestBuilder</tt><tt class="py-op">,</tt> </tt>
<a name="L930"></a><tt class="py-lineno">930</tt> <tt class="py-line"> <tt class="py-name">resourceDesc</tt><tt class="py-op">=</tt><tt class="py-name">methodDesc</tt><tt class="py-op">,</tt> <tt class="py-name">rootDesc</tt><tt class="py-op">=</tt><tt class="py-name">rootDesc</tt><tt class="py-op">,</tt> </tt>
-<a name="L931"></a><tt class="py-lineno">931</tt> <tt class="py-line"> <tt id="link-217" class="py-name"><a title="apiclient.schema" class="py-name" href="#" onclick="return doclink('link-217', 'schema', 'link-38');">schema</a></tt><tt class="py-op">=</tt><tt id="link-218" class="py-name"><a title="apiclient.schema" class="py-name" href="#" onclick="return doclink('link-218', 'schema', 'link-38');">schema</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L931"></a><tt class="py-lineno">931</tt> <tt class="py-line"> <tt id="link-229" class="py-name"><a title="apiclient.schema" class="py-name" href="#" onclick="return doclink('link-229', 'schema', 'link-38');">schema</a></tt><tt class="py-op">=</tt><tt id="link-230" class="py-name"><a title="apiclient.schema" class="py-name" href="#" onclick="return doclink('link-230', 'schema', 'link-38');">schema</a></tt><tt class="py-op">)</tt> </tt>
</div><a name="L932"></a><tt class="py-lineno">932</tt> <tt class="py-line"> </tt>
<a name="L933"></a><tt class="py-lineno">933</tt> <tt class="py-line"> <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">methodResource</tt><tt class="py-op">,</tt> <tt class="py-string">'__doc__'</tt><tt class="py-op">,</tt> <tt class="py-string">'A collection resource.'</tt><tt class="py-op">)</tt> </tt>
<a name="L934"></a><tt class="py-lineno">934</tt> <tt class="py-line"> <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">methodResource</tt><tt class="py-op">,</tt> <tt class="py-string">'__is_resource__'</tt><tt class="py-op">,</tt> <tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
@@ -1146,7 +1146,7 @@
</div><a name="L937"></a><tt class="py-lineno">937</tt> <tt class="py-line"> </tt>
<a name="L938"></a><tt class="py-lineno">938</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">methodName</tt><tt class="py-op">,</tt> <tt class="py-name">methodDesc</tt> <tt class="py-keyword">in</tt> <tt class="py-name">resourceDesc</tt><tt class="py-op">[</tt><tt class="py-string">'resources'</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L939"></a><tt class="py-lineno">939</tt> <tt class="py-line"> <tt class="py-name">fixedMethodName</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt class="py-name">createResourceMethod</tt><tt class="py-op">(</tt><tt class="py-name">methodName</tt><tt class="py-op">,</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">)</tt> </tt>
-<a name="L940"></a><tt class="py-lineno">940</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-219" class="py-name"><a title="apiclient.discovery.Resource._set_dynamic_attr" class="py-name" href="#" onclick="return doclink('link-219', '_set_dynamic_attr', 'link-208');">_set_dynamic_attr</a></tt><tt class="py-op">(</tt><tt class="py-name">fixedMethodName</tt><tt class="py-op">,</tt> </tt>
+<a name="L940"></a><tt class="py-lineno">940</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-231" class="py-name"><a title="apiclient.discovery.Resource._set_dynamic_attr" class="py-name" href="#" onclick="return doclink('link-231', '_set_dynamic_attr', 'link-220');">_set_dynamic_attr</a></tt><tt class="py-op">(</tt><tt class="py-name">fixedMethodName</tt><tt class="py-op">,</tt> </tt>
<a name="L941"></a><tt class="py-lineno">941</tt> <tt class="py-line"> <tt class="py-name">method</tt><tt class="py-op">.</tt><tt class="py-name">__get__</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
</div><a name="L942"></a><tt class="py-lineno">942</tt> <tt class="py-line"> </tt>
<a name="Resource._add_next_methods"></a><div id="Resource._add_next_methods-def"><a name="L943"></a><tt class="py-lineno">943</tt> <a class="py-toggle" href="#" id="Resource._add_next_methods-toggle" onclick="return toggle('Resource._add_next_methods');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.discovery.Resource-class.html#_add_next_methods">_add_next_methods</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">resourceDesc</tt><tt class="py-op">,</tt> <tt class="py-param">schema</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
@@ -1158,19 +1158,19 @@
<a name="L949"></a><tt class="py-lineno">949</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'response'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">:</tt> </tt>
<a name="L950"></a><tt class="py-lineno">950</tt> <tt class="py-line"> <tt class="py-name">responseSchema</tt> <tt class="py-op">=</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">[</tt><tt class="py-string">'response'</tt><tt class="py-op">]</tt> </tt>
<a name="L951"></a><tt class="py-lineno">951</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'$ref'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">responseSchema</tt><tt class="py-op">:</tt> </tt>
-<a name="L952"></a><tt class="py-lineno">952</tt> <tt class="py-line"> <tt class="py-name">responseSchema</tt> <tt class="py-op">=</tt> <tt id="link-220" class="py-name"><a title="apiclient.schema" class="py-name" href="#" onclick="return doclink('link-220', 'schema', 'link-38');">schema</a></tt><tt class="py-op">.</tt><tt id="link-221" class="py-name"><a title="apiclient.schema.Schemas.get
+<a name="L952"></a><tt class="py-lineno">952</tt> <tt class="py-line"> <tt class="py-name">responseSchema</tt> <tt class="py-op">=</tt> <tt id="link-232" class="py-name"><a title="apiclient.schema" class="py-name" href="#" onclick="return doclink('link-232', 'schema', 'link-38');">schema</a></tt><tt class="py-op">.</tt><tt id="link-233" class="py-name"><a title="apiclient.schema.Schemas.get
oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-221', 'get', 'link-84');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">responseSchema</tt><tt class="py-op">[</tt><tt class="py-string">'$ref'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L953"></a><tt class="py-lineno">953</tt> <tt class="py-line"> <tt class="py-name">hasNextPageToken</tt> <tt class="py-op">=</tt> <tt class="py-string">'nextPageToken'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">responseSchema</tt><tt class="py-op">.</tt><tt id="link-222" class="py-name"><a title="apiclient.schema.Schemas.get
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-233', 'get', 'link-84');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">responseSchema</tt><tt class="py-op">[</tt><tt class="py-string">'$ref'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L953"></a><tt class="py-lineno">953</tt> <tt class="py-line"> <tt class="py-name">hasNextPageToken</tt> <tt class="py-op">=</tt> <tt class="py-string">'nextPageToken'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">responseSchema</tt><tt class="py-op">.</tt><tt id="link-234" class="py-name"><a title="apiclient.schema.Schemas.get
oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-222', 'get', 'link-84');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'properties'</tt><tt class="py-op">,</tt> </tt>
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-234', 'get', 'link-84');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'properties'</tt><tt class="py-op">,</tt> </tt>
<a name="L954"></a><tt class="py-lineno">954</tt> <tt class="py-line"> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
-<a name="L955"></a><tt class="py-lineno">955</tt> <tt class="py-line"> <tt class="py-name">hasPageToken</tt> <tt class="py-op">=</tt> <tt class="py-string">'pageToken'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">.</tt><tt id="link-223" class="py-name"><a title="apiclient.schema.Schemas.get
+<a name="L955"></a><tt class="py-lineno">955</tt> <tt class="py-line"> <tt class="py-name">hasPageToken</tt> <tt class="py-op">=</tt> <tt class="py-string">'pageToken'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">methodDesc</tt><tt class="py-op">.</tt><tt id="link-235" class="py-name"><a title="apiclient.schema.Schemas.get
oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-223', 'get', 'link-84');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'parameters'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-235', 'get', 'link-84');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'parameters'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
<a name="L956"></a><tt class="py-lineno">956</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">hasNextPageToken</tt> <tt class="py-keyword">and</tt> <tt class="py-name">hasPageToken</tt><tt class="py-op">:</tt> </tt>
-<a name="L957"></a><tt class="py-lineno">957</tt> <tt class="py-line"> <tt class="py-name">fixedMethodName</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt id="link-224" class="py-name" targets="Function apiclient.discovery.createNextMethod()=apiclient.discovery-module.html#createNextMethod"><a title="apiclient.discovery.createNextMethod" class="py-name" href="#" onclick="return doclink('link-224', 'createNextMethod', 'link-224');">createNextMethod</a></tt><tt class="py-op">(</tt><tt class="py-name">methodName</tt> <tt class="py-op">+</tt> <tt class="py-string">'_next'</tt><tt class="py-op">)</tt> </tt>
-<a name="L958"></a><tt class="py-lineno">958</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-225" class="py-name"><a title="apiclient.discovery.Resource._set_dynamic_attr" class="py-name" href="#" onclick="return doclink('link-225', '_set_dynamic_attr', 'link-208');">_set_dynamic_attr</a></tt><tt class="py-op">(</tt><tt class="py-name">fixedMethodName</tt><tt class="py-op">,</tt> </tt>
+<a name="L957"></a><tt class="py-lineno">957</tt> <tt class="py-line"> <tt class="py-name">fixedMethodName</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt id="link-236" class="py-name" targets="Function apiclient.discovery.createNextMethod()=apiclient.discovery-module.html#createNextMethod"><a title="apiclient.discovery.createNextMethod" class="py-name" href="#" onclick="return doclink('link-236', 'createNextMethod', 'link-236');">createNextMethod</a></tt><tt class="py-op">(</tt><tt class="py-name">methodName</tt> <tt class="py-op">+</tt> <tt class="py-string">'_next'</tt><tt class="py-op">)</tt> </tt>
+<a name="L958"></a><tt class="py-lineno">958</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-237" class="py-name"><a title="apiclient.discovery.Resource._set_dynamic_attr" class="py-name" href="#" onclick="return doclink('link-237', '_set_dynamic_attr', 'link-220');">_set_dynamic_attr</a></tt><tt class="py-op">(</tt><tt class="py-name">fixedMethodName</tt><tt class="py-op">,</tt> </tt>
<a name="L959"></a><tt class="py-lineno">959</tt> <tt class="py-line"> <tt class="py-name">method</tt><tt class="py-op">.</tt><tt class="py-name">__get__</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
</div></div><a name="L960"></a><tt class="py-lineno">960</tt> <tt class="py-line"> </tt><script type="text/javascript">
<!--
@@ -1202,7 +1202,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:26 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:47 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.discovery.Resource-class.html b/docs/epy/apiclient.discovery.Resource-class.html
index f71899c..5354d10 100644
--- a/docs/epy/apiclient.discovery.Resource-class.html
+++ b/docs/epy/apiclient.discovery.Resource-class.html
@@ -55,10 +55,13 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class Resource</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.discovery-pysrc.html#Resource">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_resource" name="class_hierarchy_for_resource">
-<area shape="rect" id="node1" href="apiclient.discovery.Resource-class.html" title="Resource" alt="" coords="5,6,83,34"/>
+<center> <map id="uml_class_diagram_for_apiclien_3" name="uml_class_diagram_for_apiclien_3">
+<area shape="rect" id="node2" href="apiclient.discovery.Resource-class.html#__init__" title="Build a Resource from the API description." alt="" coords="17,39,607,57"/>
+<area shape="rect" id="node2" href="apiclient.discovery.Resource-class.html#__getstate__" title="Trim the state down to something that can be pickled." alt="" coords="17,57,607,76"/>
+<area shape="rect" id="node2" href="apiclient.discovery.Resource-class.html#__setstate__" title="Reconstitute the state of the object from being pickled." alt="" coords="17,76,607,95"/>
+<area shape="rect" id="node1" href="apiclient.discovery.Resource-class.html" title="A class for interacting with a resource." alt="" coords="5,6,619,101"/>
</map>
- <img src="class_hierarchy_for_resource.gif" alt='' usemap="#class_hierarchy_for_resource" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_apiclien_3.gif" alt='' usemap="#uml_class_diagram_for_apiclien_3" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -449,7 +452,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:23 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:43 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.discovery.ResourceMethodParameters-class.html b/docs/epy/apiclient.discovery.ResourceMethodParameters-class.html
index 1c72c2c..5814858 100644
--- a/docs/epy/apiclient.discovery.ResourceMethodParameters-class.html
+++ b/docs/epy/apiclient.discovery.ResourceMethodParameters-class.html
@@ -55,10 +55,12 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class ResourceMethodParameters</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.discovery-pysrc.html#ResourceMethodParameters">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_resourceme" name="class_hierarchy_for_resourceme">
-<area shape="rect" id="node1" href="apiclient.discovery.ResourceMethodParameters-class.html" title="ResourceMethodParameters" alt="" coords="5,6,192,34"/>
+<center> <map id="uml_class_diagram_for_apiclien_4" name="uml_class_diagram_for_apiclien_4">
+<area shape="rect" id="node3" href="apiclient.discovery.ResourceMethodParameters-class.html#__init__" title="Constructor for ResourceMethodParameters." alt="" coords="17,39,229,57"/>
+<area shape="rect" id="node3" href="apiclient.discovery.ResourceMethodParameters-class.html#set_parameters" title="Populates maps and lists based on method description." alt="" coords="17,57,229,76"/>
+<area shape="rect" id="node1" href="apiclient.discovery.ResourceMethodParameters-class.html" title="Represents the parameters associated with a method." alt="" coords="5,6,240,82"/>
</map>
- <img src="class_hierarchy_for_resourceme.gif" alt='' usemap="#class_hierarchy_for_resourceme" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_apiclien_4.gif" alt='' usemap="#uml_class_diagram_for_apiclien_4" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -292,7 +294,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:23 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:43 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.errors-module.html b/docs/epy/apiclient.errors-module.html
index 6fdfd73..bba39c5 100644
--- a/docs/epy/apiclient.errors-module.html
+++ b/docs/epy/apiclient.errors-module.html
@@ -166,6 +166,14 @@
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type"> </span>
</td><td class="summary">
+ <a href="apiclient.errors.InvalidNotificationError-class.html" class="summary-name">InvalidNotificationError</a><br />
+ The channel Notification is invalid.
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
<a href="apiclient.errors.BatchError-class.html" class="summary-name">BatchError</a><br />
Error occured during batch operations.
</td>
@@ -210,7 +218,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:23 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:42 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.errors-pysrc.html b/docs/epy/apiclient.errors-pysrc.html
index 070ab2c..5f1598b 100644
--- a/docs/epy/apiclient.errors-pysrc.html
+++ b/docs/epy/apiclient.errors-pysrc.html
@@ -158,30 +158,35 @@
</div><div id="InvalidChunkSizeError-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="InvalidChunkSizeError-expanded"><a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"> <tt class="py-docstring">"""The given chunksize is not valid."""</tt> </tt>
<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
</div><a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"> </tt>
-<a name="BatchError"></a><div id="BatchError-def"><a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"> </tt>
-<a name="L106"></a><tt class="py-lineno">106</tt> <a class="py-toggle" href="#" id="BatchError-toggle" onclick="return toggle('BatchError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.errors.BatchError-class.html">BatchError</a><tt class="py-op">(</tt><tt class="py-base-class">HttpError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="BatchError-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="BatchError-expanded"><a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"> <tt class="py-docstring">"""Error occured during batch operations."""</tt> </tt>
-<a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"> </tt>
-<a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-9" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-9', 'positional', 'link-4');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
-<a name="BatchError.__init__"></a><div id="BatchError.__init__-def"><a name="L110"></a><tt class="py-lineno">110</tt> <a class="py-toggle" href="#" id="BatchError.__init__-toggle" onclick="return toggle('BatchError.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.errors.BatchError-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">reason</tt><tt class="py-op">,</tt> <tt class="py-param">resp</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">content</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="BatchError.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="BatchError.__init__-expanded"><a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt> <tt class="py-op">=</tt> <tt class="py-name">resp</tt> </tt>
-<a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">content</tt> </tt>
-<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">reason</tt> <tt class="py-op">=</tt> <tt class="py-name">reason</tt> </tt>
-</div><a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"> </tt>
-<a name="BatchError.__repr__"></a><div id="BatchError.__repr__-def"><a name="L115"></a><tt class="py-lineno">115</tt> <a class="py-toggle" href="#" id="BatchError.__repr__-toggle" onclick="return toggle('BatchError.__repr__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.errors.BatchError-class.html#__repr__">__repr__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="BatchError.__repr__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="BatchError.__repr__-expanded"><a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">'<BatchError %s "%s">'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">reason</tt><tt class="py-op">)</tt> </tt>
+<a name="InvalidNotificationError"></a><div id="InvalidNotificationError-def"><a name="L105"></a><tt class="py-lineno">105</tt> <a class="py-toggle" href="#" id="InvalidNotificationError-toggle" onclick="return toggle('InvalidNotificationError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.errors.InvalidNotificationError-class.html">InvalidNotificationError</a><tt class="py-op">(</tt><tt class="py-base-class">Error</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="InvalidNotificationError-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="InvalidNotificationError-expanded"><a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"> <tt class="py-docstring">"""The channel Notification is invalid."""</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"> </tt>
+<a name="BatchError"></a><div id="BatchError-def"><a name="L109"></a><tt class="py-lineno">109</tt> <a class="py-toggle" href="#" id="BatchError-toggle" onclick="return toggle('BatchError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.errors.BatchError-class.html">BatchError</a><tt class="py-op">(</tt><tt class="py-base-class">HttpError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BatchError-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="BatchError-expanded"><a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"> <tt class="py-docstring">"""Error occured during batch operations."""</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-9" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-9', 'positional', 'link-4');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="BatchError.__init__"></a><div id="BatchError.__init__-def"><a name="L113"></a><tt class="py-lineno">113</tt> <a class="py-toggle" href="#" id="BatchError.__init__-toggle" onclick="return toggle('BatchError.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.errors.BatchError-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">reason</tt><tt class="py-op">,</tt> <tt class="py-param">resp</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">content</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BatchError.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="BatchError.__init__-expanded"><a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt> <tt class="py-op">=</tt> <tt class="py-name">resp</tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">content</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">reason</tt> <tt class="py-op">=</tt> <tt class="py-name">reason</tt> </tt>
</div><a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"> </tt>
-<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"> <tt class="py-name">__str__</tt> <tt class="py-op">=</tt> <tt id="link-10" class="py-name"><a title="apiclient.errors.BatchError.__repr__
+<a name="BatchError.__repr__"></a><div id="BatchError.__repr__-def"><a name="L118"></a><tt class="py-lineno">118</tt> <a class="py-toggle" href="#" id="BatchError.__repr__-toggle" onclick="return toggle('BatchError.__repr__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.errors.BatchError-class.html#__repr__">__repr__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BatchError.__repr__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="BatchError.__repr__-expanded"><a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">'<BatchError %s "%s">'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">reason</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"> <tt class="py-name">__str__</tt> <tt class="py-op">=</tt> <tt id="link-10" class="py-name"><a title="apiclient.errors.BatchError.__repr__
apiclient.errors.HttpError.__repr__" class="py-name" href="#" onclick="return doclink('link-10', '__repr__', 'link-8');">__repr__</a></tt> </tt>
-</div><a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"> </tt>
-<a name="UnexpectedMethodError"></a><div id="UnexpectedMethodError-def"><a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"> </tt>
-<a name="L121"></a><tt class="py-lineno">121</tt> <a class="py-toggle" href="#" id="UnexpectedMethodError-toggle" onclick="return toggle('UnexpectedMethodError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.errors.UnexpectedMethodError-class.html">UnexpectedMethodError</a><tt class="py-op">(</tt><tt class="py-base-class">Error</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="UnexpectedMethodError-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="UnexpectedMethodError-expanded"><a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"> <tt class="py-docstring">"""Exception raised by RequestMockBuilder on unexpected calls."""</tt> </tt>
-<a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"> </tt>
-<a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-11" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-11', 'positional', 'link-4');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
-<a name="UnexpectedMethodError.__init__"></a><div id="UnexpectedMethodError.__init__-def"><a name="L125"></a><tt class="py-lineno">125</tt> <a class="py-toggle" href="#" id="UnexpectedMethodError.__init__-toggle" onclick="return toggle('UnexpectedMethodError.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.errors.UnexpectedMethodError-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">methodId</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="UnexpectedMethodError.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="UnexpectedMethodError.__init__-expanded"><a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"> <tt class="py-docstring">"""Constructor for an UnexpectedMethodError."""</tt> </tt>
-<a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-12" class="py-name" targets="Class apiclient.errors.UnexpectedMethodError=apiclient.errors.UnexpectedMethodError-class.html"><a title="apiclient.errors.UnexpectedMethodError" class="py-name" href="#" onclick="return doclink('link-12', 'UnexpectedMethodError', 'link-12');">UnexpectedMethodError</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name" targets="Method apiclient.discovery.Resource.__init__()=apiclient.discovery.Resource-class.html#__init__,Method apiclient.discovery.ResourceMethodParameters.__init__()=apiclient.discovery.ResourceMethodParameters-class.html#__init__,Method apiclient.errors.BatchError.__init__()=apiclient.errors.BatchError-class.html#__init__,Method apiclient.errors.HttpError.__init__()=apiclient.errors.HttpError-class.html#__init__,Method apiclient.errors.UnexpectedBodyError.__init__()=apiclient.errors.UnexpectedBodyError-class.html#__init__,Method apiclient.errors.UnexpectedMethodError.__init__()=apiclient.errors.UnexpectedMethodError-class.html#__init__,Method apiclient.http.BatchHttpRequest.__init__()=apiclient.http.BatchHttpRequest-class.html#__init__,Method apiclient.http.HttpMock.__init__()=apiclient.http.HttpMock-class.html#__init__,Method apiclient.http.HttpMockSequence.__init__()=apiclient.http.HttpMockSequence-class.html#__init__,Method apiclient.http.HttpRequest.__init__()=apiclient.http.HttpRequest-class.html#__init__,Method apiclient.http.HttpRequestMock.__init__()=apiclient.http.HttpRequestMock-class.html#__init__,Method apiclient.http.MediaDownloadProgress.__init__()=apiclient.http.MediaDownloadProgress-class.html#__init__,Method apiclient.http.MediaFileUpload.__init__()=apiclient.http.MediaFileUpload-class.html#__init__,Method apiclient.http.MediaInMemoryUpload.__init__()=apiclient.http.MediaInMemoryUpload-class.html#__init__,Method apiclient.http.MediaIoBaseDownload.__init__()=apiclient.http.MediaIoBaseDownload-class.html#__init__,Method apiclient.http.MediaIoBaseUpload.__init__()=apiclient.http.MediaIoBaseUpload-class.html#__init__,Method apiclient.http.MediaUploadProgress.__init__()=apiclient.http.MediaUploadProgress-class.html#__init__,Method apiclient.http.RequestMockBuilder.__init__()=apiclient.http.RequestMockBuilder-class.html#__init__,Method apiclient.http._StreamSlice.__init__()=apiclient.http._StreamSlice-class.html#__init__,Method apiclient.model.JsonModel.__init__()=apiclient.model.JsonModel-class.html#__init__,Method apiclient.model.ProtocolBufferModel.__init__()=apiclient.model.ProtocolBufferModel-class.html#__init__,Method apiclient.push.Channel.__init__()=apiclient.push.Channel-class.html#__init__,Method apiclient.push.Headers.__init__()=apiclient.push.Headers-class.html#__init__,Method apiclient.push.Subscription.__init__()=apiclient.push.Subscription-class.html#__init__,Method apiclient.push.WebhookChannel.__init__()=apiclient.push.WebhookChannel-class.html#__init__,Method apiclient.schema.Schemas.__init__()=apiclient.schema.Schemas-class.html#__init__,Method apiclient.schema._SchemaToStruct.__init__()=apiclient.schema._SchemaToStruct-class.html#__init__,Method oauth2client.appengine.AppAssertionCredentials.__init__()=oauth2client.appengine.AppAssertionCredentials-class.html#__init__,Method oauth2client.appengine.OAuth2Decorator.__init__()=oauth2client.appengine.OAuth2Decorator-class.html#__init__,Method oauth2client.appengine.OAuth2DecoratorFromClientSecrets.__init__()=oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html#__init__,Method oauth2client.appengine.StorageByKeyName.__init__()=oauth2client.appengine.StorageByKeyName-class.html#__init__,Method oauth2client.client.AccessTokenCredentials.__init__()=oauth2client.client.AccessTokenCredentials-class.html#__init__,Method oauth2client.client.AssertionCredentials.__init__()=oauth2client.client.AssertionCredentials-class.html#__init__,Method oauth2client.client.MemoryCache.__init__()=oauth2client.client.MemoryCache-class.html#__init__,Method oauth2client.client.OAuth2Credentials.__init__()=oauth2client.client.OAuth2Credentials-class.html#__init__,Method oauth2client.client.OAuth2WebServerFlow.__init__()=oauth2client.client.OAuth2WebServerFlow-class.html#__init__,Method oauth2client.client.SignedJwtAssertionCredentials.__init__()=oauth2client.client.SignedJwtAssertionCredentials-class.html#__init__,Method oauth2client.django_orm.CredentialsField.__init__()=oauth2client.django_orm.CredentialsField-class.html#__init__,Method oauth2client.django_orm.FlowField.__init__()=oauth2client.django_orm.FlowField-class.html#__init__,Method oauth2client.django_orm.Storage.__init__()=oauth2client.django_orm.Storage-class.html#__init__,Method oauth2client.file.Storage.__init__()=oauth2client.file.Storage-class.html#__init__,Method oauth2client.gce.AppAssertionCredentials.__init__()=oauth2client.gce.AppAssertionCredentials-class.html#__init__,Method oauth2client.keyring_storage.Storage.__init__()=oauth2client.keyring_storage.Storage-class.html#__init__,Method oauth2client.locked_file.LockedFile.__init__()=oauth2client.locked_file.LockedFile-class.html#__init__,Method oauth2client.locked_file._Opener.__init__()=oauth2client.locked_file._Opener-class.html#__init__,Method oauth2client.multistore_file._MultiStore._Storage.__init__()=oauth2client.multistore_file._MultiStore._Storage-class.html#__init__,Method oauth2client.multistore_file._MultiStore.__init__()=oauth2client.multistore_file._MultiStore-class.html#__init__"><a title="apiclient.discovery.Resource.__init__
+</div><a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"> </tt>
+<a name="UnexpectedMethodError"></a><div id="UnexpectedMethodError-def"><a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt> <a class="py-toggle" href="#" id="UnexpectedMethodError-toggle" onclick="return toggle('UnexpectedMethodError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.errors.UnexpectedMethodError-class.html">UnexpectedMethodError</a><tt class="py-op">(</tt><tt class="py-base-class">Error</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="UnexpectedMethodError-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="UnexpectedMethodError-expanded"><a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"> <tt class="py-docstring">"""Exception raised by RequestMockBuilder on unexpected calls."""</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-11" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-11', 'positional', 'link-4');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="UnexpectedMethodError.__init__"></a><div id="UnexpectedMethodError.__init__-def"><a name="L128"></a><tt class="py-lineno">128</tt> <a class="py-toggle" href="#" id="UnexpectedMethodError.__init__-toggle" onclick="return toggle('UnexpectedMethodError.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.errors.UnexpectedMethodError-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">methodId</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="UnexpectedMethodError.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="UnexpectedMethodError.__init__-expanded"><a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"> <tt class="py-docstring">"""Constructor for an UnexpectedMethodError."""</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-12" class="py-name" targets="Class apiclient.errors.UnexpectedMethodError=apiclient.errors.UnexpectedMethodError-class.html"><a title="apiclient.errors.UnexpectedMethodError" class="py-name" href="#" onclick="return doclink('link-12', 'UnexpectedMethodError', 'link-12');">UnexpectedMethodError</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name" targets="Method apiclient.channel.Channel.__init__()=apiclient.channel.Channel-class.html#__init__,Method apiclient.channel.Notification.__init__()=apiclient.channel.Notification-class.html#__init__,Method apiclient.discovery.Resource.__init__()=apiclient.discovery.Resource-class.html#__init__,Method apiclient.discovery.ResourceMethodParameters.__init__()=apiclient.discovery.ResourceMethodParameters-class.html#__init__,Method apiclient.errors.BatchError.__init__()=apiclient.errors.BatchError-class.html#__init__,Method apiclient.errors.HttpError.__init__()=apiclient.errors.HttpError-class.html#__init__,Method apiclient.errors.UnexpectedBodyError.__init__()=apiclient.errors.UnexpectedBodyError-class.html#__init__,Method apiclient.errors.UnexpectedMethodError.__init__()=apiclient.errors.UnexpectedMethodError-class.html#__init__,Method apiclient.http.BatchHttpRequest.__init__()=apiclient.http.BatchHttpRequest-class.html#__init__,Method apiclient.http.HttpMock.__init__()=apiclient.http.HttpMock-class.html#__init__,Method apiclient.http.HttpMockSequence.__init__()=apiclient.http.HttpMockSequence-class.html#__init__,Method apiclient.http.HttpRequest.__init__()=apiclient.http.HttpRequest-class.html#__init__,Method apiclient.http.HttpRequestMock.__init__()=apiclient.http.HttpRequestMock-class.html#__init__,Method apiclient.http.MediaDownloadProgress.__init__()=apiclient.http.MediaDownloadProgress-class.html#__init__,Method apiclient.http.MediaFileUpload.__init__()=apiclient.http.MediaFileUpload-class.html#__init__,Method apiclient.http.MediaInMemoryUpload.__init__()=apiclient.http.MediaInMemoryUpload-class.html#__init__,Method apiclient.http.MediaIoBaseDownload.__init__()=apiclient.http.MediaIoBaseDownload-class.html#__init__,Method apiclient.http.MediaIoBaseUpload.__init__()=apiclient.http.MediaIoBaseUpload-class.html#__init__,Method apiclient.http.MediaUploadProgress.__init__()=apiclient.http.MediaUploadProgress-class.html#__init__,Method apiclient.http.RequestMockBuilder.__init__()=apiclient.http.RequestMockBuilder-class.html#__init__,Method apiclient.http._StreamSlice.__init__()=apiclient.http._StreamSlice-class.html#__init__,Method apiclient.model.JsonModel.__init__()=apiclient.model.JsonModel-class.html#__init__,Method apiclient.model.ProtocolBufferModel.__init__()=apiclient.model.ProtocolBufferModel-class.html#__init__,Method apiclient.schema.Schemas.__init__()=apiclient.schema.Schemas-class.html#__init__,Method apiclient.schema._SchemaToStruct.__init__()=apiclient.schema._SchemaToStruct-class.html#__init__,Method oauth2client.appengine.AppAssertionCredentials.__init__()=oauth2client.appengine.AppAssertionCredentials-class.html#__init__,Method oauth2client.appengine.OAuth2Decorator.__init__()=oauth2client.appengine.OAuth2Decorator-class.html#__init__,Method oauth2client.appengine.OAuth2DecoratorFromClientSecrets.__init__()=oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html#__init__,Method oauth2client.appengine.StorageByKeyName.__init__()=oauth2client.appengine.StorageByKeyName-class.html#__init__,Method oauth2client.client.AccessTokenCredentials.__init__()=oauth2client.client.AccessTokenCredentials-class.html#__init__,Method oauth2client.client.AssertionCredentials.__init__()=oauth2client.client.AssertionCredentials-class.html#__init__,Method oauth2client.client.MemoryCache.__init__()=oauth2client.client.MemoryCache-class.html#__init__,Method oauth2client.client.OAuth2Credentials.__init__()=oauth2client.client.OAuth2Credentials-class.html#__init__,Method oauth2client.client.OAuth2WebServerFlow.__init__()=oauth2client.client.OAuth2WebServerFlow-class.html#__init__,Method oauth2client.client.SignedJwtAssertionCredentials.__init__()=oauth2client.client.SignedJwtAssertionCredentials-class.html#__init__,Method oauth2client.django_orm.CredentialsField.__init__()=oauth2client.django_orm.CredentialsField-class.html#__init__,Method oauth2client.django_orm.FlowField.__init__()=oauth2client.django_orm.FlowField-class.html#__init__,Method oauth2client.django_orm.Storage.__init__()=oauth2client.django_orm.Storage-class.html#__init__,Method oauth2client.file.Storage.__init__()=oauth2client.file.Storage-class.html#__init__,Method oauth2client.gce.AppAssertionCredentials.__init__()=oauth2client.gce.AppAssertionCredentials-class.html#__init__,Method oauth2client.keyring_storage.Storage.__init__()=oauth2client.keyring_storage.Storage-class.html#__init__,Method oauth2client.locked_file.LockedFile.__init__()=oauth2client.locked_file.LockedFile-class.html#__init__,Method oauth2client.locked_file._Opener.__init__()=oauth2client.locked_file._Opener-class.html#__init__,Method oauth2client.multistore_file._MultiStore._Storage.__init__()=oauth2client.multistore_file._MultiStore._Storage-class.html#__init__,Method oauth2client.multistore_file._MultiStore.__init__()=oauth2client.multistore_file._MultiStore-class.html#__init__"><a title="apiclient.channel.Channel.__init__
+apiclient.channel.Notification.__init__
+apiclient.discovery.Resource.__init__
apiclient.discovery.ResourceMethodParameters.__init__
apiclient.errors.BatchError.__init__
apiclient.errors.HttpError.__init__
@@ -202,10 +207,6 @@
apiclient.http._StreamSlice.__init__
apiclient.model.JsonModel.__init__
apiclient.model.ProtocolBufferModel.__init__
-apiclient.push.Channel.__init__
-apiclient.push.Headers.__init__
-apiclient.push.Subscription.__init__
-apiclient.push.WebhookChannel.__init__
apiclient.schema.Schemas.__init__
apiclient.schema._SchemaToStruct.__init__
oauth2client.appengine.AppAssertionCredentials.__init__
@@ -228,15 +229,17 @@
oauth2client.locked_file._Opener.__init__
oauth2client.multistore_file._MultiStore._Storage.__init__
oauth2client.multistore_file._MultiStore.__init__" class="py-name" href="#" onclick="return doclink('link-13', '__init__', 'link-13');">__init__</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"> <tt class="py-string">'Received unexpected call %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">methodId</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"> </tt>
-<a name="UnexpectedBodyError"></a><div id="UnexpectedBodyError-def"><a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"> </tt>
-<a name="L131"></a><tt class="py-lineno">131</tt> <a class="py-toggle" href="#" id="UnexpectedBodyError-toggle" onclick="return toggle('UnexpectedBodyError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.errors.UnexpectedBodyError-class.html">UnexpectedBodyError</a><tt class="py-op">(</tt><tt class="py-base-class">Error</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="UnexpectedBodyError-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="UnexpectedBodyError-expanded"><a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"> <tt class="py-docstring">"""Exception raised by RequestMockBuilder on unexpected bodies."""</tt> </tt>
-<a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"> </tt>
-<a name="UnexpectedBodyError.__init__"></a><div id="UnexpectedBodyError.__init__-def"><a name="L134"></a><tt class="py-lineno">134</tt> <a class="py-toggle" href="#" id="UnexpectedBodyError.__init__-toggle" onclick="return toggle('UnexpectedBodyError.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.errors.UnexpectedBodyError-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">expected</tt><tt class="py-op">,</tt> <tt class="py-param">provided</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="UnexpectedBodyError.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="UnexpectedBodyError.__init__-expanded"><a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"> <tt class="py-docstring">"""Constructor for an UnexpectedMethodError."""</tt> </tt>
-<a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-14" class="py-name" targets="Class apiclient.errors.UnexpectedBodyError=apiclient.errors.UnexpectedBodyError-class.html"><a title="apiclient.errors.UnexpectedBodyError" class="py-name" href="#" onclick="return doclink('link-14', 'UnexpectedBodyError', 'link-14');">UnexpectedBodyError</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-15" class="py-name"><a title="apiclient.discovery.Resource.__init__
+<a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"> <tt class="py-string">'Received unexpected call %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">methodId</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"> </tt>
+<a name="UnexpectedBodyError"></a><div id="UnexpectedBodyError-def"><a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt> <a class="py-toggle" href="#" id="UnexpectedBodyError-toggle" onclick="return toggle('UnexpectedBodyError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.errors.UnexpectedBodyError-class.html">UnexpectedBodyError</a><tt class="py-op">(</tt><tt class="py-base-class">Error</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="UnexpectedBodyError-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="UnexpectedBodyError-expanded"><a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"> <tt class="py-docstring">"""Exception raised by RequestMockBuilder on unexpected bodies."""</tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"> </tt>
+<a name="UnexpectedBodyError.__init__"></a><div id="UnexpectedBodyError.__init__-def"><a name="L137"></a><tt class="py-lineno">137</tt> <a class="py-toggle" href="#" id="UnexpectedBodyError.__init__-toggle" onclick="return toggle('UnexpectedBodyError.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.errors.UnexpectedBodyError-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">expected</tt><tt class="py-op">,</tt> <tt class="py-param">provided</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="UnexpectedBodyError.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="UnexpectedBodyError.__init__-expanded"><a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"> <tt class="py-docstring">"""Constructor for an UnexpectedMethodError."""</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-14" class="py-name" targets="Class apiclient.errors.UnexpectedBodyError=apiclient.errors.UnexpectedBodyError-class.html"><a title="apiclient.errors.UnexpectedBodyError" class="py-name" href="#" onclick="return doclink('link-14', 'UnexpectedBodyError', 'link-14');">UnexpectedBodyError</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-15" class="py-name"><a title="apiclient.channel.Channel.__init__
+apiclient.channel.Notification.__init__
+apiclient.discovery.Resource.__init__
apiclient.discovery.ResourceMethodParameters.__init__
apiclient.errors.BatchError.__init__
apiclient.errors.HttpError.__init__
@@ -257,10 +260,6 @@
apiclient.http._StreamSlice.__init__
apiclient.model.JsonModel.__init__
apiclient.model.ProtocolBufferModel.__init__
-apiclient.push.Channel.__init__
-apiclient.push.Headers.__init__
-apiclient.push.Subscription.__init__
-apiclient.push.WebhookChannel.__init__
apiclient.schema.Schemas.__init__
apiclient.schema._SchemaToStruct.__init__
oauth2client.appengine.AppAssertionCredentials.__init__
@@ -283,8 +282,8 @@
oauth2client.locked_file._Opener.__init__
oauth2client.multistore_file._MultiStore._Storage.__init__
oauth2client.multistore_file._MultiStore.__init__" class="py-name" href="#" onclick="return doclink('link-15', '__init__', 'link-13');">__init__</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"> <tt class="py-string">'Expected: [%s] - Provided: [%s]'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">expected</tt><tt class="py-op">,</tt> <tt class="py-name">provided</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"> </tt><script type="text/javascript">
+<a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"> <tt class="py-string">'Expected: [%s] - Provided: [%s]'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">expected</tt><tt class="py-op">,</tt> <tt class="py-name">provided</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"> </tt><script type="text/javascript">
<!--
expandto(location.href);
// -->
@@ -314,7 +313,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:26 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:47 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.errors.BatchError-class.html b/docs/epy/apiclient.errors.BatchError-class.html
index f867105..e376327 100644
--- a/docs/epy/apiclient.errors.BatchError-class.html
+++ b/docs/epy/apiclient.errors.BatchError-class.html
@@ -55,14 +55,28 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class BatchError</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.errors-pysrc.html#BatchError">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_batcherror" name="class_hierarchy_for_batcherror">
-<area shape="rect" id="node1" href="apiclient.errors.BatchError-class.html" title="BatchError" alt="" coords="5,6,88,34"/>
-<area shape="rect" id="node2" href="apiclient.errors.Error-class.html" title="Error" alt="" coords="175,123,225,151"/>
-<area shape="rect" id="node3" href="apiclient.errors.HttpError-class.html" title="HttpError" alt="" coords="312,6,387,34"/>
-<area shape="rect" id="node4" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="112,6,288,34"/>
-<area shape="rect" id="node5" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="127,65,273,93"/>
+<center> <map id="uml_class_diagram_for_apiclien_5" name="uml_class_diagram_for_apiclien_5">
+<area shape="rect" id="node4" href="apiclient.errors.BatchError-class.html#__init__" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="17,484,308,503"/>
+<area shape="rect" id="node4" href="apiclient.errors.BatchError-class.html#__repr__" title="str(x)" alt="" coords="17,503,308,521"/>
+<area shape="rect" id="node4" href="apiclient.errors.BatchError-class.html#__str__" title="str(x)" alt="" coords="17,521,308,540"/>
+<area shape="rect" id="node1" href="apiclient.errors.BatchError-class.html" title="Error occured during batch operations." alt="" coords="5,451,320,546"/>
+<area shape="rect" id="node2" href="apiclient.errors.HttpError-class.html" title="HTTP data was invalid or unexpected." alt="" coords="123,387,200,431"/>
+<area shape="rect" id="node3" href="apiclient.errors.Error-class.html" title="Base error for this module." alt="" coords="135,323,188,367"/>
+<area shape="rect" id="node8" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="84,31,241,49"/>
+<area shape="rect" id="node8" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="84,49,241,68"/>
+<area shape="rect" id="node8" href="javascript:void(0);" title="x.__delattr__('name') <==> del x.name" alt="" coords="84,71,241,89"/>
+<area shape="rect" id="node8" href="javascript:void(0);" title="x.__getattribute__('name') <==> x.name" alt="" coords="84,89,241,108"/>
+<area shape="rect" id="node8" href="javascript:void(0);" title="x[y]" alt="" coords="84,108,241,127"/>
+<area shape="rect" id="node8" href="javascript:void(0);" title="x[i:j]" alt="" coords="84,127,241,145"/>
+<area shape="rect" id="node8" href="javascript:void(0);" title="helper for pickle" alt="" coords="84,145,241,164"/>
+<area shape="rect" id="node8" href="javascript:void(0);" title="x.__setattr__('name', value) <==> x.name = value" alt="" coords="84,164,241,183"/>
+<area shape="rect" id="node8" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="84,183,241,201"/>
+<area shape="rect" id="node8" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="84,201,241,220"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="72,6,253,226"/>
+<area shape="rect" id="node7" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="99,279,225,297"/>
+<area shape="rect" id="node5" href="javascript:void(0);" title="Common base class for all non-exit exceptions." alt="" coords="87,246,236,303"/>
</map>
- <img src="class_hierarchy_for_batcherror.gif" alt='' usemap="#class_hierarchy_for_batcherror" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_apiclien_5.gif" alt='' usemap="#uml_class_diagram_for_apiclien_5" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -329,7 +343,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:23 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:43 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.errors.Error-class.html b/docs/epy/apiclient.errors.Error-class.html
index 1db9530..d00a39f 100644
--- a/docs/epy/apiclient.errors.Error-class.html
+++ b/docs/epy/apiclient.errors.Error-class.html
@@ -55,12 +55,26 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class Error</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.errors-pysrc.html#Error">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_error" name="class_hierarchy_for_error">
-<area shape="rect" id="node1" href="apiclient.errors.Error-class.html" title="Error" alt="" coords="68,123,119,151"/>
-<area shape="rect" id="node2" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
-<area shape="rect" id="node3" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
+<center> <map id="uml_class_diagram_for_apiclien_6" name="uml_class_diagram_for_apiclien_6">
+<area shape="rect" id="node1" href="apiclient.errors.Error-class.html" title="Base error for this module." alt="" coords="68,379,121,423"/>
+<area shape="rect" id="node10" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="32,316,159,335"/>
+<area shape="rect" id="node10" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="32,335,159,353"/>
+<area shape="rect" id="node2" href="javascript:void(0);" title="Common base class for all non-exit exceptions." alt="" coords="20,283,169,359"/>
+<area shape="rect" id="node11" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="17,31,175,49"/>
+<area shape="rect" id="node11" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="17,49,175,68"/>
+<area shape="rect" id="node11" href="javascript:void(0);" title="x.__delattr__('name') <==> del x.name" alt="" coords="17,71,175,89"/>
+<area shape="rect" id="node11" href="javascript:void(0);" title="x.__getattribute__('name') <==> x.name" alt="" coords="17,89,175,108"/>
+<area shape="rect" id="node11" href="javascript:void(0);" title="x[y]" alt="" coords="17,108,175,127"/>
+<area shape="rect" id="node11" href="javascript:void(0);" title="x[i:j]" alt="" coords="17,127,175,145"/>
+<area shape="rect" id="node11" href="javascript:void(0);" title="helper for pickle" alt="" coords="17,145,175,164"/>
+<area shape="rect" id="node11" href="javascript:void(0);" title="repr(x)" alt="" coords="17,164,175,183"/>
+<area shape="rect" id="node11" href="javascript:void(0);" title="x.__setattr__('name', value) <==> x.name = value" alt="" coords="17,183,175,201"/>
+<area shape="rect" id="node11" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="17,201,175,220"/>
+<area shape="rect" id="node11" href="javascript:void(0);" title="str(x)" alt="" coords="17,220,175,239"/>
+<area shape="rect" id="node11" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="17,239,175,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,6,187,263"/>
</map>
- <img src="class_hierarchy_for_error.gif" alt='' usemap="#class_hierarchy_for_error" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_apiclien_6.gif" alt='' usemap="#uml_class_diagram_for_apiclien_6" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -166,7 +180,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:23 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:43 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.errors.HttpError-class.html b/docs/epy/apiclient.errors.HttpError-class.html
index 2b29047..e72b3bd 100644
--- a/docs/epy/apiclient.errors.HttpError-class.html
+++ b/docs/epy/apiclient.errors.HttpError-class.html
@@ -55,13 +55,27 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class HttpError</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.errors-pysrc.html#HttpError">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_httperror" name="class_hierarchy_for_httperror">
-<area shape="rect" id="node1" href="apiclient.errors.Error-class.html" title="Error" alt="" coords="68,123,119,151"/>
-<area shape="rect" id="node2" href="apiclient.errors.HttpError-class.html" title="HttpError" alt="" coords="205,6,280,34"/>
-<area shape="rect" id="node3" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
-<area shape="rect" id="node4" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
+<center> <map id="uml_class_diagram_for_apiclien_7" name="uml_class_diagram_for_apiclien_7">
+<area shape="rect" id="node12" href="apiclient.errors.HttpError-class.html#__init__" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="17,420,244,439"/>
+<area shape="rect" id="node12" href="apiclient.errors.HttpError-class.html#__repr__" title="str(x)" alt="" coords="17,439,244,457"/>
+<area shape="rect" id="node12" href="apiclient.errors.HttpError-class.html#__str__" title="str(x)" alt="" coords="17,457,244,476"/>
+<area shape="rect" id="node1" href="apiclient.errors.HttpError-class.html" title="HTTP data was invalid or unexpected." alt="" coords="5,387,256,482"/>
+<area shape="rect" id="node2" href="apiclient.errors.Error-class.html" title="Base error for this module." alt="" coords="103,323,156,367"/>
+<area shape="rect" id="node15" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="52,31,209,49"/>
+<area shape="rect" id="node15" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="52,49,209,68"/>
+<area shape="rect" id="node15" href="javascript:void(0);" title="x.__delattr__('name') <==> del x.name" alt="" coords="52,71,209,89"/>
+<area shape="rect" id="node15" href="javascript:void(0);" title="x.__getattribute__('name') <==> x.name" alt="" coords="52,89,209,108"/>
+<area shape="rect" id="node15" href="javascript:void(0);" title="x[y]" alt="" coords="52,108,209,127"/>
+<area shape="rect" id="node15" href="javascript:void(0);" title="x[i:j]" alt="" coords="52,127,209,145"/>
+<area shape="rect" id="node15" href="javascript:void(0);" title="helper for pickle" alt="" coords="52,145,209,164"/>
+<area shape="rect" id="node15" href="javascript:void(0);" title="x.__setattr__('name', value) <==> x.name = value" alt="" coords="52,164,209,183"/>
+<area shape="rect" id="node15" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="52,183,209,201"/>
+<area shape="rect" id="node15" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="52,201,209,220"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="40,6,221,226"/>
+<area shape="rect" id="node14" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="67,279,193,297"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all non-exit exceptions." alt="" coords="55,246,204,303"/>
</map>
- <img src="class_hierarchy_for_httperror.gif" alt='' usemap="#class_hierarchy_for_httperror" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_apiclien_7.gif" alt='' usemap="#uml_class_diagram_for_apiclien_7" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -342,7 +356,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:23 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:43 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.errors.InvalidChunkSizeError-class.html b/docs/epy/apiclient.errors.InvalidChunkSizeError-class.html
index c816adf..ef05226 100644
--- a/docs/epy/apiclient.errors.InvalidChunkSizeError-class.html
+++ b/docs/epy/apiclient.errors.InvalidChunkSizeError-class.html
@@ -55,13 +55,27 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class InvalidChunkSizeError</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.errors-pysrc.html#InvalidChunkSizeError">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_invalidchu" name="class_hierarchy_for_invalidchu">
-<area shape="rect" id="node1" href="apiclient.errors.Error-class.html" title="Error" alt="" coords="68,123,119,151"/>
-<area shape="rect" id="node2" href="apiclient.errors.InvalidChunkSizeError-class.html" title="InvalidChunkSizeError" alt="" coords="205,6,357,34"/>
-<area shape="rect" id="node3" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
-<area shape="rect" id="node4" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
+<center> <map id="uml_class_diagram_for_apiclien_8" name="uml_class_diagram_for_apiclien_8">
+<area shape="rect" id="node1" href="apiclient.errors.InvalidChunkSizeError-class.html" title="The given chunksize is not valid." alt="" coords="17,443,172,487"/>
+<area shape="rect" id="node2" href="apiclient.errors.Error-class.html" title="Base error for this module." alt="" coords="68,379,121,423"/>
+<area shape="rect" id="node19" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="17,31,175,49"/>
+<area shape="rect" id="node19" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="17,49,175,68"/>
+<area shape="rect" id="node19" href="javascript:void(0);" title="x.__delattr__('name') <==> del x.name" alt="" coords="17,71,175,89"/>
+<area shape="rect" id="node19" href="javascript:void(0);" title="x.__getattribute__('name') <==> x.name" alt="" coords="17,89,175,108"/>
+<area shape="rect" id="node19" href="javascript:void(0);" title="x[y]" alt="" coords="17,108,175,127"/>
+<area shape="rect" id="node19" href="javascript:void(0);" title="x[i:j]" alt="" coords="17,127,175,145"/>
+<area shape="rect" id="node19" href="javascript:void(0);" title="helper for pickle" alt="" coords="17,145,175,164"/>
+<area shape="rect" id="node19" href="javascript:void(0);" title="repr(x)" alt="" coords="17,164,175,183"/>
+<area shape="rect" id="node19" href="javascript:void(0);" title="x.__setattr__('name', value) <==> x.name = value" alt="" coords="17,183,175,201"/>
+<area shape="rect" id="node19" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="17,201,175,220"/>
+<area shape="rect" id="node19" href="javascript:void(0);" title="str(x)" alt="" coords="17,220,175,239"/>
+<area shape="rect" id="node19" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="17,239,175,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,6,187,263"/>
+<area shape="rect" id="node18" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="32,316,159,335"/>
+<area shape="rect" id="node18" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="32,335,159,353"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all non-exit exceptions." alt="" coords="20,283,169,359"/>
</map>
- <img src="class_hierarchy_for_invalidchu.gif" alt='' usemap="#class_hierarchy_for_invalidchu" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_apiclien_8.gif" alt='' usemap="#uml_class_diagram_for_apiclien_8" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -167,7 +181,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:23 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:43 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.errors.InvalidJsonError-class.html b/docs/epy/apiclient.errors.InvalidJsonError-class.html
index 80da4d9..3f3e3a0 100644
--- a/docs/epy/apiclient.errors.InvalidJsonError-class.html
+++ b/docs/epy/apiclient.errors.InvalidJsonError-class.html
@@ -55,13 +55,27 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class InvalidJsonError</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.errors-pysrc.html#InvalidJsonError">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_invalidjso" name="class_hierarchy_for_invalidjso">
-<area shape="rect" id="node1" href="apiclient.errors.Error-class.html" title="Error" alt="" coords="68,123,119,151"/>
-<area shape="rect" id="node2" href="apiclient.errors.InvalidJsonError-class.html" title="InvalidJsonError" alt="" coords="205,6,320,34"/>
-<area shape="rect" id="node3" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
-<area shape="rect" id="node4" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
+<center> <map id="uml_class_diagram_for_apiclien_9" name="uml_class_diagram_for_apiclien_9">
+<area shape="rect" id="node1" href="apiclient.errors.InvalidJsonError-class.html" title="The JSON returned could not be parsed." alt="" coords="36,443,156,487"/>
+<area shape="rect" id="node2" href="apiclient.errors.Error-class.html" title="Base error for this module." alt="" coords="68,379,121,423"/>
+<area shape="rect" id="node23" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="17,31,175,49"/>
+<area shape="rect" id="node23" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="17,49,175,68"/>
+<area shape="rect" id="node23" href="javascript:void(0);" title="x.__delattr__('name') <==> del x.name" alt="" coords="17,71,175,89"/>
+<area shape="rect" id="node23" href="javascript:void(0);" title="x.__getattribute__('name') <==> x.name" alt="" coords="17,89,175,108"/>
+<area shape="rect" id="node23" href="javascript:void(0);" title="x[y]" alt="" coords="17,108,175,127"/>
+<area shape="rect" id="node23" href="javascript:void(0);" title="x[i:j]" alt="" coords="17,127,175,145"/>
+<area shape="rect" id="node23" href="javascript:void(0);" title="helper for pickle" alt="" coords="17,145,175,164"/>
+<area shape="rect" id="node23" href="javascript:void(0);" title="repr(x)" alt="" coords="17,164,175,183"/>
+<area shape="rect" id="node23" href="javascript:void(0);" title="x.__setattr__('name', value) <==> x.name = value" alt="" coords="17,183,175,201"/>
+<area shape="rect" id="node23" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="17,201,175,220"/>
+<area shape="rect" id="node23" href="javascript:void(0);" title="str(x)" alt="" coords="17,220,175,239"/>
+<area shape="rect" id="node23" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="17,239,175,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,6,187,263"/>
+<area shape="rect" id="node22" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="32,316,159,335"/>
+<area shape="rect" id="node22" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="32,335,159,353"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all non-exit exceptions." alt="" coords="20,283,169,359"/>
</map>
- <img src="class_hierarchy_for_invalidjso.gif" alt='' usemap="#class_hierarchy_for_invalidjso" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_apiclien_9.gif" alt='' usemap="#uml_class_diagram_for_apiclien_9" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -167,7 +181,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:23 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:43 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.errors.InvalidNotificationError-class.html b/docs/epy/apiclient.errors.InvalidNotificationError-class.html
new file mode 100644
index 0000000..ba84c89
--- /dev/null
+++ b/docs/epy/apiclient.errors.InvalidNotificationError-class.html
@@ -0,0 +1,203 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>apiclient.errors.InvalidNotificationError</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+
+ <!-- Tree link -->
+ <th> <a
+ href="module-tree.html">Trees</a> </th>
+
+ <!-- Index link -->
+ <th> <a
+ href="identifier-index.html">Indices</a> </th>
+
+ <!-- Help link -->
+ <th> <a
+ href="help.html">Help</a> </th>
+
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="apiclient-module.html">Package apiclient</a> ::
+ <a href="apiclient.errors-module.html">Module errors</a> ::
+ Class InvalidNotificationError
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >] | <a href="apiclient.errors.InvalidNotificationError-class.html"
+ target="_top">no frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== CLASS DESCRIPTION ==================== -->
+<h1 class="epydoc">Class InvalidNotificationError</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.errors-pysrc.html#InvalidNotificationError">source code</a></span></p>
+<center>
+<center> <map id="uml_class_diagram_for_apiclien_10" name="uml_class_diagram_for_apiclien_10">
+<area shape="rect" id="node1" href="apiclient.errors.InvalidNotificationError-class.html" title="The channel Notification is invalid." alt="" coords="16,443,173,487"/>
+<area shape="rect" id="node2" href="apiclient.errors.Error-class.html" title="Base error for this module." alt="" coords="68,379,121,423"/>
+<area shape="rect" id="node27" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="17,31,175,49"/>
+<area shape="rect" id="node27" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="17,49,175,68"/>
+<area shape="rect" id="node27" href="javascript:void(0);" title="x.__delattr__('name') <==> del x.name" alt="" coords="17,71,175,89"/>
+<area shape="rect" id="node27" href="javascript:void(0);" title="x.__getattribute__('name') <==> x.name" alt="" coords="17,89,175,108"/>
+<area shape="rect" id="node27" href="javascript:void(0);" title="x[y]" alt="" coords="17,108,175,127"/>
+<area shape="rect" id="node27" href="javascript:void(0);" title="x[i:j]" alt="" coords="17,127,175,145"/>
+<area shape="rect" id="node27" href="javascript:void(0);" title="helper for pickle" alt="" coords="17,145,175,164"/>
+<area shape="rect" id="node27" href="javascript:void(0);" title="repr(x)" alt="" coords="17,164,175,183"/>
+<area shape="rect" id="node27" href="javascript:void(0);" title="x.__setattr__('name', value) <==> x.name = value" alt="" coords="17,183,175,201"/>
+<area shape="rect" id="node27" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="17,201,175,220"/>
+<area shape="rect" id="node27" href="javascript:void(0);" title="str(x)" alt="" coords="17,220,175,239"/>
+<area shape="rect" id="node27" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="17,239,175,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,6,187,263"/>
+<area shape="rect" id="node26" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="32,316,159,335"/>
+<area shape="rect" id="node26" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="32,335,159,353"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all non-exit exceptions." alt="" coords="20,283,169,359"/>
+</map>
+ <img src="uml_class_diagram_for_apiclien_10.gif" alt='' usemap="#uml_class_diagram_for_apiclien_10" ismap="ismap" class="graph-without-title" />
+</center>
+</center>
+<hr />
+<pre class="literalblock">
+The channel Notification is invalid.
+
+</pre>
+
+<!-- ==================== INSTANCE METHODS ==================== -->
+<a name="section-InstanceMethods"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Instance Methods</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-InstanceMethods"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.Exception</code></b>:
+ <code>__init__</code>,
+ <code>__new__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>__delattr__</code>,
+ <code>__getattribute__</code>,
+ <code>__getitem__</code>,
+ <code>__getslice__</code>,
+ <code>__reduce__</code>,
+ <code>__repr__</code>,
+ <code>__setattr__</code>,
+ <code>__setstate__</code>,
+ <code>__str__</code>,
+ <code>__unicode__</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__format__</code>,
+ <code>__hash__</code>,
+ <code>__reduce_ex__</code>,
+ <code>__sizeof__</code>,
+ <code>__subclasshook__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== PROPERTIES ==================== -->
+<a name="section-Properties"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Properties</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Properties"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code>exceptions.BaseException</code></b>:
+ <code>args</code>,
+ <code>message</code>
+ </p>
+ <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
+ <code>__class__</code>
+ </p>
+ </td>
+ </tr>
+</table>
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+
+ <!-- Tree link -->
+ <th> <a
+ href="module-tree.html">Trees</a> </th>
+
+ <!-- Index link -->
+ <th> <a
+ href="identifier-index.html">Indices</a> </th>
+
+ <!-- Help link -->
+ <th> <a
+ href="help.html">Help</a> </th>
+
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:43 2013
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/docs/epy/apiclient.errors.MediaUploadSizeError-class.html b/docs/epy/apiclient.errors.MediaUploadSizeError-class.html
index 58ed307..7f5c4f8 100644
--- a/docs/epy/apiclient.errors.MediaUploadSizeError-class.html
+++ b/docs/epy/apiclient.errors.MediaUploadSizeError-class.html
@@ -55,13 +55,27 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class MediaUploadSizeError</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.errors-pysrc.html#MediaUploadSizeError">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_mediauploa" name="class_hierarchy_for_mediauploa">
-<area shape="rect" id="node1" href="apiclient.errors.Error-class.html" title="Error" alt="" coords="68,123,119,151"/>
-<area shape="rect" id="node2" href="apiclient.errors.MediaUploadSizeError-class.html" title="MediaUploadSizeError" alt="" coords="205,6,357,34"/>
-<area shape="rect" id="node3" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
-<area shape="rect" id="node4" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
+<center> <map id="uml_class_diagram_for_apiclien_11" name="uml_class_diagram_for_apiclien_11">
+<area shape="rect" id="node1" href="apiclient.errors.MediaUploadSizeError-class.html" title="Media is larger than the method can accept." alt="" coords="17,443,172,487"/>
+<area shape="rect" id="node2" href="apiclient.errors.Error-class.html" title="Base error for this module." alt="" coords="68,379,121,423"/>
+<area shape="rect" id="node31" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="17,31,175,49"/>
+<area shape="rect" id="node31" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="17,49,175,68"/>
+<area shape="rect" id="node31" href="javascript:void(0);" title="x.__delattr__('name') <==> del x.name" alt="" coords="17,71,175,89"/>
+<area shape="rect" id="node31" href="javascript:void(0);" title="x.__getattribute__('name') <==> x.name" alt="" coords="17,89,175,108"/>
+<area shape="rect" id="node31" href="javascript:void(0);" title="x[y]" alt="" coords="17,108,175,127"/>
+<area shape="rect" id="node31" href="javascript:void(0);" title="x[i:j]" alt="" coords="17,127,175,145"/>
+<area shape="rect" id="node31" href="javascript:void(0);" title="helper for pickle" alt="" coords="17,145,175,164"/>
+<area shape="rect" id="node31" href="javascript:void(0);" title="repr(x)" alt="" coords="17,164,175,183"/>
+<area shape="rect" id="node31" href="javascript:void(0);" title="x.__setattr__('name', value) <==> x.name = value" alt="" coords="17,183,175,201"/>
+<area shape="rect" id="node31" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="17,201,175,220"/>
+<area shape="rect" id="node31" href="javascript:void(0);" title="str(x)" alt="" coords="17,220,175,239"/>
+<area shape="rect" id="node31" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="17,239,175,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,6,187,263"/>
+<area shape="rect" id="node30" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="32,316,159,335"/>
+<area shape="rect" id="node30" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="32,335,159,353"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all non-exit exceptions." alt="" coords="20,283,169,359"/>
</map>
- <img src="class_hierarchy_for_mediauploa.gif" alt='' usemap="#class_hierarchy_for_mediauploa" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_apiclien_11.gif" alt='' usemap="#uml_class_diagram_for_apiclien_11" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -167,7 +181,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:23 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:43 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.errors.ResumableUploadError-class.html b/docs/epy/apiclient.errors.ResumableUploadError-class.html
index fe62180..f698213 100644
--- a/docs/epy/apiclient.errors.ResumableUploadError-class.html
+++ b/docs/epy/apiclient.errors.ResumableUploadError-class.html
@@ -55,14 +55,28 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class ResumableUploadError</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.errors-pysrc.html#ResumableUploadError">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_resumableu" name="class_hierarchy_for_resumableu">
-<area shape="rect" id="node1" href="apiclient.errors.Error-class.html" title="Error" alt="" coords="68,123,119,151"/>
-<area shape="rect" id="node2" href="apiclient.errors.HttpError-class.html" title="HttpError" alt="" coords="205,6,280,34"/>
-<area shape="rect" id="node3" href="apiclient.errors.ResumableUploadError-class.html" title="ResumableUploadError" alt="" coords="304,6,461,34"/>
-<area shape="rect" id="node4" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
-<area shape="rect" id="node5" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
+<center> <map id="uml_class_diagram_for_apiclien_12" name="uml_class_diagram_for_apiclien_12">
+<area shape="rect" id="node1" href="apiclient.errors.ResumableUploadError-class.html" title="Error occured during resumable upload." alt="" coords="49,502,209,546"/>
+<area shape="rect" id="node33" href="apiclient.errors.HttpError-class.html#__init__" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="17,420,244,439"/>
+<area shape="rect" id="node33" href="apiclient.errors.HttpError-class.html#__repr__" title="str(x)" alt="" coords="17,439,244,457"/>
+<area shape="rect" id="node33" href="apiclient.errors.HttpError-class.html#__str__" title="str(x)" alt="" coords="17,457,244,476"/>
+<area shape="rect" id="node2" href="apiclient.errors.HttpError-class.html" title="HTTP data was invalid or unexpected." alt="" coords="5,387,256,482"/>
+<area shape="rect" id="node3" href="apiclient.errors.Error-class.html" title="Base error for this module." alt="" coords="103,323,156,367"/>
+<area shape="rect" id="node36" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="52,31,209,49"/>
+<area shape="rect" id="node36" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="52,49,209,68"/>
+<area shape="rect" id="node36" href="javascript:void(0);" title="x.__delattr__('name') <==> del x.name" alt="" coords="52,71,209,89"/>
+<area shape="rect" id="node36" href="javascript:void(0);" title="x.__getattribute__('name') <==> x.name" alt="" coords="52,89,209,108"/>
+<area shape="rect" id="node36" href="javascript:void(0);" title="x[y]" alt="" coords="52,108,209,127"/>
+<area shape="rect" id="node36" href="javascript:void(0);" title="x[i:j]" alt="" coords="52,127,209,145"/>
+<area shape="rect" id="node36" href="javascript:void(0);" title="helper for pickle" alt="" coords="52,145,209,164"/>
+<area shape="rect" id="node36" href="javascript:void(0);" title="x.__setattr__('name', value) <==> x.name = value" alt="" coords="52,164,209,183"/>
+<area shape="rect" id="node36" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="52,183,209,201"/>
+<area shape="rect" id="node36" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="52,201,209,220"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="40,6,221,226"/>
+<area shape="rect" id="node35" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="67,279,193,297"/>
+<area shape="rect" id="node5" href="javascript:void(0);" title="Common base class for all non-exit exceptions." alt="" coords="55,246,204,303"/>
</map>
- <img src="class_hierarchy_for_resumableu.gif" alt='' usemap="#class_hierarchy_for_resumableu" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_apiclien_12.gif" alt='' usemap="#uml_class_diagram_for_apiclien_12" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -173,7 +187,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:23 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:43 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.errors.UnacceptableMimeTypeError-class.html b/docs/epy/apiclient.errors.UnacceptableMimeTypeError-class.html
index 0286cd8..6b6bbf8 100644
--- a/docs/epy/apiclient.errors.UnacceptableMimeTypeError-class.html
+++ b/docs/epy/apiclient.errors.UnacceptableMimeTypeError-class.html
@@ -55,13 +55,27 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class UnacceptableMimeTypeError</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.errors-pysrc.html#UnacceptableMimeTypeError">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_unacceptab" name="class_hierarchy_for_unacceptab">
-<area shape="rect" id="node1" href="apiclient.errors.Error-class.html" title="Error" alt="" coords="68,123,119,151"/>
-<area shape="rect" id="node2" href="apiclient.errors.UnacceptableMimeTypeError-class.html" title="UnacceptableMimeTypeError" alt="" coords="205,6,395,34"/>
-<area shape="rect" id="node3" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
-<area shape="rect" id="node4" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
+<center> <map id="uml_class_diagram_for_apiclien_13" name="uml_class_diagram_for_apiclien_13">
+<area shape="rect" id="node1" href="apiclient.errors.UnacceptableMimeTypeError-class.html" title="That is an unacceptable mimetype for this operation." alt="" coords="5,443,200,487"/>
+<area shape="rect" id="node2" href="apiclient.errors.Error-class.html" title="Base error for this module." alt="" coords="75,379,128,423"/>
+<area shape="rect" id="node40" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="24,31,181,49"/>
+<area shape="rect" id="node40" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="24,49,181,68"/>
+<area shape="rect" id="node40" href="javascript:void(0);" title="x.__delattr__('name') <==> del x.name" alt="" coords="24,71,181,89"/>
+<area shape="rect" id="node40" href="javascript:void(0);" title="x.__getattribute__('name') <==> x.name" alt="" coords="24,89,181,108"/>
+<area shape="rect" id="node40" href="javascript:void(0);" title="x[y]" alt="" coords="24,108,181,127"/>
+<area shape="rect" id="node40" href="javascript:void(0);" title="x[i:j]" alt="" coords="24,127,181,145"/>
+<area shape="rect" id="node40" href="javascript:void(0);" title="helper for pickle" alt="" coords="24,145,181,164"/>
+<area shape="rect" id="node40" href="javascript:void(0);" title="repr(x)" alt="" coords="24,164,181,183"/>
+<area shape="rect" id="node40" href="javascript:void(0);" title="x.__setattr__('name', value) <==> x.name = value" alt="" coords="24,183,181,201"/>
+<area shape="rect" id="node40" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="24,201,181,220"/>
+<area shape="rect" id="node40" href="javascript:void(0);" title="str(x)" alt="" coords="24,220,181,239"/>
+<area shape="rect" id="node40" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="24,239,181,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="12,6,193,263"/>
+<area shape="rect" id="node39" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="39,316,165,335"/>
+<area shape="rect" id="node39" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="39,335,165,353"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all non-exit exceptions." alt="" coords="27,283,176,359"/>
</map>
- <img src="class_hierarchy_for_unacceptab.gif" alt='' usemap="#class_hierarchy_for_unacceptab" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_apiclien_13.gif" alt='' usemap="#uml_class_diagram_for_apiclien_13" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -167,7 +181,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:23 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:43 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.errors.UnexpectedBodyError-class.html b/docs/epy/apiclient.errors.UnexpectedBodyError-class.html
index 64c5b71..b8b15af 100644
--- a/docs/epy/apiclient.errors.UnexpectedBodyError-class.html
+++ b/docs/epy/apiclient.errors.UnexpectedBodyError-class.html
@@ -55,13 +55,27 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class UnexpectedBodyError</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.errors-pysrc.html#UnexpectedBodyError">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_unexpected" name="class_hierarchy_for_unexpected">
-<area shape="rect" id="node1" href="apiclient.errors.Error-class.html" title="Error" alt="" coords="68,123,119,151"/>
-<area shape="rect" id="node2" href="apiclient.errors.UnexpectedBodyError-class.html" title="UnexpectedBodyError" alt="" coords="205,6,355,34"/>
-<area shape="rect" id="node3" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
-<area shape="rect" id="node4" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
+<center> <map id="uml_class_diagram_for_apiclien_14" name="uml_class_diagram_for_apiclien_14">
+<area shape="rect" id="node41" href="apiclient.errors.UnexpectedBodyError-class.html#__init__" title="Constructor for an UnexpectedMethodError." alt="" coords="17,457,217,476"/>
+<area shape="rect" id="node1" href="apiclient.errors.UnexpectedBodyError-class.html" title="Exception raised by RequestMockBuilder on unexpected bodies." alt="" coords="5,425,229,482"/>
+<area shape="rect" id="node2" href="apiclient.errors.Error-class.html" title="Base error for this module." alt="" coords="89,361,143,405"/>
+<area shape="rect" id="node44" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="39,31,196,49"/>
+<area shape="rect" id="node44" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="39,49,196,68"/>
+<area shape="rect" id="node44" href="javascript:void(0);" title="x.__delattr__('name') <==> del x.name" alt="" coords="39,71,196,89"/>
+<area shape="rect" id="node44" href="javascript:void(0);" title="x.__getattribute__('name') <==> x.name" alt="" coords="39,89,196,108"/>
+<area shape="rect" id="node44" href="javascript:void(0);" title="x[y]" alt="" coords="39,108,196,127"/>
+<area shape="rect" id="node44" href="javascript:void(0);" title="x[i:j]" alt="" coords="39,127,196,145"/>
+<area shape="rect" id="node44" href="javascript:void(0);" title="helper for pickle" alt="" coords="39,145,196,164"/>
+<area shape="rect" id="node44" href="javascript:void(0);" title="repr(x)" alt="" coords="39,164,196,183"/>
+<area shape="rect" id="node44" href="javascript:void(0);" title="x.__setattr__('name', value) <==> x.name = value" alt="" coords="39,183,196,201"/>
+<area shape="rect" id="node44" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="39,201,196,220"/>
+<area shape="rect" id="node44" href="javascript:void(0);" title="str(x)" alt="" coords="39,220,196,239"/>
+<area shape="rect" id="node44" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="39,239,196,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="27,6,208,263"/>
+<area shape="rect" id="node43" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="53,316,180,335"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all non-exit exceptions." alt="" coords="41,283,191,341"/>
</map>
- <img src="class_hierarchy_for_unexpected.gif" alt='' usemap="#class_hierarchy_for_unexpected" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_apiclien_14.gif" alt='' usemap="#uml_class_diagram_for_apiclien_14" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -232,7 +246,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:23 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:43 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.errors.UnexpectedMethodError-class.html b/docs/epy/apiclient.errors.UnexpectedMethodError-class.html
index a3bb52d..34763a3 100644
--- a/docs/epy/apiclient.errors.UnexpectedMethodError-class.html
+++ b/docs/epy/apiclient.errors.UnexpectedMethodError-class.html
@@ -55,13 +55,27 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class UnexpectedMethodError</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.errors-pysrc.html#UnexpectedMethodError">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_unexpected_2" name="class_hierarchy_for_unexpected_2">
-<area shape="rect" id="node1" href="apiclient.errors.Error-class.html" title="Error" alt="" coords="68,123,119,151"/>
-<area shape="rect" id="node2" href="apiclient.errors.UnexpectedMethodError-class.html" title="UnexpectedMethodError" alt="" coords="205,6,368,34"/>
-<area shape="rect" id="node3" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
-<area shape="rect" id="node4" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
+<center> <map id="uml_class_diagram_for_apiclien_15" name="uml_class_diagram_for_apiclien_15">
+<area shape="rect" id="node45" href="apiclient.errors.UnexpectedMethodError-class.html#__init__" title="Constructor for an UnexpectedMethodError." alt="" coords="17,457,200,476"/>
+<area shape="rect" id="node1" href="apiclient.errors.UnexpectedMethodError-class.html" title="Exception raised by RequestMockBuilder on unexpected calls." alt="" coords="5,425,211,482"/>
+<area shape="rect" id="node2" href="apiclient.errors.Error-class.html" title="Base error for this module." alt="" coords="81,361,135,405"/>
+<area shape="rect" id="node48" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="31,31,188,49"/>
+<area shape="rect" id="node48" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="31,49,188,68"/>
+<area shape="rect" id="node48" href="javascript:void(0);" title="x.__delattr__('name') <==> del x.name" alt="" coords="31,71,188,89"/>
+<area shape="rect" id="node48" href="javascript:void(0);" title="x.__getattribute__('name') <==> x.name" alt="" coords="31,89,188,108"/>
+<area shape="rect" id="node48" href="javascript:void(0);" title="x[y]" alt="" coords="31,108,188,127"/>
+<area shape="rect" id="node48" href="javascript:void(0);" title="x[i:j]" alt="" coords="31,127,188,145"/>
+<area shape="rect" id="node48" href="javascript:void(0);" title="helper for pickle" alt="" coords="31,145,188,164"/>
+<area shape="rect" id="node48" href="javascript:void(0);" title="repr(x)" alt="" coords="31,164,188,183"/>
+<area shape="rect" id="node48" href="javascript:void(0);" title="x.__setattr__('name', value) <==> x.name = value" alt="" coords="31,183,188,201"/>
+<area shape="rect" id="node48" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="31,201,188,220"/>
+<area shape="rect" id="node48" href="javascript:void(0);" title="str(x)" alt="" coords="31,220,188,239"/>
+<area shape="rect" id="node48" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="31,239,188,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="19,6,200,263"/>
+<area shape="rect" id="node47" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="45,316,172,335"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all non-exit exceptions." alt="" coords="33,283,183,341"/>
</map>
- <img src="class_hierarchy_for_unexpected_2.gif" alt='' usemap="#class_hierarchy_for_unexpected_2" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_apiclien_15.gif" alt='' usemap="#uml_class_diagram_for_apiclien_15" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -234,7 +248,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:23 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:43 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.errors.UnknownApiNameOrVersion-class.html b/docs/epy/apiclient.errors.UnknownApiNameOrVersion-class.html
index e34bc8a..e96c887 100644
--- a/docs/epy/apiclient.errors.UnknownApiNameOrVersion-class.html
+++ b/docs/epy/apiclient.errors.UnknownApiNameOrVersion-class.html
@@ -55,13 +55,27 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class UnknownApiNameOrVersion</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.errors-pysrc.html#UnknownApiNameOrVersion">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_unknownapi" name="class_hierarchy_for_unknownapi">
-<area shape="rect" id="node1" href="apiclient.errors.Error-class.html" title="Error" alt="" coords="68,123,119,151"/>
-<area shape="rect" id="node2" href="apiclient.errors.UnknownApiNameOrVersion-class.html" title="UnknownApiNameOrVersion" alt="" coords="205,6,395,34"/>
-<area shape="rect" id="node3" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
-<area shape="rect" id="node4" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
+<center> <map id="uml_class_diagram_for_apiclien_16" name="uml_class_diagram_for_apiclien_16">
+<area shape="rect" id="node1" href="apiclient.errors.UnknownApiNameOrVersion-class.html" title="No API with that name and version exists." alt="" coords="5,443,197,487"/>
+<area shape="rect" id="node2" href="apiclient.errors.Error-class.html" title="Base error for this module." alt="" coords="75,379,128,423"/>
+<area shape="rect" id="node52" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="24,31,181,49"/>
+<area shape="rect" id="node52" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="24,49,181,68"/>
+<area shape="rect" id="node52" href="javascript:void(0);" title="x.__delattr__('name') <==> del x.name" alt="" coords="24,71,181,89"/>
+<area shape="rect" id="node52" href="javascript:void(0);" title="x.__getattribute__('name') <==> x.name" alt="" coords="24,89,181,108"/>
+<area shape="rect" id="node52" href="javascript:void(0);" title="x[y]" alt="" coords="24,108,181,127"/>
+<area shape="rect" id="node52" href="javascript:void(0);" title="x[i:j]" alt="" coords="24,127,181,145"/>
+<area shape="rect" id="node52" href="javascript:void(0);" title="helper for pickle" alt="" coords="24,145,181,164"/>
+<area shape="rect" id="node52" href="javascript:void(0);" title="repr(x)" alt="" coords="24,164,181,183"/>
+<area shape="rect" id="node52" href="javascript:void(0);" title="x.__setattr__('name', value) <==> x.name = value" alt="" coords="24,183,181,201"/>
+<area shape="rect" id="node52" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="24,201,181,220"/>
+<area shape="rect" id="node52" href="javascript:void(0);" title="str(x)" alt="" coords="24,220,181,239"/>
+<area shape="rect" id="node52" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="24,239,181,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="12,6,193,263"/>
+<area shape="rect" id="node51" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="39,316,165,335"/>
+<area shape="rect" id="node51" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="39,335,165,353"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all non-exit exceptions." alt="" coords="27,283,176,359"/>
</map>
- <img src="class_hierarchy_for_unknownapi.gif" alt='' usemap="#class_hierarchy_for_unknownapi" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_apiclien_16.gif" alt='' usemap="#uml_class_diagram_for_apiclien_16" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -167,7 +181,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:23 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:43 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.errors.UnknownFileType-class.html b/docs/epy/apiclient.errors.UnknownFileType-class.html
index eb95fae..ee20e94 100644
--- a/docs/epy/apiclient.errors.UnknownFileType-class.html
+++ b/docs/epy/apiclient.errors.UnknownFileType-class.html
@@ -55,13 +55,27 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class UnknownFileType</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.errors-pysrc.html#UnknownFileType">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_unknownfil" name="class_hierarchy_for_unknownfil">
-<area shape="rect" id="node1" href="apiclient.errors.Error-class.html" title="Error" alt="" coords="68,123,119,151"/>
-<area shape="rect" id="node2" href="apiclient.errors.UnknownFileType-class.html" title="UnknownFileType" alt="" coords="205,6,331,34"/>
-<area shape="rect" id="node3" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
-<area shape="rect" id="node4" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
+<center> <map id="uml_class_diagram_for_apiclien_17" name="uml_class_diagram_for_apiclien_17">
+<area shape="rect" id="node1" href="apiclient.errors.UnknownFileType-class.html" title="File type unknown or unexpected." alt="" coords="31,443,161,487"/>
+<area shape="rect" id="node2" href="apiclient.errors.Error-class.html" title="Base error for this module." alt="" coords="68,379,121,423"/>
+<area shape="rect" id="node56" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="17,31,175,49"/>
+<area shape="rect" id="node56" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="17,49,175,68"/>
+<area shape="rect" id="node56" href="javascript:void(0);" title="x.__delattr__('name') <==> del x.name" alt="" coords="17,71,175,89"/>
+<area shape="rect" id="node56" href="javascript:void(0);" title="x.__getattribute__('name') <==> x.name" alt="" coords="17,89,175,108"/>
+<area shape="rect" id="node56" href="javascript:void(0);" title="x[y]" alt="" coords="17,108,175,127"/>
+<area shape="rect" id="node56" href="javascript:void(0);" title="x[i:j]" alt="" coords="17,127,175,145"/>
+<area shape="rect" id="node56" href="javascript:void(0);" title="helper for pickle" alt="" coords="17,145,175,164"/>
+<area shape="rect" id="node56" href="javascript:void(0);" title="repr(x)" alt="" coords="17,164,175,183"/>
+<area shape="rect" id="node56" href="javascript:void(0);" title="x.__setattr__('name', value) <==> x.name = value" alt="" coords="17,183,175,201"/>
+<area shape="rect" id="node56" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="17,201,175,220"/>
+<area shape="rect" id="node56" href="javascript:void(0);" title="str(x)" alt="" coords="17,220,175,239"/>
+<area shape="rect" id="node56" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="17,239,175,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,6,187,263"/>
+<area shape="rect" id="node55" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="32,316,159,335"/>
+<area shape="rect" id="node55" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="32,335,159,353"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all non-exit exceptions." alt="" coords="20,283,169,359"/>
</map>
- <img src="class_hierarchy_for_unknownfil.gif" alt='' usemap="#class_hierarchy_for_unknownfil" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_apiclien_17.gif" alt='' usemap="#uml_class_diagram_for_apiclien_17" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -167,7 +181,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:23 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:43 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.errors.UnknownLinkType-class.html b/docs/epy/apiclient.errors.UnknownLinkType-class.html
index 0243625..6ccfc53 100644
--- a/docs/epy/apiclient.errors.UnknownLinkType-class.html
+++ b/docs/epy/apiclient.errors.UnknownLinkType-class.html
@@ -55,13 +55,27 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class UnknownLinkType</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.errors-pysrc.html#UnknownLinkType">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_unknownlin" name="class_hierarchy_for_unknownlin">
-<area shape="rect" id="node1" href="apiclient.errors.Error-class.html" title="Error" alt="" coords="68,123,119,151"/>
-<area shape="rect" id="node2" href="apiclient.errors.UnknownLinkType-class.html" title="UnknownLinkType" alt="" coords="205,6,336,34"/>
-<area shape="rect" id="node3" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
-<area shape="rect" id="node4" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
+<center> <map id="uml_class_diagram_for_apiclien_18" name="uml_class_diagram_for_apiclien_18">
+<area shape="rect" id="node1" href="apiclient.errors.UnknownLinkType-class.html" title="Link type unknown or unexpected." alt="" coords="28,443,161,487"/>
+<area shape="rect" id="node2" href="apiclient.errors.Error-class.html" title="Base error for this module." alt="" coords="68,379,121,423"/>
+<area shape="rect" id="node60" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="17,31,175,49"/>
+<area shape="rect" id="node60" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="17,49,175,68"/>
+<area shape="rect" id="node60" href="javascript:void(0);" title="x.__delattr__('name') <==> del x.name" alt="" coords="17,71,175,89"/>
+<area shape="rect" id="node60" href="javascript:void(0);" title="x.__getattribute__('name') <==> x.name" alt="" coords="17,89,175,108"/>
+<area shape="rect" id="node60" href="javascript:void(0);" title="x[y]" alt="" coords="17,108,175,127"/>
+<area shape="rect" id="node60" href="javascript:void(0);" title="x[i:j]" alt="" coords="17,127,175,145"/>
+<area shape="rect" id="node60" href="javascript:void(0);" title="helper for pickle" alt="" coords="17,145,175,164"/>
+<area shape="rect" id="node60" href="javascript:void(0);" title="repr(x)" alt="" coords="17,164,175,183"/>
+<area shape="rect" id="node60" href="javascript:void(0);" title="x.__setattr__('name', value) <==> x.name = value" alt="" coords="17,183,175,201"/>
+<area shape="rect" id="node60" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="17,201,175,220"/>
+<area shape="rect" id="node60" href="javascript:void(0);" title="str(x)" alt="" coords="17,220,175,239"/>
+<area shape="rect" id="node60" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="17,239,175,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,6,187,263"/>
+<area shape="rect" id="node59" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="32,316,159,335"/>
+<area shape="rect" id="node59" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="32,335,159,353"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all non-exit exceptions." alt="" coords="20,283,169,359"/>
</map>
- <img src="class_hierarchy_for_unknownlin.gif" alt='' usemap="#class_hierarchy_for_unknownlin" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_apiclien_18.gif" alt='' usemap="#uml_class_diagram_for_apiclien_18" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -167,7 +181,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:23 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:43 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.http-module.html b/docs/epy/apiclient.http-module.html
index 007c012..afce32a 100644
--- a/docs/epy/apiclient.http-module.html
+++ b/docs/epy/apiclient.http-module.html
@@ -399,7 +399,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:23 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:42 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.http-pysrc.html b/docs/epy/apiclient.http-pysrc.html
index ad4b775..53529da 100644
--- a/docs/epy/apiclient.http-pysrc.html
+++ b/docs/epy/apiclient.http-pysrc.html
@@ -81,228 +81,231 @@
<a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">copy</tt> </tt>
<a name="L27"></a><tt class="py-lineno"> 27</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">gzip</tt> </tt>
<a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">httplib2</tt> </tt>
-<a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Module apiclient.mimeparse=apiclient.mimeparse-module.html"><a title="apiclient.mimeparse" class="py-name" href="#" onclick="return doclink('link-0', 'mimeparse', 'link-0');">mimeparse</a></tt> </tt>
-<a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">mimetypes</tt> </tt>
-<a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">os</tt> </tt>
-<a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sys</tt> </tt>
-<a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">urllib</tt> </tt>
-<a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">urlparse</tt> </tt>
-<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">uuid</tt> </tt>
-<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"> </tt>
-<a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">email</tt><tt class="py-op">.</tt><tt class="py-name">generator</tt> <tt class="py-keyword">import</tt> <tt class="py-name">Generator</tt> </tt>
-<a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">email</tt><tt class="py-op">.</tt><tt class="py-name">mime</tt><tt class="py-op">.</tt><tt class="py-name">multipart</tt> <tt class="py-keyword">import</tt> <tt class="py-name">MIMEMultipart</tt> </tt>
-<a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">email</tt><tt class="py-op">.</tt><tt class="py-name">mime</tt><tt class="py-op">.</tt><tt class="py-name">nonmultipart</tt> <tt class="py-keyword">import</tt> <tt class="py-name">MIMENonMultipart</tt> </tt>
-<a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">email</tt><tt class="py-op">.</tt><tt class="py-name">parser</tt> <tt class="py-keyword">import</tt> <tt class="py-name">FeedParser</tt> </tt>
-<a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-1" class="py-name" targets="Module apiclient.errors=apiclient.errors-module.html"><a title="apiclient.errors" class="py-name" href="#" onclick="return doclink('link-1', 'errors', 'link-1');">errors</a></tt> <tt class="py-keyword">import</tt> <tt id="link-2" class="py-name" targets="Class apiclient.errors.BatchError=apiclient.errors.BatchError-class.html"><a title="apiclient.errors.BatchError" class="py-name" href="#" onclick="return doclink('link-2', 'BatchError', 'link-2');">BatchError</a></tt> </tt>
-<a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-3" class="py-name"><a title="apiclient.errors" class="py-name" href="#" onclick="return doclink('link-3', 'errors', 'link-1');">errors</a></tt> <tt class="py-keyword">import</tt> <tt id="link-4" class="py-name" targets="Class apiclient.errors.HttpError=apiclient.errors.HttpError-class.html"><a title="apiclient.errors.HttpError" class="py-name" href="#" onclick="return doclink('link-4', 'HttpError', 'link-4');">HttpError</a></tt> </tt>
-<a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-5" class="py-name"><a title="apiclient.errors" class="py-name" href="#" onclick="return doclink('link-5', 'errors', 'link-1');">errors</a></tt> <tt class="py-keyword">import</tt> <tt id="link-6" class="py-name" targets="Class apiclient.errors.InvalidChunkSizeError=apiclient.errors.InvalidChunkSizeError-class.html"><a title="apiclient.errors.InvalidChunkSizeError" class="py-name" href="#" onclick="return doclink('link-6', 'InvalidChunkSizeError', 'link-6');">InvalidChunkSizeError</a></tt> </tt>
-<a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-7" class="py-name"><a title="apiclient.errors" class="py-name" href="#" onclick="return doclink('link-7', 'errors', 'link-1');">errors</a></tt> <tt class="py-keyword">import</tt> <tt id="link-8" class="py-name" targets="Class apiclient.errors.ResumableUploadError=apiclient.errors.ResumableUploadError-class.html"><a title="apiclient.errors.ResumableUploadError" class="py-name" href="#" onclick="return doclink('link-8', 'ResumableUploadError', 'link-8');">ResumableUploadError</a></tt> </tt>
-<a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-9" class="py-name"><a title="apiclient.errors" class="py-name" href="#" onclick="return doclink('link-9', 'errors', 'link-1');">errors</a></tt> <tt class="py-keyword">import</tt> <tt id="link-10" class="py-name" targets="Class apiclient.errors.UnexpectedBodyError=apiclient.errors.UnexpectedBodyError-class.html"><a title="apiclient.errors.UnexpectedBodyError" class="py-name" href="#" onclick="return doclink('link-10', 'UnexpectedBodyError', 'link-10');">UnexpectedBodyError</a></tt> </tt>
-<a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-11" class="py-name"><a title="apiclient.errors" class="py-name" href="#" onclick="return doclink('link-11', 'errors', 'link-1');">errors</a></tt> <tt class="py-keyword">import</tt> <tt id="link-12" class="py-name" targets="Class apiclient.errors.UnexpectedMethodError=apiclient.errors.UnexpectedMethodError-class.html"><a title="apiclient.errors.UnexpectedMethodError" class="py-name" href="#" onclick="return doclink('link-12', 'UnexpectedMethodError', 'link-12');">UnexpectedMethodError</a></tt> </tt>
-<a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-13" class="py-name" targets="Module apiclient.model=apiclient.model-module.html"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-13', 'model', 'link-13');">model</a></tt> <tt class="py-keyword">import</tt> <tt id="link-14" class="py-name" targets="Class apiclient.model.JsonModel=apiclient.model.JsonModel-class.html"><a title="apiclient.model.JsonModel" class="py-name" href="#" onclick="return doclink('link-14', 'JsonModel', 'link-14');">JsonModel</a></tt> </tt>
-<a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-15" class="py-name" targets="Package oauth2client=oauth2client-module.html"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-15', 'oauth2client', 'link-15');">oauth2client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-16" class="py-name" targets="Module oauth2client.util=oauth2client.util-module.html"><a title="oauth2client.util" class="py-name" href="#" onclick="return doclink('link-16', 'util', 'link-16');">util</a></tt> </tt>
-<a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-17" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-17', 'oauth2client', 'link-15');">oauth2client</a></tt><tt class="py-op">.</tt><tt id="link-18" class="py-name" targets="Module oauth2client.anyjson=oauth2client.anyjson-module.html"><a title="oauth2client.anyjson" class="py-name" href="#" onclick="return doclink('link-18', 'anyjson', 'link-18');">anyjson</a></tt> <tt class="py-keyword">import</tt> <tt class="py-name">simplejson</tt> </tt>
-<a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"> </tt>
-<a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"> </tt>
-<a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"><tt id="link-19" class="py-name" targets="Variable apiclient.http.DEFAULT_CHUNK_SIZE=apiclient.http-module.html#DEFAULT_CHUNK_SIZE"><a title="apiclient.http.DEFAULT_CHUNK_SIZE" class="py-name" href="#" onclick="return doclink('link-19', 'DEFAULT_CHUNK_SIZE', 'link-19');">DEFAULT_CHUNK_SIZE</a></tt> <tt class="py-op">=</tt> <tt class="py-number">512</tt><tt class="py-op">*</tt><tt class="py-number">1024</tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt id="link-0" class="py-name" targets="Module apiclient.mimeparse=apiclient.mimeparse-module.html"><a title="apiclient.mimeparse" class="py-name" href="#" onclick="return doclink('link-0', 'mimeparse', 'link-0');">mimeparse</a></tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">mimetypes</tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">os</tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">random</tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sys</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">time</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">urllib</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">urlparse</tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">uuid</tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">email</tt><tt class="py-op">.</tt><tt class="py-name">generator</tt> <tt class="py-keyword">import</tt> <tt class="py-name">Generator</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">email</tt><tt class="py-op">.</tt><tt class="py-name">mime</tt><tt class="py-op">.</tt><tt class="py-name">multipart</tt> <tt class="py-keyword">import</tt> <tt class="py-name">MIMEMultipart</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">email</tt><tt class="py-op">.</tt><tt class="py-name">mime</tt><tt class="py-op">.</tt><tt class="py-name">nonmultipart</tt> <tt class="py-keyword">import</tt> <tt class="py-name">MIMENonMultipart</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">email</tt><tt class="py-op">.</tt><tt class="py-name">parser</tt> <tt class="py-keyword">import</tt> <tt class="py-name">FeedParser</tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-1" class="py-name" targets="Module apiclient.errors=apiclient.errors-module.html"><a title="apiclient.errors" class="py-name" href="#" onclick="return doclink('link-1', 'errors', 'link-1');">errors</a></tt> <tt class="py-keyword">import</tt> <tt id="link-2" class="py-name" targets="Class apiclient.errors.BatchError=apiclient.errors.BatchError-class.html"><a title="apiclient.errors.BatchError" class="py-name" href="#" onclick="return doclink('link-2', 'BatchError', 'link-2');">BatchError</a></tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-3" class="py-name"><a title="apiclient.errors" class="py-name" href="#" onclick="return doclink('link-3', 'errors', 'link-1');">errors</a></tt> <tt class="py-keyword">import</tt> <tt id="link-4" class="py-name" targets="Class apiclient.errors.HttpError=apiclient.errors.HttpError-class.html"><a title="apiclient.errors.HttpError" class="py-name" href="#" onclick="return doclink('link-4', 'HttpError', 'link-4');">HttpError</a></tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-5" class="py-name"><a title="apiclient.errors" class="py-name" href="#" onclick="return doclink('link-5', 'errors', 'link-1');">errors</a></tt> <tt class="py-keyword">import</tt> <tt id="link-6" class="py-name" targets="Class apiclient.errors.InvalidChunkSizeError=apiclient.errors.InvalidChunkSizeError-class.html"><a title="apiclient.errors.InvalidChunkSizeError" class="py-name" href="#" onclick="return doclink('link-6', 'InvalidChunkSizeError', 'link-6');">InvalidChunkSizeError</a></tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-7" class="py-name"><a title="apiclient.errors" class="py-name" href="#" onclick="return doclink('link-7', 'errors', 'link-1');">errors</a></tt> <tt class="py-keyword">import</tt> <tt id="link-8" class="py-name" targets="Class apiclient.errors.ResumableUploadError=apiclient.errors.ResumableUploadError-class.html"><a title="apiclient.errors.ResumableUploadError" class="py-name" href="#" onclick="return doclink('link-8', 'ResumableUploadError', 'link-8');">ResumableUploadError</a></tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-9" class="py-name"><a title="apiclient.errors" class="py-name" href="#" onclick="return doclink('link-9', 'errors', 'link-1');">errors</a></tt> <tt class="py-keyword">import</tt> <tt id="link-10" class="py-name" targets="Class apiclient.errors.UnexpectedBodyError=apiclient.errors.UnexpectedBodyError-class.html"><a title="apiclient.errors.UnexpectedBodyError" class="py-name" href="#" onclick="return doclink('link-10', 'UnexpectedBodyError', 'link-10');">UnexpectedBodyError</a></tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-11" class="py-name"><a title="apiclient.errors" class="py-name" href="#" onclick="return doclink('link-11', 'errors', 'link-1');">errors</a></tt> <tt class="py-keyword">import</tt> <tt id="link-12" class="py-name" targets="Class apiclient.errors.UnexpectedMethodError=apiclient.errors.UnexpectedMethodError-class.html"><a title="apiclient.errors.UnexpectedMethodError" class="py-name" href="#" onclick="return doclink('link-12', 'UnexpectedMethodError', 'link-12');">UnexpectedMethodError</a></tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-13" class="py-name" targets="Module apiclient.model=apiclient.model-module.html"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-13', 'model', 'link-13');">model</a></tt> <tt class="py-keyword">import</tt> <tt id="link-14" class="py-name" targets="Class apiclient.model.JsonModel=apiclient.model.JsonModel-class.html"><a title="apiclient.model.JsonModel" class="py-name" href="#" onclick="return doclink('link-14', 'JsonModel', 'link-14');">JsonModel</a></tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-15" class="py-name" targets="Package oauth2client=oauth2client-module.html"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-15', 'oauth2client', 'link-15');">oauth2client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-16" class="py-name" targets="Module oauth2client.util=oauth2client.util-module.html"><a title="oauth2client.util" class="py-name" href="#" onclick="return doclink('link-16', 'util', 'link-16');">util</a></tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-17" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-17', 'oauth2client', 'link-15');">oauth2client</a></tt><tt class="py-op">.</tt><tt id="link-18" class="py-name" targets="Module oauth2client.anyjson=oauth2client.anyjson-module.html"><a title="oauth2client.anyjson" class="py-name" href="#" onclick="return doclink('link-18', 'anyjson', 'link-18');">anyjson</a></tt> <tt class="py-keyword">import</tt> <tt class="py-name">simplejson</tt> </tt>
<a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"> </tt>
-<a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"><tt id="link-20" class="py-name" targets="Variable apiclient.http.MAX_URI_LENGTH=apiclient.http-module.html#MAX_URI_LENGTH"><a title="apiclient.http.MAX_URI_LENGTH" class="py-name" href="#" onclick="return doclink('link-20', 'MAX_URI_LENGTH', 'link-20');">MAX_URI_LENGTH</a></tt> <tt class="py-op">=</tt> <tt class="py-number">2048</tt> </tt>
-<a name="MediaUploadProgress"></a><div id="MediaUploadProgress-def"><a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"><tt id="link-19" class="py-name" targets="Variable apiclient.http.DEFAULT_CHUNK_SIZE=apiclient.http-module.html#DEFAULT_CHUNK_SIZE"><a title="apiclient.http.DEFAULT_CHUNK_SIZE" class="py-name" href="#" onclick="return doclink('link-19', 'DEFAULT_CHUNK_SIZE', 'link-19');">DEFAULT_CHUNK_SIZE</a></tt> <tt class="py-op">=</tt> <tt class="py-number">512</tt><tt class="py-op">*</tt><tt class="py-number">1024</tt> </tt>
<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"> </tt>
-<a name="L57"></a><tt class="py-lineno"> 57</tt> <a class="py-toggle" href="#" id="MediaUploadProgress-toggle" onclick="return toggle('MediaUploadProgress');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.http.MediaUploadProgress-class.html">MediaUploadProgress</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="MediaUploadProgress-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="MediaUploadProgress-expanded"><a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"> <tt class="py-docstring">"""Status of a resumable upload."""</tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"><tt id="link-20" class="py-name" targets="Variable apiclient.http.MAX_URI_LENGTH=apiclient.http-module.html#MAX_URI_LENGTH"><a title="apiclient.http.MAX_URI_LENGTH" class="py-name" href="#" onclick="return doclink('link-20', 'MAX_URI_LENGTH', 'link-20');">MAX_URI_LENGTH</a></tt> <tt class="py-op">=</tt> <tt class="py-number">2048</tt> </tt>
+<a name="MediaUploadProgress"></a><div id="MediaUploadProgress-def"><a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"> </tt>
<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"> </tt>
-<a name="MediaUploadProgress.__init__"></a><div id="MediaUploadProgress.__init__-def"><a name="L60"></a><tt class="py-lineno"> 60</tt> <a class="py-toggle" href="#" id="MediaUploadProgress.__init__-toggle" onclick="return toggle('MediaUploadProgress.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaUploadProgress-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">resumable_progress</tt><tt class="py-op">,</tt> <tt class="py-param">total_size</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="MediaUploadProgress.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaUploadProgress.__init__-expanded"><a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"> <tt class="py-docstring">"""Constructor.</tt> </tt>
-<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"><tt class="py-docstring"> resumable_progress: int, bytes sent so far.</tt> </tt>
-<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"><tt class="py-docstring"> total_size: int, total bytes in complete upload, or None if the total</tt> </tt>
-<a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"><tt class="py-docstring"> upload size isn't known ahead of time.</tt> </tt>
-<a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt> <tt class="py-op">=</tt> <tt class="py-name">resumable_progress</tt> </tt>
-<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">total_size</tt> <tt class="py-op">=</tt> <tt class="py-name">total_size</tt> </tt>
-</div><a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"> </tt>
-<a name="MediaUploadProgress.progress"></a><div id="MediaUploadProgress.progress-def"><a name="L71"></a><tt class="py-lineno"> 71</tt> <a class="py-toggle" href="#" id="MediaUploadProgress.progress-toggle" onclick="return toggle('MediaUploadProgress.progress');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaUploadProgress-class.html#progress">progress</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="MediaUploadProgress.progress-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaUploadProgress.progress-expanded"><a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"> <tt class="py-docstring">"""Percent of upload completed, as a float.</tt> </tt>
-<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"><tt class="py-docstring"> the percentage complete as a float, returning 0.0 if the total size of</tt> </tt>
-<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"><tt class="py-docstring"> the upload is unknown.</tt> </tt>
-<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">total_size</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">float</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt><tt class="py-op">)</tt> <tt class="py-op">/</tt> <tt class="py-name">float</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">total_size</tt><tt class="py-op">)</tt> </tt>
-<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-number">0.0</tt> </tt>
-</div></div><a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"> </tt>
-<a name="MediaDownloadProgress"></a><div id="MediaDownloadProgress-def"><a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"> </tt>
-<a name="L84"></a><tt class="py-lineno"> 84</tt> <a class="py-toggle" href="#" id="MediaDownloadProgress-toggle" onclick="return toggle('MediaDownloadProgress');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.http.MediaDownloadProgress-class.html">MediaDownloadProgress</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="MediaDownloadProgress-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="MediaDownloadProgress-expanded"><a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"> <tt class="py-docstring">"""Status of a resumable download."""</tt> </tt>
-<a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> </tt>
-<a name="MediaDownloadProgress.__init__"></a><div id="MediaDownloadProgress.__init__-def"><a name="L87"></a><tt class="py-lineno"> 87</tt> <a class="py-toggle" href="#" id="MediaDownloadProgress.__init__-toggle" onclick="return toggle('MediaDownloadProgress.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaDownloadProgress-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">resumable_progress</tt><tt class="py-op">,</tt> <tt class="py-param">total_size</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="MediaDownloadProgress.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaDownloadProgress.__init__-expanded"><a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"> <tt class="py-docstring">"""Constructor.</tt> </tt>
-<a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"><tt class="py-docstring"> resumable_progress: int, bytes received so far.</tt> </tt>
-<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"><tt class="py-docstring"> total_size: int, total bytes in complete download.</tt> </tt>
-<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt> <tt class="py-op">=</tt> <tt class="py-name">resumable_progress</tt> </tt>
-<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">total_size</tt> <tt class="py-op">=</tt> <tt class="py-name">total_size</tt> </tt>
-</div><a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"> </tt>
-<a name="MediaDownloadProgress.progress"></a><div id="MediaDownloadProgress.progress-def"><a name="L97"></a><tt class="py-lineno"> 97</tt> <a class="py-toggle" href="#" id="MediaDownloadProgress.progress-toggle" onclick="return toggle('MediaDownloadProgress.progress');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaDownloadProgress-class.html#progress">progress</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="MediaDownloadProgress.progress-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaDownloadProgress.progress-expanded"><a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"> <tt class="py-docstring">"""Percent of download completed, as a float.</tt> </tt>
-<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L100"></a><tt class="py-lineno"> 100</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L101"></a><tt class="py-lineno"> 101</tt> <tt class="py-line"><tt class="py-docstring"> the percentage complete as a float, returning 0.0 if the total size of</tt> </tt>
-<a name="L102"></a><tt class="py-lineno"> 102</tt> <tt class="py-line"><tt class="py-docstring"> the download is unknown.</tt> </tt>
-<a name="L103"></a><tt class="py-lineno"> 103</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L104"></a><tt class="py-lineno"> 104</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">total_size</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L105"></a><tt class="py-lineno"> 105</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">float</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt><tt class="py-op">)</tt> <tt class="py-op">/</tt> <tt class="py-name">float</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">total_size</tt><tt class="py-op">)</tt> </tt>
-<a name="L106"></a><tt class="py-lineno"> 106</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L107"></a><tt class="py-lineno"> 107</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-number">0.0</tt> </tt>
-</div></div><a name="L108"></a><tt class="py-lineno"> 108</tt> <tt class="py-line"> </tt>
-<a name="MediaUpload"></a><div id="MediaUpload-def"><a name="L109"></a><tt class="py-lineno"> 109</tt> <tt class="py-line"> </tt>
-<a name="L110"></a><tt class="py-lineno"> 110</tt> <a class="py-toggle" href="#" id="MediaUpload-toggle" onclick="return toggle('MediaUpload');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.http.MediaUpload-class.html">MediaUpload</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="MediaUpload-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="MediaUpload-expanded"><a name="L111"></a><tt class="py-lineno"> 111</tt> <tt class="py-line"> <tt class="py-docstring">"""Describes a media object to upload.</tt> </tt>
-<a name="L112"></a><tt class="py-lineno"> 112</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L113"></a><tt class="py-lineno"> 113</tt> <tt class="py-line"><tt class="py-docstring"> Base class that defines the interface of MediaUpload subclasses.</tt> </tt>
-<a name="L114"></a><tt class="py-lineno"> 114</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L115"></a><tt class="py-lineno"> 115</tt> <tt class="py-line"><tt class="py-docstring"> Note that subclasses of MediaUpload may allow you to control the chunksize</tt> </tt>
-<a name="L116"></a><tt class="py-lineno"> 116</tt> <tt class="py-line"><tt class="py-docstring"> when uploading a media object. It is important to keep the size of the chunk</tt> </tt>
-<a name="L117"></a><tt class="py-lineno"> 117</tt> <tt class="py-line"><tt class="py-docstring"> as large as possible to keep the upload efficient. Other factors may influence</tt> </tt>
-<a name="L118"></a><tt class="py-lineno"> 118</tt> <tt class="py-line"><tt class="py-docstring"> the size of the chunk you use, particularly if you are working in an</tt> </tt>
-<a name="L119"></a><tt class="py-lineno"> 119</tt> <tt class="py-line"><tt class="py-docstring"> environment where individual HTTP requests may have a hardcoded time limit,</tt> </tt>
-<a name="L120"></a><tt class="py-lineno"> 120</tt> <tt class="py-line"><tt class="py-docstring"> such as under certain classes of requests under Google App Engine.</tt> </tt>
-<a name="L121"></a><tt class="py-lineno"> 121</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L122"></a><tt class="py-lineno"> 122</tt> <tt class="py-line"><tt class="py-docstring"> Streams are io.Base compatible objects that support seek(). Some MediaUpload</tt> </tt>
-<a name="L123"></a><tt class="py-lineno"> 123</tt> <tt class="py-line"><tt class="py-docstring"> subclasses support using streams directly to upload data. Support for</tt> </tt>
-<a name="L124"></a><tt class="py-lineno"> 124</tt> <tt class="py-line"><tt class="py-docstring"> streaming may be indicated by a MediaUpload sub-class and if appropriate for a</tt> </tt>
-<a name="L125"></a><tt class="py-lineno"> 125</tt> <tt class="py-line"><tt class="py-docstring"> platform that stream will be used for uploading the media object. The support</tt> </tt>
-<a name="L126"></a><tt class="py-lineno"> 126</tt> <tt class="py-line"><tt class="py-docstring"> for streaming is indicated by has_stream() returning True. The stream() method</tt> </tt>
-<a name="L127"></a><tt class="py-lineno"> 127</tt> <tt class="py-line"><tt class="py-docstring"> should return an io.Base object that supports seek(). On platforms where the</tt> </tt>
-<a name="L128"></a><tt class="py-lineno"> 128</tt> <tt class="py-line"><tt class="py-docstring"> underlying httplib module supports streaming, for example Python 2.6 and</tt> </tt>
-<a name="L129"></a><tt class="py-lineno"> 129</tt> <tt class="py-line"><tt class="py-docstring"> later, the stream will be passed into the http library which will result in</tt> </tt>
-<a name="L130"></a><tt class="py-lineno"> 130</tt> <tt class="py-line"><tt class="py-docstring"> less memory being used and possibly faster uploads.</tt> </tt>
-<a name="L131"></a><tt class="py-lineno"> 131</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L132"></a><tt class="py-lineno"> 132</tt> <tt class="py-line"><tt class="py-docstring"> If you need to upload media that can't be uploaded using any of the existing</tt> </tt>
-<a name="L133"></a><tt class="py-lineno"> 133</tt> <tt class="py-line"><tt class="py-docstring"> MediaUpload sub-class then you can sub-class MediaUpload for your particular</tt> </tt>
-<a name="L134"></a><tt class="py-lineno"> 134</tt> <tt class="py-line"><tt class="py-docstring"> needs.</tt> </tt>
-<a name="L135"></a><tt class="py-lineno"> 135</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L136"></a><tt class="py-lineno"> 136</tt> <tt class="py-line"> </tt>
-<a name="MediaUpload.chunksize"></a><div id="MediaUpload.chunksize-def"><a name="L137"></a><tt class="py-lineno"> 137</tt> <a class="py-toggle" href="#" id="MediaUpload.chunksize-toggle" onclick="return toggle('MediaUpload.chunksize');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaUpload-class.html#chunksize">chunksize</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="MediaUpload.chunksize-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaUpload.chunksize-expanded"><a name="L138"></a><tt class="py-lineno"> 138</tt> <tt class="py-line"> <tt class="py-docstring">"""Chunk size for resumable uploads.</tt> </tt>
-<a name="L139"></a><tt class="py-lineno"> 139</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L140"></a><tt class="py-lineno"> 140</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L141"></a><tt class="py-lineno"> 141</tt> <tt class="py-line"><tt class="py-docstring"> Chunk size in bytes.</tt> </tt>
-<a name="L142"></a><tt class="py-lineno"> 142</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L143"></a><tt class="py-lineno"> 143</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">NotImplementedError</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L144"></a><tt class="py-lineno"> 144</tt> <tt class="py-line"> </tt>
-<a name="MediaUpload.mimetype"></a><div id="MediaUpload.mimetype-def"><a name="L145"></a><tt class="py-lineno"> 145</tt> <a class="py-toggle" href="#" id="MediaUpload.mimetype-toggle" onclick="return toggle('MediaUpload.mimetype');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaUpload-class.html#mimetype">mimetype</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="MediaUpload.mimetype-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaUpload.mimetype-expanded"><a name="L146"></a><tt class="py-lineno"> 146</tt> <tt class="py-line"> <tt class="py-docstring">"""Mime type of the body.</tt> </tt>
-<a name="L147"></a><tt class="py-lineno"> 147</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L148"></a><tt class="py-lineno"> 148</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L149"></a><tt class="py-lineno"> 149</tt> <tt class="py-line"><tt class="py-docstring"> Mime type.</tt> </tt>
-<a name="L150"></a><tt class="py-lineno"> 150</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L151"></a><tt class="py-lineno"> 151</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">'application/octet-stream'</tt> </tt>
-</div><a name="L152"></a><tt class="py-lineno"> 152</tt> <tt class="py-line"> </tt>
-<a name="MediaUpload.size"></a><div id="MediaUpload.size-def"><a name="L153"></a><tt class="py-lineno"> 153</tt> <a class="py-toggle" href="#" id="MediaUpload.size-toggle" onclick="return toggle('MediaUpload.size');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaUpload-class.html#size">size</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="MediaUpload.size-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaUpload.size-expanded"><a name="L154"></a><tt class="py-lineno"> 154</tt> <tt class="py-line"> <tt class="py-docstring">"""Size of upload.</tt> </tt>
-<a name="L155"></a><tt class="py-lineno"> 155</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L156"></a><tt class="py-lineno"> 156</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L157"></a><tt class="py-lineno"> 157</tt> <tt class="py-line"><tt class="py-docstring"> Size of the body, or None of the size is unknown.</tt> </tt>
-<a name="L158"></a><tt class="py-lineno"> 158</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L159"></a><tt class="py-lineno"> 159</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
-</div><a name="L160"></a><tt class="py-lineno"> 160</tt> <tt class="py-line"> </tt>
-<a name="MediaUpload.resumable"></a><div id="MediaUpload.resumable-def"><a name="L161"></a><tt class="py-lineno"> 161</tt> <a class="py-toggle" href="#" id="MediaUpload.resumable-toggle" onclick="return toggle('MediaUpload.resumable');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaUpload-class.html#resumable">resumable</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="MediaUpload.resumable-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaUpload.resumable-expanded"><a name="L162"></a><tt class="py-lineno"> 162</tt> <tt class="py-line"> <tt class="py-docstring">"""Whether this upload is resumable.</tt> </tt>
-<a name="L163"></a><tt class="py-lineno"> 163</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L164"></a><tt class="py-lineno"> 164</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L165"></a><tt class="py-lineno"> 165</tt> <tt class="py-line"><tt class="py-docstring"> True if resumable upload or False.</tt> </tt>
-<a name="L166"></a><tt class="py-lineno"> 166</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L167"></a><tt class="py-lineno"> 167</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
-</div><a name="L168"></a><tt class="py-lineno"> 168</tt> <tt class="py-line"> </tt>
-<a name="MediaUpload.getbytes"></a><div id="MediaUpload.getbytes-def"><a name="L169"></a><tt class="py-lineno"> 169</tt> <a class="py-toggle" href="#" id="MediaUpload.getbytes-toggle" onclick="return toggle('MediaUpload.getbytes');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaUpload-class.html#getbytes">getbytes</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">begin</tt><tt class="py-op">,</tt> <tt class="py-param">end</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="MediaUpload.getbytes-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaUpload.getbytes-expanded"><a name="L170"></a><tt class="py-lineno"> 170</tt> <tt class="py-line"> <tt class="py-docstring">"""Get bytes from the media.</tt> </tt>
-<a name="L171"></a><tt class="py-lineno"> 171</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L172"></a><tt class="py-lineno"> 172</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L173"></a><tt class="py-lineno"> 173</tt> <tt class="py-line"><tt class="py-docstring"> begin: int, offset from beginning of file.</tt> </tt>
-<a name="L174"></a><tt class="py-lineno"> 174</tt> <tt class="py-line"><tt class="py-docstring"> length: int, number of bytes to read, starting at begin.</tt> </tt>
-<a name="L175"></a><tt class="py-lineno"> 175</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L176"></a><tt class="py-lineno"> 176</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L177"></a><tt class="py-lineno"> 177</tt> <tt class="py-line"><tt class="py-docstring"> A string of bytes read. May be shorter than length if EOF was reached</tt> </tt>
-<a name="L178"></a><tt class="py-lineno"> 178</tt> <tt class="py-line"><tt class="py-docstring"> first.</tt> </tt>
-<a name="L179"></a><tt class="py-lineno"> 179</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L180"></a><tt class="py-lineno"> 180</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">NotImplementedError</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L181"></a><tt class="py-lineno"> 181</tt> <tt class="py-line"> </tt>
-<a name="MediaUpload.has_stream"></a><div id="MediaUpload.has_stream-def"><a name="L182"></a><tt class="py-lineno"> 182</tt> <a class="py-toggle" href="#" id="MediaUpload.has_stream-toggle" onclick="return toggle('MediaUpload.has_stream');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaUpload-class.html#has_stream">has_stream</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="MediaUpload.has_stream-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaUpload.has_stream-expanded"><a name="L183"></a><tt class="py-lineno"> 183</tt> <tt class="py-line"> <tt class="py-docstring">"""Does the underlying upload support a streaming interface.</tt> </tt>
-<a name="L184"></a><tt class="py-lineno"> 184</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L185"></a><tt class="py-lineno"> 185</tt> <tt class="py-line"><tt class="py-docstring"> Streaming means it is an io.IOBase subclass that supports seek, i.e.</tt> </tt>
-<a name="L186"></a><tt class="py-lineno"> 186</tt> <tt class="py-line"><tt class="py-docstring"> seekable() returns True.</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt> <a class="py-toggle" href="#" id="MediaUploadProgress-toggle" onclick="return toggle('MediaUploadProgress');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.http.MediaUploadProgress-class.html">MediaUploadProgress</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="MediaUploadProgress-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="MediaUploadProgress-expanded"><a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"> <tt class="py-docstring">"""Status of a resumable upload."""</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"> </tt>
+<a name="MediaUploadProgress.__init__"></a><div id="MediaUploadProgress.__init__-def"><a name="L63"></a><tt class="py-lineno"> 63</tt> <a class="py-toggle" href="#" id="MediaUploadProgress.__init__-toggle" onclick="return toggle('MediaUploadProgress.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaUploadProgress-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">resumable_progress</tt><tt class="py-op">,</tt> <tt class="py-param">total_size</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="MediaUploadProgress.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaUploadProgress.__init__-expanded"><a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"> <tt class="py-docstring">"""Constructor.</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"><tt class="py-docstring"> resumable_progress: int, bytes sent so far.</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"><tt class="py-docstring"> total_size: int, total bytes in complete upload, or None if the total</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"><tt class="py-docstring"> upload size isn't known ahead of time.</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt> <tt class="py-op">=</tt> <tt class="py-name">resumable_progress</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">total_size</tt> <tt class="py-op">=</tt> <tt class="py-name">total_size</tt> </tt>
+</div><a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"> </tt>
+<a name="MediaUploadProgress.progress"></a><div id="MediaUploadProgress.progress-def"><a name="L74"></a><tt class="py-lineno"> 74</tt> <a class="py-toggle" href="#" id="MediaUploadProgress.progress-toggle" onclick="return toggle('MediaUploadProgress.progress');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaUploadProgress-class.html#progress">progress</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="MediaUploadProgress.progress-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaUploadProgress.progress-expanded"><a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"> <tt class="py-docstring">"""Percent of upload completed, as a float.</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"><tt class="py-docstring"> the percentage complete as a float, returning 0.0 if the total size of</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"><tt class="py-docstring"> the upload is unknown.</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">total_size</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">float</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt><tt class="py-op">)</tt> <tt class="py-op">/</tt> <tt class="py-name">float</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">total_size</tt><tt class="py-op">)</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-number">0.0</tt> </tt>
+</div></div><a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"> </tt>
+<a name="MediaDownloadProgress"></a><div id="MediaDownloadProgress-def"><a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt> <a class="py-toggle" href="#" id="MediaDownloadProgress-toggle" onclick="return toggle('MediaDownloadProgress');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.http.MediaDownloadProgress-class.html">MediaDownloadProgress</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="MediaDownloadProgress-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="MediaDownloadProgress-expanded"><a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"> <tt class="py-docstring">"""Status of a resumable download."""</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> </tt>
+<a name="MediaDownloadProgress.__init__"></a><div id="MediaDownloadProgress.__init__-def"><a name="L90"></a><tt class="py-lineno"> 90</tt> <a class="py-toggle" href="#" id="MediaDownloadProgress.__init__-toggle" onclick="return toggle('MediaDownloadProgress.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaDownloadProgress-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">resumable_progress</tt><tt class="py-op">,</tt> <tt class="py-param">total_size</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="MediaDownloadProgress.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaDownloadProgress.__init__-expanded"><a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"> <tt class="py-docstring">"""Constructor.</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"><tt class="py-docstring"> resumable_progress: int, bytes received so far.</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"><tt class="py-docstring"> total_size: int, total bytes in complete download.</tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt> <tt class="py-op">=</tt> <tt class="py-name">resumable_progress</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">total_size</tt> <tt class="py-op">=</tt> <tt class="py-name">total_size</tt> </tt>
+</div><a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"> </tt>
+<a name="MediaDownloadProgress.progress"></a><div id="MediaDownloadProgress.progress-def"><a name="L100"></a><tt class="py-lineno"> 100</tt> <a class="py-toggle" href="#" id="MediaDownloadProgress.progress-toggle" onclick="return toggle('MediaDownloadProgress.progress');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaDownloadProgress-class.html#progress">progress</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="MediaDownloadProgress.progress-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaDownloadProgress.progress-expanded"><a name="L101"></a><tt class="py-lineno"> 101</tt> <tt class="py-line"> <tt class="py-docstring">"""Percent of download completed, as a float.</tt> </tt>
+<a name="L102"></a><tt class="py-lineno"> 102</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L103"></a><tt class="py-lineno"> 103</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L104"></a><tt class="py-lineno"> 104</tt> <tt class="py-line"><tt class="py-docstring"> the percentage complete as a float, returning 0.0 if the total size of</tt> </tt>
+<a name="L105"></a><tt class="py-lineno"> 105</tt> <tt class="py-line"><tt class="py-docstring"> the download is unknown.</tt> </tt>
+<a name="L106"></a><tt class="py-lineno"> 106</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L107"></a><tt class="py-lineno"> 107</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">total_size</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L108"></a><tt class="py-lineno"> 108</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">float</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt><tt class="py-op">)</tt> <tt class="py-op">/</tt> <tt class="py-name">float</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">total_size</tt><tt class="py-op">)</tt> </tt>
+<a name="L109"></a><tt class="py-lineno"> 109</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L110"></a><tt class="py-lineno"> 110</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-number">0.0</tt> </tt>
+</div></div><a name="L111"></a><tt class="py-lineno"> 111</tt> <tt class="py-line"> </tt>
+<a name="MediaUpload"></a><div id="MediaUpload-def"><a name="L112"></a><tt class="py-lineno"> 112</tt> <tt class="py-line"> </tt>
+<a name="L113"></a><tt class="py-lineno"> 113</tt> <a class="py-toggle" href="#" id="MediaUpload-toggle" onclick="return toggle('MediaUpload');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.http.MediaUpload-class.html">MediaUpload</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="MediaUpload-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="MediaUpload-expanded"><a name="L114"></a><tt class="py-lineno"> 114</tt> <tt class="py-line"> <tt class="py-docstring">"""Describes a media object to upload.</tt> </tt>
+<a name="L115"></a><tt class="py-lineno"> 115</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L116"></a><tt class="py-lineno"> 116</tt> <tt class="py-line"><tt class="py-docstring"> Base class that defines the interface of MediaUpload subclasses.</tt> </tt>
+<a name="L117"></a><tt class="py-lineno"> 117</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L118"></a><tt class="py-lineno"> 118</tt> <tt class="py-line"><tt class="py-docstring"> Note that subclasses of MediaUpload may allow you to control the chunksize</tt> </tt>
+<a name="L119"></a><tt class="py-lineno"> 119</tt> <tt class="py-line"><tt class="py-docstring"> when uploading a media object. It is important to keep the size of the chunk</tt> </tt>
+<a name="L120"></a><tt class="py-lineno"> 120</tt> <tt class="py-line"><tt class="py-docstring"> as large as possible to keep the upload efficient. Other factors may influence</tt> </tt>
+<a name="L121"></a><tt class="py-lineno"> 121</tt> <tt class="py-line"><tt class="py-docstring"> the size of the chunk you use, particularly if you are working in an</tt> </tt>
+<a name="L122"></a><tt class="py-lineno"> 122</tt> <tt class="py-line"><tt class="py-docstring"> environment where individual HTTP requests may have a hardcoded time limit,</tt> </tt>
+<a name="L123"></a><tt class="py-lineno"> 123</tt> <tt class="py-line"><tt class="py-docstring"> such as under certain classes of requests under Google App Engine.</tt> </tt>
+<a name="L124"></a><tt class="py-lineno"> 124</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L125"></a><tt class="py-lineno"> 125</tt> <tt class="py-line"><tt class="py-docstring"> Streams are io.Base compatible objects that support seek(). Some MediaUpload</tt> </tt>
+<a name="L126"></a><tt class="py-lineno"> 126</tt> <tt class="py-line"><tt class="py-docstring"> subclasses support using streams directly to upload data. Support for</tt> </tt>
+<a name="L127"></a><tt class="py-lineno"> 127</tt> <tt class="py-line"><tt class="py-docstring"> streaming may be indicated by a MediaUpload sub-class and if appropriate for a</tt> </tt>
+<a name="L128"></a><tt class="py-lineno"> 128</tt> <tt class="py-line"><tt class="py-docstring"> platform that stream will be used for uploading the media object. The support</tt> </tt>
+<a name="L129"></a><tt class="py-lineno"> 129</tt> <tt class="py-line"><tt class="py-docstring"> for streaming is indicated by has_stream() returning True. The stream() method</tt> </tt>
+<a name="L130"></a><tt class="py-lineno"> 130</tt> <tt class="py-line"><tt class="py-docstring"> should return an io.Base object that supports seek(). On platforms where the</tt> </tt>
+<a name="L131"></a><tt class="py-lineno"> 131</tt> <tt class="py-line"><tt class="py-docstring"> underlying httplib module supports streaming, for example Python 2.6 and</tt> </tt>
+<a name="L132"></a><tt class="py-lineno"> 132</tt> <tt class="py-line"><tt class="py-docstring"> later, the stream will be passed into the http library which will result in</tt> </tt>
+<a name="L133"></a><tt class="py-lineno"> 133</tt> <tt class="py-line"><tt class="py-docstring"> less memory being used and possibly faster uploads.</tt> </tt>
+<a name="L134"></a><tt class="py-lineno"> 134</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L135"></a><tt class="py-lineno"> 135</tt> <tt class="py-line"><tt class="py-docstring"> If you need to upload media that can't be uploaded using any of the existing</tt> </tt>
+<a name="L136"></a><tt class="py-lineno"> 136</tt> <tt class="py-line"><tt class="py-docstring"> MediaUpload sub-class then you can sub-class MediaUpload for your particular</tt> </tt>
+<a name="L137"></a><tt class="py-lineno"> 137</tt> <tt class="py-line"><tt class="py-docstring"> needs.</tt> </tt>
+<a name="L138"></a><tt class="py-lineno"> 138</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L139"></a><tt class="py-lineno"> 139</tt> <tt class="py-line"> </tt>
+<a name="MediaUpload.chunksize"></a><div id="MediaUpload.chunksize-def"><a name="L140"></a><tt class="py-lineno"> 140</tt> <a class="py-toggle" href="#" id="MediaUpload.chunksize-toggle" onclick="return toggle('MediaUpload.chunksize');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaUpload-class.html#chunksize">chunksize</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="MediaUpload.chunksize-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaUpload.chunksize-expanded"><a name="L141"></a><tt class="py-lineno"> 141</tt> <tt class="py-line"> <tt class="py-docstring">"""Chunk size for resumable uploads.</tt> </tt>
+<a name="L142"></a><tt class="py-lineno"> 142</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L143"></a><tt class="py-lineno"> 143</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L144"></a><tt class="py-lineno"> 144</tt> <tt class="py-line"><tt class="py-docstring"> Chunk size in bytes.</tt> </tt>
+<a name="L145"></a><tt class="py-lineno"> 145</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L146"></a><tt class="py-lineno"> 146</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">NotImplementedError</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L147"></a><tt class="py-lineno"> 147</tt> <tt class="py-line"> </tt>
+<a name="MediaUpload.mimetype"></a><div id="MediaUpload.mimetype-def"><a name="L148"></a><tt class="py-lineno"> 148</tt> <a class="py-toggle" href="#" id="MediaUpload.mimetype-toggle" onclick="return toggle('MediaUpload.mimetype');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaUpload-class.html#mimetype">mimetype</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="MediaUpload.mimetype-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaUpload.mimetype-expanded"><a name="L149"></a><tt class="py-lineno"> 149</tt> <tt class="py-line"> <tt class="py-docstring">"""Mime type of the body.</tt> </tt>
+<a name="L150"></a><tt class="py-lineno"> 150</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L151"></a><tt class="py-lineno"> 151</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L152"></a><tt class="py-lineno"> 152</tt> <tt class="py-line"><tt class="py-docstring"> Mime type.</tt> </tt>
+<a name="L153"></a><tt class="py-lineno"> 153</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L154"></a><tt class="py-lineno"> 154</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">'application/octet-stream'</tt> </tt>
+</div><a name="L155"></a><tt class="py-lineno"> 155</tt> <tt class="py-line"> </tt>
+<a name="MediaUpload.size"></a><div id="MediaUpload.size-def"><a name="L156"></a><tt class="py-lineno"> 156</tt> <a class="py-toggle" href="#" id="MediaUpload.size-toggle" onclick="return toggle('MediaUpload.size');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaUpload-class.html#size">size</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="MediaUpload.size-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaUpload.size-expanded"><a name="L157"></a><tt class="py-lineno"> 157</tt> <tt class="py-line"> <tt class="py-docstring">"""Size of upload.</tt> </tt>
+<a name="L158"></a><tt class="py-lineno"> 158</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L159"></a><tt class="py-lineno"> 159</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L160"></a><tt class="py-lineno"> 160</tt> <tt class="py-line"><tt class="py-docstring"> Size of the body, or None of the size is unknown.</tt> </tt>
+<a name="L161"></a><tt class="py-lineno"> 161</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L162"></a><tt class="py-lineno"> 162</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L163"></a><tt class="py-lineno"> 163</tt> <tt class="py-line"> </tt>
+<a name="MediaUpload.resumable"></a><div id="MediaUpload.resumable-def"><a name="L164"></a><tt class="py-lineno"> 164</tt> <a class="py-toggle" href="#" id="MediaUpload.resumable-toggle" onclick="return toggle('MediaUpload.resumable');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaUpload-class.html#resumable">resumable</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="MediaUpload.resumable-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaUpload.resumable-expanded"><a name="L165"></a><tt class="py-lineno"> 165</tt> <tt class="py-line"> <tt class="py-docstring">"""Whether this upload is resumable.</tt> </tt>
+<a name="L166"></a><tt class="py-lineno"> 166</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L167"></a><tt class="py-lineno"> 167</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L168"></a><tt class="py-lineno"> 168</tt> <tt class="py-line"><tt class="py-docstring"> True if resumable upload or False.</tt> </tt>
+<a name="L169"></a><tt class="py-lineno"> 169</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L170"></a><tt class="py-lineno"> 170</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+</div><a name="L171"></a><tt class="py-lineno"> 171</tt> <tt class="py-line"> </tt>
+<a name="MediaUpload.getbytes"></a><div id="MediaUpload.getbytes-def"><a name="L172"></a><tt class="py-lineno"> 172</tt> <a class="py-toggle" href="#" id="MediaUpload.getbytes-toggle" onclick="return toggle('MediaUpload.getbytes');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaUpload-class.html#getbytes">getbytes</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">begin</tt><tt class="py-op">,</tt> <tt class="py-param">end</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="MediaUpload.getbytes-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaUpload.getbytes-expanded"><a name="L173"></a><tt class="py-lineno"> 173</tt> <tt class="py-line"> <tt class="py-docstring">"""Get bytes from the media.</tt> </tt>
+<a name="L174"></a><tt class="py-lineno"> 174</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L175"></a><tt class="py-lineno"> 175</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L176"></a><tt class="py-lineno"> 176</tt> <tt class="py-line"><tt class="py-docstring"> begin: int, offset from beginning of file.</tt> </tt>
+<a name="L177"></a><tt class="py-lineno"> 177</tt> <tt class="py-line"><tt class="py-docstring"> length: int, number of bytes to read, starting at begin.</tt> </tt>
+<a name="L178"></a><tt class="py-lineno"> 178</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L179"></a><tt class="py-lineno"> 179</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L180"></a><tt class="py-lineno"> 180</tt> <tt class="py-line"><tt class="py-docstring"> A string of bytes read. May be shorter than length if EOF was reached</tt> </tt>
+<a name="L181"></a><tt class="py-lineno"> 181</tt> <tt class="py-line"><tt class="py-docstring"> first.</tt> </tt>
+<a name="L182"></a><tt class="py-lineno"> 182</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L183"></a><tt class="py-lineno"> 183</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">NotImplementedError</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L184"></a><tt class="py-lineno"> 184</tt> <tt class="py-line"> </tt>
+<a name="MediaUpload.has_stream"></a><div id="MediaUpload.has_stream-def"><a name="L185"></a><tt class="py-lineno"> 185</tt> <a class="py-toggle" href="#" id="MediaUpload.has_stream-toggle" onclick="return toggle('MediaUpload.has_stream');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaUpload-class.html#has_stream">has_stream</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="MediaUpload.has_stream-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaUpload.has_stream-expanded"><a name="L186"></a><tt class="py-lineno"> 186</tt> <tt class="py-line"> <tt class="py-docstring">"""Does the underlying upload support a streaming interface.</tt> </tt>
<a name="L187"></a><tt class="py-lineno"> 187</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L188"></a><tt class="py-lineno"> 188</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L189"></a><tt class="py-lineno"> 189</tt> <tt class="py-line"><tt class="py-docstring"> True if the call to stream() will return an instance of a seekable io.Base</tt> </tt>
-<a name="L190"></a><tt class="py-lineno"> 190</tt> <tt class="py-line"><tt class="py-docstring"> subclass.</tt> </tt>
-<a name="L191"></a><tt class="py-lineno"> 191</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L192"></a><tt class="py-lineno"> 192</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
-</div><a name="L193"></a><tt class="py-lineno"> 193</tt> <tt class="py-line"> </tt>
-<a name="MediaUpload.stream"></a><div id="MediaUpload.stream-def"><a name="L194"></a><tt class="py-lineno"> 194</tt> <a class="py-toggle" href="#" id="MediaUpload.stream-toggle" onclick="return toggle('MediaUpload.stream');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaUpload-class.html#stream">stream</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="MediaUpload.stream-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaUpload.stream-expanded"><a name="L195"></a><tt class="py-lineno"> 195</tt> <tt class="py-line"> <tt class="py-docstring">"""A stream interface to the data being uploaded.</tt> </tt>
-<a name="L196"></a><tt class="py-lineno"> 196</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L197"></a><tt class="py-lineno"> 197</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L198"></a><tt class="py-lineno"> 198</tt> <tt class="py-line"><tt class="py-docstring"> The returned value is an io.IOBase subclass that supports seek, i.e.</tt> </tt>
-<a name="L199"></a><tt class="py-lineno"> 199</tt> <tt class="py-line"><tt class="py-docstring"> seekable() returns True.</tt> </tt>
-<a name="L200"></a><tt class="py-lineno"> 200</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L201"></a><tt class="py-lineno"> 201</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">NotImplementedError</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L202"></a><tt class="py-lineno"> 202</tt> <tt class="py-line"> </tt>
-<a name="L203"></a><tt class="py-lineno"> 203</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-21" class="py-name" targets="Function oauth2client.util.positional()=oauth2client.util-module.html#positional"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-21', 'positional', 'link-21');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
-<a name="MediaUpload._to_json"></a><div id="MediaUpload._to_json-def"><a name="L204"></a><tt class="py-lineno"> 204</tt> <a class="py-toggle" href="#" id="MediaUpload._to_json-toggle" onclick="return toggle('MediaUpload._to_json');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaUpload-class.html#_to_json">_to_json</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">strip</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="MediaUpload._to_json-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaUpload._to_json-expanded"><a name="L205"></a><tt class="py-lineno"> 205</tt> <tt class="py-line"> <tt class="py-docstring">"""Utility function for creating a JSON representation of a MediaUpload.</tt> </tt>
-<a name="L206"></a><tt class="py-lineno"> 206</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L207"></a><tt class="py-lineno"> 207</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L208"></a><tt class="py-lineno"> 208</tt> <tt class="py-line"><tt class="py-docstring"> strip: array, An array of names of members to not include in the JSON.</tt> </tt>
+<a name="L188"></a><tt class="py-lineno"> 188</tt> <tt class="py-line"><tt class="py-docstring"> Streaming means it is an io.IOBase subclass that supports seek, i.e.</tt> </tt>
+<a name="L189"></a><tt class="py-lineno"> 189</tt> <tt class="py-line"><tt class="py-docstring"> seekable() returns True.</tt> </tt>
+<a name="L190"></a><tt class="py-lineno"> 190</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L191"></a><tt class="py-lineno"> 191</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L192"></a><tt class="py-lineno"> 192</tt> <tt class="py-line"><tt class="py-docstring"> True if the call to stream() will return an instance of a seekable io.Base</tt> </tt>
+<a name="L193"></a><tt class="py-lineno"> 193</tt> <tt class="py-line"><tt class="py-docstring"> subclass.</tt> </tt>
+<a name="L194"></a><tt class="py-lineno"> 194</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L195"></a><tt class="py-lineno"> 195</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+</div><a name="L196"></a><tt class="py-lineno"> 196</tt> <tt class="py-line"> </tt>
+<a name="MediaUpload.stream"></a><div id="MediaUpload.stream-def"><a name="L197"></a><tt class="py-lineno"> 197</tt> <a class="py-toggle" href="#" id="MediaUpload.stream-toggle" onclick="return toggle('MediaUpload.stream');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaUpload-class.html#stream">stream</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="MediaUpload.stream-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaUpload.stream-expanded"><a name="L198"></a><tt class="py-lineno"> 198</tt> <tt class="py-line"> <tt class="py-docstring">"""A stream interface to the data being uploaded.</tt> </tt>
+<a name="L199"></a><tt class="py-lineno"> 199</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L200"></a><tt class="py-lineno"> 200</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L201"></a><tt class="py-lineno"> 201</tt> <tt class="py-line"><tt class="py-docstring"> The returned value is an io.IOBase subclass that supports seek, i.e.</tt> </tt>
+<a name="L202"></a><tt class="py-lineno"> 202</tt> <tt class="py-line"><tt class="py-docstring"> seekable() returns True.</tt> </tt>
+<a name="L203"></a><tt class="py-lineno"> 203</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L204"></a><tt class="py-lineno"> 204</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">NotImplementedError</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L205"></a><tt class="py-lineno"> 205</tt> <tt class="py-line"> </tt>
+<a name="L206"></a><tt class="py-lineno"> 206</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-21" class="py-name" targets="Function oauth2client.util.positional()=oauth2client.util-module.html#positional"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-21', 'positional', 'link-21');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="MediaUpload._to_json"></a><div id="MediaUpload._to_json-def"><a name="L207"></a><tt class="py-lineno"> 207</tt> <a class="py-toggle" href="#" id="MediaUpload._to_json-toggle" onclick="return toggle('MediaUpload._to_json');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaUpload-class.html#_to_json">_to_json</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">strip</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="MediaUpload._to_json-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaUpload._to_json-expanded"><a name="L208"></a><tt class="py-lineno"> 208</tt> <tt class="py-line"> <tt class="py-docstring">"""Utility function for creating a JSON representation of a MediaUpload.</tt> </tt>
<a name="L209"></a><tt class="py-lineno"> 209</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L210"></a><tt class="py-lineno"> 210</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L211"></a><tt class="py-lineno"> 211</tt> <tt class="py-line"><tt class="py-docstring"> string, a JSON representation of this instance, suitable to pass to</tt> </tt>
-<a name="L212"></a><tt class="py-lineno"> 212</tt> <tt class="py-line"><tt class="py-docstring"> from_json().</tt> </tt>
-<a name="L213"></a><tt class="py-lineno"> 213</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L214"></a><tt class="py-lineno"> 214</tt> <tt class="py-line"> <tt class="py-name">t</tt> <tt class="py-op">=</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
-<a name="L215"></a><tt class="py-lineno"> 215</tt> <tt class="py-line"> <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt class="py-name">copy</tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">)</tt> </tt>
-<a name="L216"></a><tt class="py-lineno"> 216</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">strip</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L217"></a><tt class="py-lineno"> 217</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">member</tt> <tt class="py-keyword">in</tt> <tt class="py-name">strip</tt><tt class="py-op">:</tt> </tt>
-<a name="L218"></a><tt class="py-lineno"> 218</tt> <tt class="py-line"> <tt class="py-keyword">del</tt> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-name">member</tt><tt class="py-op">]</tt> </tt>
-<a name="L219"></a><tt class="py-lineno"> 219</tt> <tt class="py-line"> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'_class'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">t</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt> </tt>
-<a name="L220"></a><tt class="py-lineno"> 220</tt> <tt class="py-line"> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'_module'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">t</tt><tt class="py-op">.</tt><tt class="py-name">__module__</tt> </tt>
-<a name="L221"></a><tt class="py-lineno"> 221</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt class="py-name">dumps</tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L222"></a><tt class="py-lineno"> 222</tt> <tt class="py-line"> </tt>
-<a name="MediaUpload.to_json"></a><div id="MediaUpload.to_json-def"><a name="L223"></a><tt class="py-lineno"> 223</tt> <a class="py-toggle" href="#" id="MediaUpload.to_json-toggle" onclick="return toggle('MediaUpload.to_json');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaUpload-class.html#to_json">to_json</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="MediaUpload.to_json-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaUpload.to_json-expanded"><a name="L224"></a><tt class="py-lineno"> 224</tt> <tt class="py-line"> <tt class="py-docstring">"""Create a JSON representation of an instance of MediaUpload.</tt> </tt>
-<a name="L225"></a><tt class="py-lineno"> 225</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L226"></a><tt class="py-lineno"> 226</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L227"></a><tt class="py-lineno"> 227</tt> <tt class="py-line"><tt class="py-docstring"> string, a JSON representation of this instance, suitable to pass to</tt> </tt>
-<a name="L228"></a><tt class="py-lineno"> 228</tt> <tt class="py-line"><tt class="py-docstring"> from_json().</tt> </tt>
-<a name="L229"></a><tt class="py-lineno"> 229</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L230"></a><tt class="py-lineno"> 230</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-22" class="py-name" targets="Method apiclient.http.MediaUpload._to_json()=apiclient.http.MediaUpload-class.html#_to_json,Method oauth2client.client.Credentials._to_json()=oauth2client.client.Credentials-class.html#_to_json"><a title="apiclient.http.MediaUpload._to_json
+<a name="L210"></a><tt class="py-lineno"> 210</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L211"></a><tt class="py-lineno"> 211</tt> <tt class="py-line"><tt class="py-docstring"> strip: array, An array of names of members to not include in the JSON.</tt> </tt>
+<a name="L212"></a><tt class="py-lineno"> 212</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L213"></a><tt class="py-lineno"> 213</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L214"></a><tt class="py-lineno"> 214</tt> <tt class="py-line"><tt class="py-docstring"> string, a JSON representation of this instance, suitable to pass to</tt> </tt>
+<a name="L215"></a><tt class="py-lineno"> 215</tt> <tt class="py-line"><tt class="py-docstring"> from_json().</tt> </tt>
+<a name="L216"></a><tt class="py-lineno"> 216</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L217"></a><tt class="py-lineno"> 217</tt> <tt class="py-line"> <tt class="py-name">t</tt> <tt class="py-op">=</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L218"></a><tt class="py-lineno"> 218</tt> <tt class="py-line"> <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt class="py-name">copy</tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">)</tt> </tt>
+<a name="L219"></a><tt class="py-lineno"> 219</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">strip</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L220"></a><tt class="py-lineno"> 220</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">member</tt> <tt class="py-keyword">in</tt> <tt class="py-name">strip</tt><tt class="py-op">:</tt> </tt>
+<a name="L221"></a><tt class="py-lineno"> 221</tt> <tt class="py-line"> <tt class="py-keyword">del</tt> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-name">member</tt><tt class="py-op">]</tt> </tt>
+<a name="L222"></a><tt class="py-lineno"> 222</tt> <tt class="py-line"> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'_class'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">t</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt> </tt>
+<a name="L223"></a><tt class="py-lineno"> 223</tt> <tt class="py-line"> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'_module'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">t</tt><tt class="py-op">.</tt><tt class="py-name">__module__</tt> </tt>
+<a name="L224"></a><tt class="py-lineno"> 224</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt class="py-name">dumps</tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L225"></a><tt class="py-lineno"> 225</tt> <tt class="py-line"> </tt>
+<a name="MediaUpload.to_json"></a><div id="MediaUpload.to_json-def"><a name="L226"></a><tt class="py-lineno"> 226</tt> <a class="py-toggle" href="#" id="MediaUpload.to_json-toggle" onclick="return toggle('MediaUpload.to_json');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaUpload-class.html#to_json">to_json</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="MediaUpload.to_json-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaUpload.to_json-expanded"><a name="L227"></a><tt class="py-lineno"> 227</tt> <tt class="py-line"> <tt class="py-docstring">"""Create a JSON representation of an instance of MediaUpload.</tt> </tt>
+<a name="L228"></a><tt class="py-lineno"> 228</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L229"></a><tt class="py-lineno"> 229</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L230"></a><tt class="py-lineno"> 230</tt> <tt class="py-line"><tt class="py-docstring"> string, a JSON representation of this instance, suitable to pass to</tt> </tt>
+<a name="L231"></a><tt class="py-lineno"> 231</tt> <tt class="py-line"><tt class="py-docstring"> from_json().</tt> </tt>
+<a name="L232"></a><tt class="py-lineno"> 232</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L233"></a><tt class="py-lineno"> 233</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-22" class="py-name" targets="Method apiclient.http.MediaUpload._to_json()=apiclient.http.MediaUpload-class.html#_to_json,Method oauth2client.client.Credentials._to_json()=oauth2client.client.Credentials-class.html#_to_json"><a title="apiclient.http.MediaUpload._to_json
oauth2client.client.Credentials._to_json" class="py-name" href="#" onclick="return doclink('link-22', '_to_json', 'link-22');">_to_json</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L231"></a><tt class="py-lineno"> 231</tt> <tt class="py-line"> </tt>
-<a name="L232"></a><tt class="py-lineno"> 232</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">classmethod</tt> </tt>
-<a name="MediaUpload.new_from_json"></a><div id="MediaUpload.new_from_json-def"><a name="L233"></a><tt class="py-lineno"> 233</tt> <a class="py-toggle" href="#" id="MediaUpload.new_from_json-toggle" onclick="return toggle('MediaUpload.new_from_json');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaUpload-class.html#new_from_json">new_from_json</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">,</tt> <tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="MediaUpload.new_from_json-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaUpload.new_from_json-expanded"><a name="L234"></a><tt class="py-lineno"> 234</tt> <tt class="py-line"> <tt class="py-docstring">"""Utility class method to instantiate a MediaUpload subclass from a JSON</tt> </tt>
-<a name="L235"></a><tt class="py-lineno"> 235</tt> <tt class="py-line"><tt class="py-docstring"> representation produced by to_json().</tt> </tt>
-<a name="L236"></a><tt class="py-lineno"> 236</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L237"></a><tt class="py-lineno"> 237</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L238"></a><tt class="py-lineno"> 238</tt> <tt class="py-line"><tt class="py-docstring"> s: string, JSON from to_json().</tt> </tt>
+</div><a name="L234"></a><tt class="py-lineno"> 234</tt> <tt class="py-line"> </tt>
+<a name="L235"></a><tt class="py-lineno"> 235</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">classmethod</tt> </tt>
+<a name="MediaUpload.new_from_json"></a><div id="MediaUpload.new_from_json-def"><a name="L236"></a><tt class="py-lineno"> 236</tt> <a class="py-toggle" href="#" id="MediaUpload.new_from_json-toggle" onclick="return toggle('MediaUpload.new_from_json');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaUpload-class.html#new_from_json">new_from_json</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">,</tt> <tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="MediaUpload.new_from_json-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaUpload.new_from_json-expanded"><a name="L237"></a><tt class="py-lineno"> 237</tt> <tt class="py-line"> <tt class="py-docstring">"""Utility class method to instantiate a MediaUpload subclass from a JSON</tt> </tt>
+<a name="L238"></a><tt class="py-lineno"> 238</tt> <tt class="py-line"><tt class="py-docstring"> representation produced by to_json().</tt> </tt>
<a name="L239"></a><tt class="py-lineno"> 239</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L240"></a><tt class="py-lineno"> 240</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L241"></a><tt class="py-lineno"> 241</tt> <tt class="py-line"><tt class="py-docstring"> An instance of the subclass of MediaUpload that was serialized with</tt> </tt>
-<a name="L242"></a><tt class="py-lineno"> 242</tt> <tt class="py-line"><tt class="py-docstring"> to_json().</tt> </tt>
-<a name="L243"></a><tt class="py-lineno"> 243</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L244"></a><tt class="py-lineno"> 244</tt> <tt class="py-line"> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-23" class="py-name" targets="Function oauth2client.clientsecrets.loads()=oauth2client.clientsecrets-module.html#loads"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-23', 'loads', 'link-23');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
-<a name="L245"></a><tt class="py-lineno"> 245</tt> <tt class="py-line"> <tt class="py-comment"># Find and call the right classmethod from_json() to restore the object.</tt> </tt>
-<a name="L246"></a><tt class="py-lineno"> 246</tt> <tt class="py-line"> <tt class="py-name">module</tt> <tt class="py-op">=</tt> <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'_module'</tt><tt class="py-op">]</tt> </tt>
-<a name="L247"></a><tt class="py-lineno"> 247</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt class="py-name">__import__</tt><tt class="py-op">(</tt><tt class="py-name">module</tt><tt class="py-op">,</tt> <tt class="py-name">fromlist</tt><tt class="py-op">=</tt><tt class="py-name">module</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'.'</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L248"></a><tt class="py-lineno"> 248</tt> <tt class="py-line"> <tt class="py-name">kls</tt> <tt class="py-op">=</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">,</tt> <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'_class'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L249"></a><tt class="py-lineno"> 249</tt> <tt class="py-line"> <tt id="link-24" class="py-name" targets="Static Method apiclient.http.HttpRequest.from_json()=apiclient.http.HttpRequest-class.html#from_json,Static Method apiclient.http.MediaFileUpload.from_json()=apiclient.http.MediaFileUpload-class.html#from_json,Class Method oauth2client.appengine.AppAssertionCredentials.from_json()=oauth2client.appengine.AppAssertionCredentials-class.html#from_json,Class Method oauth2client.client.AccessTokenCredentials.from_json()=oauth2client.client.AccessTokenCredentials-class.html#from_json,Class Method oauth2client.client.Credentials.from_json()=oauth2client.client.Credentials-class.html#from_json,Class Method oauth2client.client.OAuth2Credentials.from_json()=oauth2client.client.OAuth2Credentials-class.html#from_json,Class Method oauth2client.client.SignedJwtAssertionCredentials.from_json()=oauth2client.client.SignedJwtAssertionCredentials-class.html#from_json,Class Method oauth2client.gce.AppAssertionCredentials.from_json()=oauth2client.gce.AppAssertionCredentials-class.html#from_json"><a title="apiclient.http.HttpRequest.from_json
+<a name="L240"></a><tt class="py-lineno"> 240</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L241"></a><tt class="py-lineno"> 241</tt> <tt class="py-line"><tt class="py-docstring"> s: string, JSON from to_json().</tt> </tt>
+<a name="L242"></a><tt class="py-lineno"> 242</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L243"></a><tt class="py-lineno"> 243</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L244"></a><tt class="py-lineno"> 244</tt> <tt class="py-line"><tt class="py-docstring"> An instance of the subclass of MediaUpload that was serialized with</tt> </tt>
+<a name="L245"></a><tt class="py-lineno"> 245</tt> <tt class="py-line"><tt class="py-docstring"> to_json().</tt> </tt>
+<a name="L246"></a><tt class="py-lineno"> 246</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L247"></a><tt class="py-lineno"> 247</tt> <tt class="py-line"> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-23" class="py-name" targets="Function oauth2client.clientsecrets.loads()=oauth2client.clientsecrets-module.html#loads"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-23', 'loads', 'link-23');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
+<a name="L248"></a><tt class="py-lineno"> 248</tt> <tt class="py-line"> <tt class="py-comment"># Find and call the right classmethod from_json() to restore the object.</tt> </tt>
+<a name="L249"></a><tt class="py-lineno"> 249</tt> <tt class="py-line"> <tt class="py-name">module</tt> <tt class="py-op">=</tt> <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'_module'</tt><tt class="py-op">]</tt> </tt>
+<a name="L250"></a><tt class="py-lineno"> 250</tt> <tt class="py-line"> <tt class="py-name">m</tt> <tt class="py-op">=</tt> <tt class="py-name">__import__</tt><tt class="py-op">(</tt><tt class="py-name">module</tt><tt class="py-op">,</tt> <tt class="py-name">fromlist</tt><tt class="py-op">=</tt><tt class="py-name">module</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'.'</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L251"></a><tt class="py-lineno"> 251</tt> <tt class="py-line"> <tt class="py-name">kls</tt> <tt class="py-op">=</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">m</tt><tt class="py-op">,</tt> <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'_class'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L252"></a><tt class="py-lineno"> 252</tt> <tt class="py-line"> <tt id="link-24" class="py-name" targets="Static Method apiclient.http.HttpRequest.from_json()=apiclient.http.HttpRequest-class.html#from_json,Static Method apiclient.http.MediaFileUpload.from_json()=apiclient.http.MediaFileUpload-class.html#from_json,Class Method oauth2client.appengine.AppAssertionCredentials.from_json()=oauth2client.appengine.AppAssertionCredentials-class.html#from_json,Class Method oauth2client.client.AccessTokenCredentials.from_json()=oauth2client.client.AccessTokenCredentials-class.html#from_json,Class Method oauth2client.client.Credentials.from_json()=oauth2client.client.Credentials-class.html#from_json,Class Method oauth2client.client.OAuth2Credentials.from_json()=oauth2client.client.OAuth2Credentials-class.html#from_json,Class Method oauth2client.client.SignedJwtAssertionCredentials.from_json()=oauth2client.client.SignedJwtAssertionCredentials-class.html#from_json,Class Method oauth2client.gce.AppAssertionCredentials.from_json()=oauth2client.gce.AppAssertionCredentials-class.html#from_json"><a title="apiclient.http.HttpRequest.from_json
apiclient.http.MediaFileUpload.from_json
oauth2client.appengine.AppAssertionCredentials.from_json
oauth2client.client.AccessTokenCredentials.from_json
@@ -310,7 +313,7 @@
oauth2client.client.OAuth2Credentials.from_json
oauth2client.client.SignedJwtAssertionCredentials.from_json
oauth2client.gce.AppAssertionCredentials.from_json" class="py-name" href="#" onclick="return doclink('link-24', 'from_json', 'link-24');">from_json</a></tt> <tt class="py-op">=</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">kls</tt><tt class="py-op">,</tt> <tt class="py-string">'from_json'</tt><tt class="py-op">)</tt> </tt>
-<a name="L250"></a><tt class="py-lineno"> 250</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-25" class="py-name"><a title="apiclient.http.HttpRequest.from_json
+<a name="L253"></a><tt class="py-lineno"> 253</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-25" class="py-name"><a title="apiclient.http.HttpRequest.from_json
apiclient.http.MediaFileUpload.from_json
oauth2client.appengine.AppAssertionCredentials.from_json
oauth2client.client.AccessTokenCredentials.from_json
@@ -318,51 +321,53 @@
oauth2client.client.OAuth2Credentials.from_json
oauth2client.client.SignedJwtAssertionCredentials.from_json
oauth2client.gce.AppAssertionCredentials.from_json" class="py-name" href="#" onclick="return doclink('link-25', 'from_json', 'link-24');">from_json</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L251"></a><tt class="py-lineno"> 251</tt> <tt class="py-line"> </tt>
-<a name="MediaIoBaseUpload"></a><div id="MediaIoBaseUpload-def"><a name="L252"></a><tt class="py-lineno"> 252</tt> <tt class="py-line"> </tt>
-<a name="L253"></a><tt class="py-lineno"> 253</tt> <a class="py-toggle" href="#" id="MediaIoBaseUpload-toggle" onclick="return toggle('MediaIoBaseUpload');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.http.MediaIoBaseUpload-class.html">MediaIoBaseUpload</a><tt class="py-op">(</tt><tt class="py-base-class">MediaUpload</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="MediaIoBaseUpload-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="MediaIoBaseUpload-expanded"><a name="L254"></a><tt class="py-lineno"> 254</tt> <tt class="py-line"> <tt class="py-docstring">"""A MediaUpload for a io.Base objects.</tt> </tt>
-<a name="L255"></a><tt class="py-lineno"> 255</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L256"></a><tt class="py-lineno"> 256</tt> <tt class="py-line"><tt class="py-docstring"> Note that the Python file object is compatible with io.Base and can be used</tt> </tt>
-<a name="L257"></a><tt class="py-lineno"> 257</tt> <tt class="py-line"><tt class="py-docstring"> with this class also.</tt> </tt>
+</div></div><a name="L254"></a><tt class="py-lineno"> 254</tt> <tt class="py-line"> </tt>
+<a name="MediaIoBaseUpload"></a><div id="MediaIoBaseUpload-def"><a name="L255"></a><tt class="py-lineno"> 255</tt> <tt class="py-line"> </tt>
+<a name="L256"></a><tt class="py-lineno"> 256</tt> <a class="py-toggle" href="#" id="MediaIoBaseUpload-toggle" onclick="return toggle('MediaIoBaseUpload');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.http.MediaIoBaseUpload-class.html">MediaIoBaseUpload</a><tt class="py-op">(</tt><tt class="py-base-class">MediaUpload</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="MediaIoBaseUpload-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="MediaIoBaseUpload-expanded"><a name="L257"></a><tt class="py-lineno"> 257</tt> <tt class="py-line"> <tt class="py-docstring">"""A MediaUpload for a io.Base objects.</tt> </tt>
<a name="L258"></a><tt class="py-lineno"> 258</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L259"></a><tt class="py-lineno"> 259</tt> <tt class="py-line"><tt class="py-docstring"> fh = io.BytesIO('...Some data to upload...')</tt> </tt>
-<a name="L260"></a><tt class="py-lineno"> 260</tt> <tt class="py-line"><tt class="py-docstring"> media = MediaIoBaseUpload(fh, mimetype='image/png',</tt> </tt>
-<a name="L261"></a><tt class="py-lineno"> 261</tt> <tt class="py-line"><tt class="py-docstring"> chunksize=1024*1024, resumable=True)</tt> </tt>
-<a name="L262"></a><tt class="py-lineno"> 262</tt> <tt class="py-line"><tt class="py-docstring"> farm.animals().insert(</tt> </tt>
-<a name="L263"></a><tt class="py-lineno"> 263</tt> <tt class="py-line"><tt class="py-docstring"> id='cow',</tt> </tt>
-<a name="L264"></a><tt class="py-lineno"> 264</tt> <tt class="py-line"><tt class="py-docstring"> name='cow.png',</tt> </tt>
-<a name="L265"></a><tt class="py-lineno"> 265</tt> <tt class="py-line"><tt class="py-docstring"> media_body=media).execute()</tt> </tt>
-<a name="L266"></a><tt class="py-lineno"> 266</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L267"></a><tt class="py-lineno"> 267</tt> <tt class="py-line"><tt class="py-docstring"> Depending on the platform you are working on, you may pass -1 as the</tt> </tt>
-<a name="L268"></a><tt class="py-lineno"> 268</tt> <tt class="py-line"><tt class="py-docstring"> chunksize, which indicates that the entire file should be uploaded in a single</tt> </tt>
-<a name="L269"></a><tt class="py-lineno"> 269</tt> <tt class="py-line"><tt class="py-docstring"> request. If the underlying platform supports streams, such as Python 2.6 or</tt> </tt>
-<a name="L270"></a><tt class="py-lineno"> 270</tt> <tt class="py-line"><tt class="py-docstring"> later, then this can be very efficient as it avoids multiple connections, and</tt> </tt>
-<a name="L271"></a><tt class="py-lineno"> 271</tt> <tt class="py-line"><tt class="py-docstring"> also avoids loading the entire file into memory before sending it. Note that</tt> </tt>
-<a name="L272"></a><tt class="py-lineno"> 272</tt> <tt class="py-line"><tt class="py-docstring"> Google App Engine has a 5MB limit on request size, so you should never set</tt> </tt>
-<a name="L273"></a><tt class="py-lineno"> 273</tt> <tt class="py-line"><tt class="py-docstring"> your chunksize larger than 5MB, or to -1.</tt> </tt>
-<a name="L274"></a><tt class="py-lineno"> 274</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L275"></a><tt class="py-lineno"> 275</tt> <tt class="py-line"> </tt>
-<a name="L276"></a><tt class="py-lineno"> 276</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-26', 'positional', 'link-21');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
-<a name="MediaIoBaseUpload.__init__"></a><div id="MediaIoBaseUpload.__init__-def"><a name="L277"></a><tt class="py-lineno"> 277</tt> <a class="py-toggle" href="#" id="MediaIoBaseUpload.__init__-toggle" onclick="return toggle('MediaIoBaseUpload.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaIoBaseUpload-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">fd</tt><tt class="py-op">,</tt> <tt class="py-param">mimetype</tt><tt class="py-op">,</tt> <tt class="py-param">chunksize</tt><tt class="py-op">=</tt><tt id="link-27" class="py-name"><a title="apiclient.http.DEFAULT_CHUNK_SIZE" class="py-name" href="#" onclick="return doclink('link-27', 'DEFAULT_CHUNK_SIZE', 'link-19');">DEFAULT_CHUNK_SIZE</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L278"></a><tt class="py-lineno"> 278</tt> <tt class="py-line"> <tt class="py-param">resumable</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="MediaIoBaseUpload.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaIoBaseUpload.__init__-expanded"><a name="L279"></a><tt class="py-lineno"> 279</tt> <tt class="py-line"> <tt class="py-docstring">"""Constructor.</tt> </tt>
-<a name="L280"></a><tt class="py-lineno"> 280</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L281"></a><tt class="py-lineno"> 281</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L282"></a><tt class="py-lineno"> 282</tt> <tt class="py-line"><tt class="py-docstring"> fd: io.Base or file object, The source of the bytes to upload. MUST be</tt> </tt>
-<a name="L283"></a><tt class="py-lineno"> 283</tt> <tt class="py-line"><tt class="py-docstring"> opened in blocking mode, do not use streams opened in non-blocking mode.</tt> </tt>
-<a name="L284"></a><tt class="py-lineno"> 284</tt> <tt class="py-line"><tt class="py-docstring"> The given stream must be seekable, that is, it must be able to call</tt> </tt>
-<a name="L285"></a><tt class="py-lineno"> 285</tt> <tt class="py-line"><tt class="py-docstring"> seek() on fd.</tt> </tt>
-<a name="L286"></a><tt class="py-lineno"> 286</tt> <tt class="py-line"><tt class="py-docstring"> mimetype: string, Mime-type of the file.</tt> </tt>
-<a name="L287"></a><tt class="py-lineno"> 287</tt> <tt class="py-line"><tt class="py-docstring"> chunksize: int, File will be uploaded in chunks of this many bytes. Only</tt> </tt>
-<a name="L288"></a><tt class="py-lineno"> 288</tt> <tt class="py-line"><tt class="py-docstring"> used if resumable=True. Pass in a value of -1 if the file is to be</tt> </tt>
-<a name="L289"></a><tt class="py-lineno"> 289</tt> <tt class="py-line"><tt class="py-docstring"> uploaded as a single chunk. Note that Google App Engine has a 5MB limit</tt> </tt>
-<a name="L290"></a><tt class="py-lineno"> 290</tt> <tt class="py-line"><tt class="py-docstring"> on request size, so you should never set your chunksize larger than 5MB,</tt> </tt>
-<a name="L291"></a><tt class="py-lineno"> 291</tt> <tt class="py-line"><tt class="py-docstring"> or to -1.</tt> </tt>
-<a name="L292"></a><tt class="py-lineno"> 292</tt> <tt class="py-line"><tt class="py-docstring"> resumable: bool, True if this is a resumable upload. False means upload</tt> </tt>
-<a name="L293"></a><tt class="py-lineno"> 293</tt> <tt class="py-line"><tt class="py-docstring"> in a single request.</tt> </tt>
-<a name="L294"></a><tt class="py-lineno"> 294</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L295"></a><tt class="py-lineno"> 295</tt> <tt class="py-line"> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-28" class="py-name" targets="Class apiclient.http.MediaIoBaseUpload=apiclient.http.MediaIoBaseUpload-class.html"><a title="apiclient.http.MediaIoBaseUpload" class="py-name" href="#" onclick="return doclink('link-28', 'MediaIoBaseUpload', 'link-28');">MediaIoBaseUpload</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-29" class="py-name" targets="Method apiclient.discovery.Resource.__init__()=apiclient.discovery.Resource-class.html#__init__,Method apiclient.discovery.ResourceMethodParameters.__init__()=apiclient.discovery.ResourceMethodParameters-class.html#__init__,Method apiclient.errors.BatchError.__init__()=apiclient.errors.BatchError-class.html#__init__,Method apiclient.errors.HttpError.__init__()=apiclient.errors.HttpError-class.html#__init__,Method apiclient.errors.UnexpectedBodyError.__init__()=apiclient.errors.UnexpectedBodyError-class.html#__init__,Method apiclient.errors.UnexpectedMethodError.__init__()=apiclient.errors.UnexpectedMethodError-class.html#__init__,Method apiclient.http.BatchHttpRequest.__init__()=apiclient.http.BatchHttpRequest-class.html#__init__,Method apiclient.http.HttpMock.__init__()=apiclient.http.HttpMock-class.html#__init__,Method apiclient.http.HttpMockSequence.__init__()=apiclient.http.HttpMockSequence-class.html#__init__,Method apiclient.http.HttpRequest.__init__()=apiclient.http.HttpRequest-class.html#__init__,Method apiclient.http.HttpRequestMock.__init__()=apiclient.http.HttpRequestMock-class.html#__init__,Method apiclient.http.MediaDownloadProgress.__init__()=apiclient.http.MediaDownloadProgress-class.html#__init__,Method apiclient.http.MediaFileUpload.__init__()=apiclient.http.MediaFileUpload-class.html#__init__,Method apiclient.http.MediaInMemoryUpload.__init__()=apiclient.http.MediaInMemoryUpload-class.html#__init__,Method apiclient.http.MediaIoBaseDownload.__init__()=apiclient.http.MediaIoBaseDownload-class.html#__init__,Method apiclient.http.MediaIoBaseUpload.__init__()=apiclient.http.MediaIoBaseUpload-class.html#__init__,Method apiclient.http.MediaUploadProgress.__init__()=apiclient.http.MediaUploadProgress-class.html#__init__,Method apiclient.http.RequestMockBuilder.__init__()=apiclient.http.RequestMockBuilder-class.html#__init__,Method apiclient.http._StreamSlice.__init__()=apiclient.http._StreamSlice-class.html#__init__,Method apiclient.model.JsonModel.__init__()=apiclient.model.JsonModel-class.html#__init__,Method apiclient.model.ProtocolBufferModel.__init__()=apiclient.model.ProtocolBufferModel-class.html#__init__,Method apiclient.push.Channel.__init__()=apiclient.push.Channel-class.html#__init__,Method apiclient.push.Headers.__init__()=apiclient.push.Headers-class.html#__init__,Method apiclient.push.Subscription.__init__()=apiclient.push.Subscription-class.html#__init__,Method apiclient.push.WebhookChannel.__init__()=apiclient.push.WebhookChannel-class.html#__init__,Method apiclient.schema.Schemas.__init__()=apiclient.schema.Schemas-class.html#__init__,Method apiclient.schema._SchemaToStruct.__init__()=apiclient.schema._SchemaToStruct-class.html#__init__,Method oauth2client.appengine.AppAssertionCredentials.__init__()=oauth2client.appengine.AppAssertionCredentials-class.html#__init__,Method oauth2client.appengine.OAuth2Decorator.__init__()=oauth2client.appengine.OAuth2Decorator-class.html#__init__,Method oauth2client.appengine.OAuth2DecoratorFromClientSecrets.__init__()=oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html#__init__,Method oauth2client.appengine.StorageByKeyName.__init__()=oauth2client.appengine.StorageByKeyName-class.html#__init__,Method oauth2client.client.AccessTokenCredentials.__init__()=oauth2client.client.AccessTokenCredentials-class.html#__init__,Method oauth2client.client.AssertionCredentials.__init__()=oauth2client.client.AssertionCredentials-class.html#__init__,Method oauth2client.client.MemoryCache.__init__()=oauth2client.client.MemoryCache-class.html#__init__,Method oauth2client.client.OAuth2Credentials.__init__()=oauth2client.client.OAuth2Credentials-class.html#__init__,Method oauth2client.client.OAuth2WebServerFlow.__init__()=oauth2client.client.OAuth2WebServerFlow-class.html#__init__,Method oauth2client.client.SignedJwtAssertionCredentials.__init__()=oauth2client.client.SignedJwtAssertionCredentials-class.html#__init__,Method oauth2client.django_orm.CredentialsField.__init__()=oauth2client.django_orm.CredentialsField-class.html#__init__,Method oauth2client.django_orm.FlowField.__init__()=oauth2client.django_orm.FlowField-class.html#__init__,Method oauth2client.django_orm.Storage.__init__()=oauth2client.django_orm.Storage-class.html#__init__,Method oauth2client.file.Storage.__init__()=oauth2client.file.Storage-class.html#__init__,Method oauth2client.gce.AppAssertionCredentials.__init__()=oauth2client.gce.AppAssertionCredentials-class.html#__init__,Method oauth2client.keyring_storage.Storage.__init__()=oauth2client.keyring_storage.Storage-class.html#__init__,Method oauth2client.locked_file.LockedFile.__init__()=oauth2client.locked_file.LockedFile-class.html#__init__,Method oauth2client.locked_file._Opener.__init__()=oauth2client.locked_file._Opener-class.html#__init__,Method oauth2client.multistore_file._MultiStore._Storage.__init__()=oauth2client.multistore_file._MultiStore._Storage-class.html#__init__,Method oauth2client.multistore_file._MultiStore.__init__()=oauth2client.multistore_file._MultiStore-class.html#__init__"><a title="apiclient.discovery.Resource.__init__
+<a name="L259"></a><tt class="py-lineno"> 259</tt> <tt class="py-line"><tt class="py-docstring"> Note that the Python file object is compatible with io.Base and can be used</tt> </tt>
+<a name="L260"></a><tt class="py-lineno"> 260</tt> <tt class="py-line"><tt class="py-docstring"> with this class also.</tt> </tt>
+<a name="L261"></a><tt class="py-lineno"> 261</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L262"></a><tt class="py-lineno"> 262</tt> <tt class="py-line"><tt class="py-docstring"> fh = io.BytesIO('...Some data to upload...')</tt> </tt>
+<a name="L263"></a><tt class="py-lineno"> 263</tt> <tt class="py-line"><tt class="py-docstring"> media = MediaIoBaseUpload(fh, mimetype='image/png',</tt> </tt>
+<a name="L264"></a><tt class="py-lineno"> 264</tt> <tt class="py-line"><tt class="py-docstring"> chunksize=1024*1024, resumable=True)</tt> </tt>
+<a name="L265"></a><tt class="py-lineno"> 265</tt> <tt class="py-line"><tt class="py-docstring"> farm.animals().insert(</tt> </tt>
+<a name="L266"></a><tt class="py-lineno"> 266</tt> <tt class="py-line"><tt class="py-docstring"> id='cow',</tt> </tt>
+<a name="L267"></a><tt class="py-lineno"> 267</tt> <tt class="py-line"><tt class="py-docstring"> name='cow.png',</tt> </tt>
+<a name="L268"></a><tt class="py-lineno"> 268</tt> <tt class="py-line"><tt class="py-docstring"> media_body=media).execute()</tt> </tt>
+<a name="L269"></a><tt class="py-lineno"> 269</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L270"></a><tt class="py-lineno"> 270</tt> <tt class="py-line"><tt class="py-docstring"> Depending on the platform you are working on, you may pass -1 as the</tt> </tt>
+<a name="L271"></a><tt class="py-lineno"> 271</tt> <tt class="py-line"><tt class="py-docstring"> chunksize, which indicates that the entire file should be uploaded in a single</tt> </tt>
+<a name="L272"></a><tt class="py-lineno"> 272</tt> <tt class="py-line"><tt class="py-docstring"> request. If the underlying platform supports streams, such as Python 2.6 or</tt> </tt>
+<a name="L273"></a><tt class="py-lineno"> 273</tt> <tt class="py-line"><tt class="py-docstring"> later, then this can be very efficient as it avoids multiple connections, and</tt> </tt>
+<a name="L274"></a><tt class="py-lineno"> 274</tt> <tt class="py-line"><tt class="py-docstring"> also avoids loading the entire file into memory before sending it. Note that</tt> </tt>
+<a name="L275"></a><tt class="py-lineno"> 275</tt> <tt class="py-line"><tt class="py-docstring"> Google App Engine has a 5MB limit on request size, so you should never set</tt> </tt>
+<a name="L276"></a><tt class="py-lineno"> 276</tt> <tt class="py-line"><tt class="py-docstring"> your chunksize larger than 5MB, or to -1.</tt> </tt>
+<a name="L277"></a><tt class="py-lineno"> 277</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L278"></a><tt class="py-lineno"> 278</tt> <tt class="py-line"> </tt>
+<a name="L279"></a><tt class="py-lineno"> 279</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-26', 'positional', 'link-21');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
+<a name="MediaIoBaseUpload.__init__"></a><div id="MediaIoBaseUpload.__init__-def"><a name="L280"></a><tt class="py-lineno"> 280</tt> <a class="py-toggle" href="#" id="MediaIoBaseUpload.__init__-toggle" onclick="return toggle('MediaIoBaseUpload.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaIoBaseUpload-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">fd</tt><tt class="py-op">,</tt> <tt class="py-param">mimetype</tt><tt class="py-op">,</tt> <tt class="py-param">chunksize</tt><tt class="py-op">=</tt><tt id="link-27" class="py-name"><a title="apiclient.http.DEFAULT_CHUNK_SIZE" class="py-name" href="#" onclick="return doclink('link-27', 'DEFAULT_CHUNK_SIZE', 'link-19');">DEFAULT_CHUNK_SIZE</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L281"></a><tt class="py-lineno"> 281</tt> <tt class="py-line"> <tt class="py-param">resumable</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="MediaIoBaseUpload.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaIoBaseUpload.__init__-expanded"><a name="L282"></a><tt class="py-lineno"> 282</tt> <tt class="py-line"> <tt class="py-docstring">"""Constructor.</tt> </tt>
+<a name="L283"></a><tt class="py-lineno"> 283</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L284"></a><tt class="py-lineno"> 284</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L285"></a><tt class="py-lineno"> 285</tt> <tt class="py-line"><tt class="py-docstring"> fd: io.Base or file object, The source of the bytes to upload. MUST be</tt> </tt>
+<a name="L286"></a><tt class="py-lineno"> 286</tt> <tt class="py-line"><tt class="py-docstring"> opened in blocking mode, do not use streams opened in non-blocking mode.</tt> </tt>
+<a name="L287"></a><tt class="py-lineno"> 287</tt> <tt class="py-line"><tt class="py-docstring"> The given stream must be seekable, that is, it must be able to call</tt> </tt>
+<a name="L288"></a><tt class="py-lineno"> 288</tt> <tt class="py-line"><tt class="py-docstring"> seek() on fd.</tt> </tt>
+<a name="L289"></a><tt class="py-lineno"> 289</tt> <tt class="py-line"><tt class="py-docstring"> mimetype: string, Mime-type of the file.</tt> </tt>
+<a name="L290"></a><tt class="py-lineno"> 290</tt> <tt class="py-line"><tt class="py-docstring"> chunksize: int, File will be uploaded in chunks of this many bytes. Only</tt> </tt>
+<a name="L291"></a><tt class="py-lineno"> 291</tt> <tt class="py-line"><tt class="py-docstring"> used if resumable=True. Pass in a value of -1 if the file is to be</tt> </tt>
+<a name="L292"></a><tt class="py-lineno"> 292</tt> <tt class="py-line"><tt class="py-docstring"> uploaded as a single chunk. Note that Google App Engine has a 5MB limit</tt> </tt>
+<a name="L293"></a><tt class="py-lineno"> 293</tt> <tt class="py-line"><tt class="py-docstring"> on request size, so you should never set your chunksize larger than 5MB,</tt> </tt>
+<a name="L294"></a><tt class="py-lineno"> 294</tt> <tt class="py-line"><tt class="py-docstring"> or to -1.</tt> </tt>
+<a name="L295"></a><tt class="py-lineno"> 295</tt> <tt class="py-line"><tt class="py-docstring"> resumable: bool, True if this is a resumable upload. False means upload</tt> </tt>
+<a name="L296"></a><tt class="py-lineno"> 296</tt> <tt class="py-line"><tt class="py-docstring"> in a single request.</tt> </tt>
+<a name="L297"></a><tt class="py-lineno"> 297</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L298"></a><tt class="py-lineno"> 298</tt> <tt class="py-line"> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-28" class="py-name" targets="Class apiclient.http.MediaIoBaseUpload=apiclient.http.MediaIoBaseUpload-class.html"><a title="apiclient.http.MediaIoBaseUpload" class="py-name" href="#" onclick="return doclink('link-28', 'MediaIoBaseUpload', 'link-28');">MediaIoBaseUpload</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-29" class="py-name" targets="Method apiclient.channel.Channel.__init__()=apiclient.channel.Channel-class.html#__init__,Method apiclient.channel.Notification.__init__()=apiclient.channel.Notification-class.html#__init__,Method apiclient.discovery.Resource.__init__()=apiclient.discovery.Resource-class.html#__init__,Method apiclient.discovery.ResourceMethodParameters.__init__()=apiclient.discovery.ResourceMethodParameters-class.html#__init__,Method apiclient.errors.BatchError.__init__()=apiclient.errors.BatchError-class.html#__init__,Method apiclient.errors.HttpError.__init__()=apiclient.errors.HttpError-class.html#__init__,Method apiclient.errors.UnexpectedBodyError.__init__()=apiclient.errors.UnexpectedBodyError-class.html#__init__,Method apiclient.errors.UnexpectedMethodError.__init__()=apiclient.errors.UnexpectedMethodError-class.html#__init__,Method apiclient.http.BatchHttpRequest.__init__()=apiclient.http.BatchHttpRequest-class.html#__init__,Method apiclient.http.HttpMock.__init__()=apiclient.http.HttpMock-class.html#__init__,Method apiclient.http.HttpMockSequence.__init__()=apiclient.http.HttpMockSequence-class.html#__init__,Method apiclient.http.HttpRequest.__init__()=apiclient.http.HttpRequest-class.html#__init__,Method apiclient.http.HttpRequestMock.__init__()=apiclient.http.HttpRequestMock-class.html#__init__,Method apiclient.http.MediaDownloadProgress.__init__()=apiclient.http.MediaDownloadProgress-class.html#__init__,Method apiclient.http.MediaFileUpload.__init__()=apiclient.http.MediaFileUpload-class.html#__init__,Method apiclient.http.MediaInMemoryUpload.__init__()=apiclient.http.MediaInMemoryUpload-class.html#__init__,Method apiclient.http.MediaIoBaseDownload.__init__()=apiclient.http.MediaIoBaseDownload-class.html#__init__,Method apiclient.http.MediaIoBaseUpload.__init__()=apiclient.http.MediaIoBaseUpload-class.html#__init__,Method apiclient.http.MediaUploadProgress.__init__()=apiclient.http.MediaUploadProgress-class.html#__init__,Method apiclient.http.RequestMockBuilder.__init__()=apiclient.http.RequestMockBuilder-class.html#__init__,Method apiclient.http._StreamSlice.__init__()=apiclient.http._StreamSlice-class.html#__init__,Method apiclient.model.JsonModel.__init__()=apiclient.model.JsonModel-class.html#__init__,Method apiclient.model.ProtocolBufferModel.__init__()=apiclient.model.ProtocolBufferModel-class.html#__init__,Method apiclient.schema.Schemas.__init__()=apiclient.schema.Schemas-class.html#__init__,Method apiclient.schema._SchemaToStruct.__init__()=apiclient.schema._SchemaToStruct-class.html#__init__,Method oauth2client.appengine.AppAssertionCredentials.__init__()=oauth2client.appengine.AppAssertionCredentials-class.html#__init__,Method oauth2client.appengine.OAuth2Decorator.__init__()=oauth2client.appengine.OAuth2Decorator-class.html#__init__,Method oauth2client.appengine.OAuth2DecoratorFromClientSecrets.__init__()=oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html#__init__,Method oauth2client.appengine.StorageByKeyName.__init__()=oauth2client.appengine.StorageByKeyName-class.html#__init__,Method oauth2client.client.AccessTokenCredentials.__init__()=oauth2client.client.AccessTokenCredentials-class.html#__init__,Method oauth2client.client.AssertionCredentials.__init__()=oauth2client.client.AssertionCredentials-class.html#__init__,Method oauth2client.client.MemoryCache.__init__()=oauth2client.client.MemoryCache-class.html#__init__,Method oauth2client.client.OAuth2Credentials.__init__()=oauth2client.client.OAuth2Credentials-class.html#__init__,Method oauth2client.client.OAuth2WebServerFlow.__init__()=oauth2client.client.OAuth2WebServerFlow-class.html#__init__,Method oauth2client.client.SignedJwtAssertionCredentials.__init__()=oauth2client.client.SignedJwtAssertionCredentials-class.html#__init__,Method oauth2client.django_orm.CredentialsField.__init__()=oauth2client.django_orm.CredentialsField-class.html#__init__,Method oauth2client.django_orm.FlowField.__init__()=oauth2client.django_orm.FlowField-class.html#__init__,Method oauth2client.django_orm.Storage.__init__()=oauth2client.django_orm.Storage-class.html#__init__,Method oauth2client.file.Storage.__init__()=oauth2client.file.Storage-class.html#__init__,Method oauth2client.gce.AppAssertionCredentials.__init__()=oauth2client.gce.AppAssertionCredentials-class.html#__init__,Method oauth2client.keyring_storage.Storage.__init__()=oauth2client.keyring_storage.Storage-class.html#__init__,Method oauth2client.locked_file.LockedFile.__init__()=oauth2client.locked_file.LockedFile-class.html#__init__,Method oauth2client.locked_file._Opener.__init__()=oauth2client.locked_file._Opener-class.html#__init__,Method oauth2client.multistore_file._MultiStore._Storage.__init__()=oauth2client.multistore_file._MultiStore._Storage-class.html#__init__,Method oauth2client.multistore_file._MultiStore.__init__()=oauth2client.multistore_file._MultiStore-class.html#__init__"><a title="apiclient.channel.Channel.__init__
+apiclient.channel.Notification.__init__
+apiclient.discovery.Resource.__init__
apiclient.discovery.ResourceMethodParameters.__init__
apiclient.errors.BatchError.__init__
apiclient.errors.HttpError.__init__
@@ -383,10 +388,6 @@
apiclient.http._StreamSlice.__init__
apiclient.model.JsonModel.__init__
apiclient.model.ProtocolBufferModel.__init__
-apiclient.push.Channel.__init__
-apiclient.push.Headers.__init__
-apiclient.push.Subscription.__init__
-apiclient.push.WebhookChannel.__init__
apiclient.schema.Schemas.__init__
apiclient.schema._SchemaToStruct.__init__
oauth2client.appengine.AppAssertionCredentials.__init__
@@ -409,143 +410,144 @@
oauth2client.locked_file._Opener.__init__
oauth2client.multistore_file._MultiStore._Storage.__init__
oauth2client.multistore_file._MultiStore.__init__" class="py-name" href="#" onclick="return doclink('link-29', '__init__', 'link-29');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L296"></a><tt class="py-lineno"> 296</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fd</tt> <tt class="py-op">=</tt> <tt class="py-name">fd</tt> </tt>
-<a name="L297"></a><tt class="py-lineno"> 297</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_mimetype</tt> <tt class="py-op">=</tt> <tt id="link-30" class="py-name" targets="Method apiclient.http.MediaIoBaseUpload.mimetype()=apiclient.http.MediaIoBaseUpload-class.html#mimetype,Method apiclient.http.MediaUpload.mimetype()=apiclient.http.MediaUpload-class.html#mimetype"><a title="apiclient.http.MediaIoBaseUpload.mimetype
+<a name="L299"></a><tt class="py-lineno"> 299</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fd</tt> <tt class="py-op">=</tt> <tt class="py-name">fd</tt> </tt>
+<a name="L300"></a><tt class="py-lineno"> 300</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_mimetype</tt> <tt class="py-op">=</tt> <tt id="link-30" class="py-name" targets="Method apiclient.http.MediaIoBaseUpload.mimetype()=apiclient.http.MediaIoBaseUpload-class.html#mimetype,Method apiclient.http.MediaUpload.mimetype()=apiclient.http.MediaUpload-class.html#mimetype"><a title="apiclient.http.MediaIoBaseUpload.mimetype
apiclient.http.MediaUpload.mimetype" class="py-name" href="#" onclick="return doclink('link-30', 'mimetype', 'link-30');">mimetype</a></tt> </tt>
-<a name="L298"></a><tt class="py-lineno"> 298</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-op">(</tt><tt id="link-31" class="py-name" targets="Method apiclient.http.MediaIoBaseUpload.chunksize()=apiclient.http.MediaIoBaseUpload-class.html#chunksize,Method apiclient.http.MediaUpload.chunksize()=apiclient.http.MediaUpload-class.html#chunksize"><a title="apiclient.http.MediaIoBaseUpload.chunksize
+<a name="L301"></a><tt class="py-lineno"> 301</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-op">(</tt><tt id="link-31" class="py-name" targets="Method apiclient.http.MediaIoBaseUpload.chunksize()=apiclient.http.MediaIoBaseUpload-class.html#chunksize,Method apiclient.http.MediaUpload.chunksize()=apiclient.http.MediaUpload-class.html#chunksize"><a title="apiclient.http.MediaIoBaseUpload.chunksize
apiclient.http.MediaUpload.chunksize" class="py-name" href="#" onclick="return doclink('link-31', 'chunksize', 'link-31');">chunksize</a></tt> <tt class="py-op">==</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt> <tt class="py-keyword">or</tt> <tt id="link-32" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.chunksize
apiclient.http.MediaUpload.chunksize" class="py-name" href="#" onclick="return doclink('link-32', 'chunksize', 'link-31');">chunksize</a></tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L299"></a><tt class="py-lineno"> 299</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-33" class="py-name"><a title="apiclient.errors.InvalidChunkSizeError" class="py-name" href="#" onclick="return doclink('link-33', 'InvalidChunkSizeError', 'link-6');">InvalidChunkSizeError</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L300"></a><tt class="py-lineno"> 300</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_chunksize</tt> <tt class="py-op">=</tt> <tt id="link-34" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.chunksize
+<a name="L302"></a><tt class="py-lineno"> 302</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-33" class="py-name"><a title="apiclient.errors.InvalidChunkSizeError" class="py-name" href="#" onclick="return doclink('link-33', 'InvalidChunkSizeError', 'link-6');">InvalidChunkSizeError</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L303"></a><tt class="py-lineno"> 303</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_chunksize</tt> <tt class="py-op">=</tt> <tt id="link-34" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.chunksize
apiclient.http.MediaUpload.chunksize" class="py-name" href="#" onclick="return doclink('link-34', 'chunksize', 'link-31');">chunksize</a></tt> </tt>
-<a name="L301"></a><tt class="py-lineno"> 301</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_resumable</tt> <tt class="py-op">=</tt> <tt id="link-35" class="py-name" targets="Method apiclient.http.MediaIoBaseUpload.resumable()=apiclient.http.MediaIoBaseUpload-class.html#resumable,Method apiclient.http.MediaUpload.resumable()=apiclient.http.MediaUpload-class.html#resumable"><a title="apiclient.http.MediaIoBaseUpload.resumable
+<a name="L304"></a><tt class="py-lineno"> 304</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_resumable</tt> <tt class="py-op">=</tt> <tt id="link-35" class="py-name" targets="Method apiclient.http.MediaIoBaseUpload.resumable()=apiclient.http.MediaIoBaseUpload-class.html#resumable,Method apiclient.http.MediaUpload.resumable()=apiclient.http.MediaUpload-class.html#resumable"><a title="apiclient.http.MediaIoBaseUpload.resumable
apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-35', 'resumable', 'link-35');">resumable</a></tt> </tt>
-<a name="L302"></a><tt class="py-lineno"> 302</tt> <tt class="py-line"> </tt>
-<a name="L303"></a><tt class="py-lineno"> 303</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fd</tt><tt class="py-op">.</tt><tt class="py-name">seek</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">SEEK_END</tt><tt class="py-op">)</tt> </tt>
-<a name="L304"></a><tt class="py-lineno"> 304</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_size</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fd</tt><tt class="py-op">.</tt><tt class="py-name">tell</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L305"></a><tt class="py-lineno"> 305</tt> <tt class="py-line"> </tt>
-<a name="MediaIoBaseUpload.chunksize"></a><div id="MediaIoBaseUpload.chunksize-def"><a name="L306"></a><tt class="py-lineno"> 306</tt> <a class="py-toggle" href="#" id="MediaIoBaseUpload.chunksize-toggle" onclick="return toggle('MediaIoBaseUpload.chunksize');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaIoBaseUpload-class.html#chunksize">chunksize</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="MediaIoBaseUpload.chunksize-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaIoBaseUpload.chunksize-expanded"><a name="L307"></a><tt class="py-lineno"> 307</tt> <tt class="py-line"> <tt class="py-docstring">"""Chunk size for resumable uploads.</tt> </tt>
-<a name="L308"></a><tt class="py-lineno"> 308</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L309"></a><tt class="py-lineno"> 309</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L310"></a><tt class="py-lineno"> 310</tt> <tt class="py-line"><tt class="py-docstring"> Chunk size in bytes.</tt> </tt>
-<a name="L311"></a><tt class="py-lineno"> 311</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L312"></a><tt class="py-lineno"> 312</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_chunksize</tt> </tt>
-</div><a name="L313"></a><tt class="py-lineno"> 313</tt> <tt class="py-line"> </tt>
-<a name="MediaIoBaseUpload.mimetype"></a><div id="MediaIoBaseUpload.mimetype-def"><a name="L314"></a><tt class="py-lineno"> 314</tt> <a class="py-toggle" href="#" id="MediaIoBaseUpload.mimetype-toggle" onclick="return toggle('MediaIoBaseUpload.mimetype');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaIoBaseUpload-class.html#mimetype">mimetype</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="MediaIoBaseUpload.mimetype-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaIoBaseUpload.mimetype-expanded"><a name="L315"></a><tt class="py-lineno"> 315</tt> <tt class="py-line"> <tt class="py-docstring">"""Mime type of the body.</tt> </tt>
-<a name="L316"></a><tt class="py-lineno"> 316</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L317"></a><tt class="py-lineno"> 317</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L318"></a><tt class="py-lineno"> 318</tt> <tt class="py-line"><tt class="py-docstring"> Mime type.</tt> </tt>
-<a name="L319"></a><tt class="py-lineno"> 319</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L320"></a><tt class="py-lineno"> 320</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_mimetype</tt> </tt>
-</div><a name="L321"></a><tt class="py-lineno"> 321</tt> <tt class="py-line"> </tt>
-<a name="MediaIoBaseUpload.size"></a><div id="MediaIoBaseUpload.size-def"><a name="L322"></a><tt class="py-lineno"> 322</tt> <a class="py-toggle" href="#" id="MediaIoBaseUpload.size-toggle" onclick="return toggle('MediaIoBaseUpload.size');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaIoBaseUpload-class.html#size">size</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="MediaIoBaseUpload.size-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaIoBaseUpload.size-expanded"><a name="L323"></a><tt class="py-lineno"> 323</tt> <tt class="py-line"> <tt class="py-docstring">"""Size of upload.</tt> </tt>
-<a name="L324"></a><tt class="py-lineno"> 324</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L325"></a><tt class="py-lineno"> 325</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L326"></a><tt class="py-lineno"> 326</tt> <tt class="py-line"><tt class="py-docstring"> Size of the body, or None of the size is unknown.</tt> </tt>
-<a name="L327"></a><tt class="py-lineno"> 327</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L328"></a><tt class="py-lineno"> 328</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_size</tt> </tt>
-</div><a name="L329"></a><tt class="py-lineno"> 329</tt> <tt class="py-line"> </tt>
-<a name="MediaIoBaseUpload.resumable"></a><div id="MediaIoBaseUpload.resumable-def"><a name="L330"></a><tt class="py-lineno"> 330</tt> <a class="py-toggle" href="#" id="MediaIoBaseUpload.resumable-toggle" onclick="return toggle('MediaIoBaseUpload.resumable');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaIoBaseUpload-class.html#resumable">resumable</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="MediaIoBaseUpload.resumable-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaIoBaseUpload.resumable-expanded"><a name="L331"></a><tt class="py-lineno"> 331</tt> <tt class="py-line"> <tt class="py-docstring">"""Whether this upload is resumable.</tt> </tt>
-<a name="L332"></a><tt class="py-lineno"> 332</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L333"></a><tt class="py-lineno"> 333</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L334"></a><tt class="py-lineno"> 334</tt> <tt class="py-line"><tt class="py-docstring"> True if resumable upload or False.</tt> </tt>
-<a name="L335"></a><tt class="py-lineno"> 335</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L336"></a><tt class="py-lineno"> 336</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_resumable</tt> </tt>
-</div><a name="L337"></a><tt class="py-lineno"> 337</tt> <tt class="py-line"> </tt>
-<a name="MediaIoBaseUpload.getbytes"></a><div id="MediaIoBaseUpload.getbytes-def"><a name="L338"></a><tt class="py-lineno"> 338</tt> <a class="py-toggle" href="#" id="MediaIoBaseUpload.getbytes-toggle" onclick="return toggle('MediaIoBaseUpload.getbytes');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaIoBaseUpload-class.html#getbytes">getbytes</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">begin</tt><tt class="py-op">,</tt> <tt class="py-param">length</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="MediaIoBaseUpload.getbytes-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaIoBaseUpload.getbytes-expanded"><a name="L339"></a><tt class="py-lineno"> 339</tt> <tt class="py-line"> <tt class="py-docstring">"""Get bytes from the media.</tt> </tt>
-<a name="L340"></a><tt class="py-lineno"> 340</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L341"></a><tt class="py-lineno"> 341</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L342"></a><tt class="py-lineno"> 342</tt> <tt class="py-line"><tt class="py-docstring"> begin: int, offset from beginning of file.</tt> </tt>
-<a name="L343"></a><tt class="py-lineno"> 343</tt> <tt class="py-line"><tt class="py-docstring"> length: int, number of bytes to read, starting at begin.</tt> </tt>
-<a name="L344"></a><tt class="py-lineno"> 344</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L345"></a><tt class="py-lineno"> 345</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L346"></a><tt class="py-lineno"> 346</tt> <tt class="py-line"><tt class="py-docstring"> A string of bytes read. May be shorted than length if EOF was reached</tt> </tt>
-<a name="L347"></a><tt class="py-lineno"> 347</tt> <tt class="py-line"><tt class="py-docstring"> first.</tt> </tt>
-<a name="L348"></a><tt class="py-lineno"> 348</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L349"></a><tt class="py-lineno"> 349</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fd</tt><tt class="py-op">.</tt><tt class="py-name">seek</tt><tt class="py-op">(</tt><tt class="py-name">begin</tt><tt class="py-op">)</tt> </tt>
-<a name="L350"></a><tt class="py-lineno"> 350</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fd</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name" targets="Method apiclient.http._StreamSlice.read()=apiclient.http._StreamSlice-class.html#read,Method apiclient.push.Headers.read()=apiclient.push.Headers-class.html#read"><a title="apiclient.http._StreamSlice.read
-apiclient.push.Headers.read" class="py-name" href="#" onclick="return doclink('link-36', 'read', 'link-36');">read</a></tt><tt class="py-op">(</tt><tt class="py-name">length</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L351"></a><tt class="py-lineno"> 351</tt> <tt class="py-line"> </tt>
-<a name="MediaIoBaseUpload.has_stream"></a><div id="MediaIoBaseUpload.has_stream-def"><a name="L352"></a><tt class="py-lineno"> 352</tt> <a class="py-toggle" href="#" id="MediaIoBaseUpload.has_stream-toggle" onclick="return toggle('MediaIoBaseUpload.has_stream');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaIoBaseUpload-class.html#has_stream">has_stream</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="MediaIoBaseUpload.has_stream-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaIoBaseUpload.has_stream-expanded"><a name="L353"></a><tt class="py-lineno"> 353</tt> <tt class="py-line"> <tt class="py-docstring">"""Does the underlying upload support a streaming interface.</tt> </tt>
-<a name="L354"></a><tt class="py-lineno"> 354</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L355"></a><tt class="py-lineno"> 355</tt> <tt class="py-line"><tt class="py-docstring"> Streaming means it is an io.IOBase subclass that supports seek, i.e.</tt> </tt>
-<a name="L356"></a><tt class="py-lineno"> 356</tt> <tt class="py-line"><tt class="py-docstring"> seekable() returns True.</tt> </tt>
+<a name="L305"></a><tt class="py-lineno"> 305</tt> <tt class="py-line"> </tt>
+<a name="L306"></a><tt class="py-lineno"> 306</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fd</tt><tt class="py-op">.</tt><tt class="py-name">seek</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">SEEK_END</tt><tt class="py-op">)</tt> </tt>
+<a name="L307"></a><tt class="py-lineno"> 307</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_size</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fd</tt><tt class="py-op">.</tt><tt class="py-name">tell</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L308"></a><tt class="py-lineno"> 308</tt> <tt class="py-line"> </tt>
+<a name="MediaIoBaseUpload.chunksize"></a><div id="MediaIoBaseUpload.chunksize-def"><a name="L309"></a><tt class="py-lineno"> 309</tt> <a class="py-toggle" href="#" id="MediaIoBaseUpload.chunksize-toggle" onclick="return toggle('MediaIoBaseUpload.chunksize');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaIoBaseUpload-class.html#chunksize">chunksize</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="MediaIoBaseUpload.chunksize-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaIoBaseUpload.chunksize-expanded"><a name="L310"></a><tt class="py-lineno"> 310</tt> <tt class="py-line"> <tt class="py-docstring">"""Chunk size for resumable uploads.</tt> </tt>
+<a name="L311"></a><tt class="py-lineno"> 311</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L312"></a><tt class="py-lineno"> 312</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L313"></a><tt class="py-lineno"> 313</tt> <tt class="py-line"><tt class="py-docstring"> Chunk size in bytes.</tt> </tt>
+<a name="L314"></a><tt class="py-lineno"> 314</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L315"></a><tt class="py-lineno"> 315</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_chunksize</tt> </tt>
+</div><a name="L316"></a><tt class="py-lineno"> 316</tt> <tt class="py-line"> </tt>
+<a name="MediaIoBaseUpload.mimetype"></a><div id="MediaIoBaseUpload.mimetype-def"><a name="L317"></a><tt class="py-lineno"> 317</tt> <a class="py-toggle" href="#" id="MediaIoBaseUpload.mimetype-toggle" onclick="return toggle('MediaIoBaseUpload.mimetype');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaIoBaseUpload-class.html#mimetype">mimetype</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="MediaIoBaseUpload.mimetype-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaIoBaseUpload.mimetype-expanded"><a name="L318"></a><tt class="py-lineno"> 318</tt> <tt class="py-line"> <tt class="py-docstring">"""Mime type of the body.</tt> </tt>
+<a name="L319"></a><tt class="py-lineno"> 319</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L320"></a><tt class="py-lineno"> 320</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L321"></a><tt class="py-lineno"> 321</tt> <tt class="py-line"><tt class="py-docstring"> Mime type.</tt> </tt>
+<a name="L322"></a><tt class="py-lineno"> 322</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L323"></a><tt class="py-lineno"> 323</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_mimetype</tt> </tt>
+</div><a name="L324"></a><tt class="py-lineno"> 324</tt> <tt class="py-line"> </tt>
+<a name="MediaIoBaseUpload.size"></a><div id="MediaIoBaseUpload.size-def"><a name="L325"></a><tt class="py-lineno"> 325</tt> <a class="py-toggle" href="#" id="MediaIoBaseUpload.size-toggle" onclick="return toggle('MediaIoBaseUpload.size');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaIoBaseUpload-class.html#size">size</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="MediaIoBaseUpload.size-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaIoBaseUpload.size-expanded"><a name="L326"></a><tt class="py-lineno"> 326</tt> <tt class="py-line"> <tt class="py-docstring">"""Size of upload.</tt> </tt>
+<a name="L327"></a><tt class="py-lineno"> 327</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L328"></a><tt class="py-lineno"> 328</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L329"></a><tt class="py-lineno"> 329</tt> <tt class="py-line"><tt class="py-docstring"> Size of the body, or None of the size is unknown.</tt> </tt>
+<a name="L330"></a><tt class="py-lineno"> 330</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L331"></a><tt class="py-lineno"> 331</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_size</tt> </tt>
+</div><a name="L332"></a><tt class="py-lineno"> 332</tt> <tt class="py-line"> </tt>
+<a name="MediaIoBaseUpload.resumable"></a><div id="MediaIoBaseUpload.resumable-def"><a name="L333"></a><tt class="py-lineno"> 333</tt> <a class="py-toggle" href="#" id="MediaIoBaseUpload.resumable-toggle" onclick="return toggle('MediaIoBaseUpload.resumable');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaIoBaseUpload-class.html#resumable">resumable</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="MediaIoBaseUpload.resumable-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaIoBaseUpload.resumable-expanded"><a name="L334"></a><tt class="py-lineno"> 334</tt> <tt class="py-line"> <tt class="py-docstring">"""Whether this upload is resumable.</tt> </tt>
+<a name="L335"></a><tt class="py-lineno"> 335</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L336"></a><tt class="py-lineno"> 336</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L337"></a><tt class="py-lineno"> 337</tt> <tt class="py-line"><tt class="py-docstring"> True if resumable upload or False.</tt> </tt>
+<a name="L338"></a><tt class="py-lineno"> 338</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L339"></a><tt class="py-lineno"> 339</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_resumable</tt> </tt>
+</div><a name="L340"></a><tt class="py-lineno"> 340</tt> <tt class="py-line"> </tt>
+<a name="MediaIoBaseUpload.getbytes"></a><div id="MediaIoBaseUpload.getbytes-def"><a name="L341"></a><tt class="py-lineno"> 341</tt> <a class="py-toggle" href="#" id="MediaIoBaseUpload.getbytes-toggle" onclick="return toggle('MediaIoBaseUpload.getbytes');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaIoBaseUpload-class.html#getbytes">getbytes</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">begin</tt><tt class="py-op">,</tt> <tt class="py-param">length</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="MediaIoBaseUpload.getbytes-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaIoBaseUpload.getbytes-expanded"><a name="L342"></a><tt class="py-lineno"> 342</tt> <tt class="py-line"> <tt class="py-docstring">"""Get bytes from the media.</tt> </tt>
+<a name="L343"></a><tt class="py-lineno"> 343</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L344"></a><tt class="py-lineno"> 344</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L345"></a><tt class="py-lineno"> 345</tt> <tt class="py-line"><tt class="py-docstring"> begin: int, offset from beginning of file.</tt> </tt>
+<a name="L346"></a><tt class="py-lineno"> 346</tt> <tt class="py-line"><tt class="py-docstring"> length: int, number of bytes to read, starting at begin.</tt> </tt>
+<a name="L347"></a><tt class="py-lineno"> 347</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L348"></a><tt class="py-lineno"> 348</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L349"></a><tt class="py-lineno"> 349</tt> <tt class="py-line"><tt class="py-docstring"> A string of bytes read. May be shorted than length if EOF was reached</tt> </tt>
+<a name="L350"></a><tt class="py-lineno"> 350</tt> <tt class="py-line"><tt class="py-docstring"> first.</tt> </tt>
+<a name="L351"></a><tt class="py-lineno"> 351</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L352"></a><tt class="py-lineno"> 352</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fd</tt><tt class="py-op">.</tt><tt class="py-name">seek</tt><tt class="py-op">(</tt><tt class="py-name">begin</tt><tt class="py-op">)</tt> </tt>
+<a name="L353"></a><tt class="py-lineno"> 353</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fd</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name" targets="Method apiclient.http._StreamSlice.read()=apiclient.http._StreamSlice-class.html#read"><a title="apiclient.http._StreamSlice.read" class="py-name" href="#" onclick="return doclink('link-36', 'read', 'link-36');">read</a></tt><tt class="py-op">(</tt><tt class="py-name">length</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L354"></a><tt class="py-lineno"> 354</tt> <tt class="py-line"> </tt>
+<a name="MediaIoBaseUpload.has_stream"></a><div id="MediaIoBaseUpload.has_stream-def"><a name="L355"></a><tt class="py-lineno"> 355</tt> <a class="py-toggle" href="#" id="MediaIoBaseUpload.has_stream-toggle" onclick="return toggle('MediaIoBaseUpload.has_stream');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaIoBaseUpload-class.html#has_stream">has_stream</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="MediaIoBaseUpload.has_stream-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaIoBaseUpload.has_stream-expanded"><a name="L356"></a><tt class="py-lineno"> 356</tt> <tt class="py-line"> <tt class="py-docstring">"""Does the underlying upload support a streaming interface.</tt> </tt>
<a name="L357"></a><tt class="py-lineno"> 357</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L358"></a><tt class="py-lineno"> 358</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L359"></a><tt class="py-lineno"> 359</tt> <tt class="py-line"><tt class="py-docstring"> True if the call to stream() will return an instance of a seekable io.Base</tt> </tt>
-<a name="L360"></a><tt class="py-lineno"> 360</tt> <tt class="py-line"><tt class="py-docstring"> subclass.</tt> </tt>
-<a name="L361"></a><tt class="py-lineno"> 361</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L362"></a><tt class="py-lineno"> 362</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
-</div><a name="L363"></a><tt class="py-lineno"> 363</tt> <tt class="py-line"> </tt>
-<a name="MediaIoBaseUpload.stream"></a><div id="MediaIoBaseUpload.stream-def"><a name="L364"></a><tt class="py-lineno"> 364</tt> <a class="py-toggle" href="#" id="MediaIoBaseUpload.stream-toggle" onclick="return toggle('MediaIoBaseUpload.stream');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaIoBaseUpload-class.html#stream">stream</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="MediaIoBaseUpload.stream-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaIoBaseUpload.stream-expanded"><a name="L365"></a><tt class="py-lineno"> 365</tt> <tt class="py-line"> <tt class="py-docstring">"""A stream interface to the data being uploaded.</tt> </tt>
-<a name="L366"></a><tt class="py-lineno"> 366</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L367"></a><tt class="py-lineno"> 367</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L368"></a><tt class="py-lineno"> 368</tt> <tt class="py-line"><tt class="py-docstring"> The returned value is an io.IOBase subclass that supports seek, i.e.</tt> </tt>
-<a name="L369"></a><tt class="py-lineno"> 369</tt> <tt class="py-line"><tt class="py-docstring"> seekable() returns True.</tt> </tt>
-<a name="L370"></a><tt class="py-lineno"> 370</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L371"></a><tt class="py-lineno"> 371</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fd</tt> </tt>
-</div><a name="L372"></a><tt class="py-lineno"> 372</tt> <tt class="py-line"> </tt>
-<a name="MediaIoBaseUpload.to_json"></a><div id="MediaIoBaseUpload.to_json-def"><a name="L373"></a><tt class="py-lineno"> 373</tt> <a class="py-toggle" href="#" id="MediaIoBaseUpload.to_json-toggle" onclick="return toggle('MediaIoBaseUpload.to_json');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaIoBaseUpload-class.html#to_json">to_json</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="MediaIoBaseUpload.to_json-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaIoBaseUpload.to_json-expanded"><a name="L374"></a><tt class="py-lineno"> 374</tt> <tt class="py-line"> <tt class="py-docstring">"""This upload type is not serializable."""</tt> </tt>
-<a name="L375"></a><tt class="py-lineno"> 375</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">NotImplementedError</tt><tt class="py-op">(</tt><tt class="py-string">'MediaIoBaseUpload is not serializable.'</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L376"></a><tt class="py-lineno"> 376</tt> <tt class="py-line"> </tt>
-<a name="MediaFileUpload"></a><div id="MediaFileUpload-def"><a name="L377"></a><tt class="py-lineno"> 377</tt> <tt class="py-line"> </tt>
-<a name="L378"></a><tt class="py-lineno"> 378</tt> <a class="py-toggle" href="#" id="MediaFileUpload-toggle" onclick="return toggle('MediaFileUpload');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.http.MediaFileUpload-class.html">MediaFileUpload</a><tt class="py-op">(</tt><tt class="py-base-class">MediaIoBaseUpload</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="MediaFileUpload-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="MediaFileUpload-expanded"><a name="L379"></a><tt class="py-lineno"> 379</tt> <tt class="py-line"> <tt class="py-docstring">"""A MediaUpload for a file.</tt> </tt>
-<a name="L380"></a><tt class="py-lineno"> 380</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L381"></a><tt class="py-lineno"> 381</tt> <tt class="py-line"><tt class="py-docstring"> Construct a MediaFileUpload and pass as the media_body parameter of the</tt> </tt>
-<a name="L382"></a><tt class="py-lineno"> 382</tt> <tt class="py-line"><tt class="py-docstring"> method. For example, if we had a service that allowed uploading images:</tt> </tt>
+<a name="L358"></a><tt class="py-lineno"> 358</tt> <tt class="py-line"><tt class="py-docstring"> Streaming means it is an io.IOBase subclass that supports seek, i.e.</tt> </tt>
+<a name="L359"></a><tt class="py-lineno"> 359</tt> <tt class="py-line"><tt class="py-docstring"> seekable() returns True.</tt> </tt>
+<a name="L360"></a><tt class="py-lineno"> 360</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L361"></a><tt class="py-lineno"> 361</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L362"></a><tt class="py-lineno"> 362</tt> <tt class="py-line"><tt class="py-docstring"> True if the call to stream() will return an instance of a seekable io.Base</tt> </tt>
+<a name="L363"></a><tt class="py-lineno"> 363</tt> <tt class="py-line"><tt class="py-docstring"> subclass.</tt> </tt>
+<a name="L364"></a><tt class="py-lineno"> 364</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L365"></a><tt class="py-lineno"> 365</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+</div><a name="L366"></a><tt class="py-lineno"> 366</tt> <tt class="py-line"> </tt>
+<a name="MediaIoBaseUpload.stream"></a><div id="MediaIoBaseUpload.stream-def"><a name="L367"></a><tt class="py-lineno"> 367</tt> <a class="py-toggle" href="#" id="MediaIoBaseUpload.stream-toggle" onclick="return toggle('MediaIoBaseUpload.stream');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaIoBaseUpload-class.html#stream">stream</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="MediaIoBaseUpload.stream-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaIoBaseUpload.stream-expanded"><a name="L368"></a><tt class="py-lineno"> 368</tt> <tt class="py-line"> <tt class="py-docstring">"""A stream interface to the data being uploaded.</tt> </tt>
+<a name="L369"></a><tt class="py-lineno"> 369</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L370"></a><tt class="py-lineno"> 370</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L371"></a><tt class="py-lineno"> 371</tt> <tt class="py-line"><tt class="py-docstring"> The returned value is an io.IOBase subclass that supports seek, i.e.</tt> </tt>
+<a name="L372"></a><tt class="py-lineno"> 372</tt> <tt class="py-line"><tt class="py-docstring"> seekable() returns True.</tt> </tt>
+<a name="L373"></a><tt class="py-lineno"> 373</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L374"></a><tt class="py-lineno"> 374</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fd</tt> </tt>
+</div><a name="L375"></a><tt class="py-lineno"> 375</tt> <tt class="py-line"> </tt>
+<a name="MediaIoBaseUpload.to_json"></a><div id="MediaIoBaseUpload.to_json-def"><a name="L376"></a><tt class="py-lineno"> 376</tt> <a class="py-toggle" href="#" id="MediaIoBaseUpload.to_json-toggle" onclick="return toggle('MediaIoBaseUpload.to_json');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaIoBaseUpload-class.html#to_json">to_json</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="MediaIoBaseUpload.to_json-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaIoBaseUpload.to_json-expanded"><a name="L377"></a><tt class="py-lineno"> 377</tt> <tt class="py-line"> <tt class="py-docstring">"""This upload type is not serializable."""</tt> </tt>
+<a name="L378"></a><tt class="py-lineno"> 378</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">NotImplementedError</tt><tt class="py-op">(</tt><tt class="py-string">'MediaIoBaseUpload is not serializable.'</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L379"></a><tt class="py-lineno"> 379</tt> <tt class="py-line"> </tt>
+<a name="MediaFileUpload"></a><div id="MediaFileUpload-def"><a name="L380"></a><tt class="py-lineno"> 380</tt> <tt class="py-line"> </tt>
+<a name="L381"></a><tt class="py-lineno"> 381</tt> <a class="py-toggle" href="#" id="MediaFileUpload-toggle" onclick="return toggle('MediaFileUpload');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.http.MediaFileUpload-class.html">MediaFileUpload</a><tt class="py-op">(</tt><tt class="py-base-class">MediaIoBaseUpload</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="MediaFileUpload-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="MediaFileUpload-expanded"><a name="L382"></a><tt class="py-lineno"> 382</tt> <tt class="py-line"> <tt class="py-docstring">"""A MediaUpload for a file.</tt> </tt>
<a name="L383"></a><tt class="py-lineno"> 383</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L384"></a><tt class="py-lineno"> 384</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L385"></a><tt class="py-lineno"> 385</tt> <tt class="py-line"><tt class="py-docstring"> media = MediaFileUpload('cow.png', mimetype='image/png',</tt> </tt>
-<a name="L386"></a><tt class="py-lineno"> 386</tt> <tt class="py-line"><tt class="py-docstring"> chunksize=1024*1024, resumable=True)</tt> </tt>
-<a name="L387"></a><tt class="py-lineno"> 387</tt> <tt class="py-line"><tt class="py-docstring"> farm.animals().insert(</tt> </tt>
-<a name="L388"></a><tt class="py-lineno"> 388</tt> <tt class="py-line"><tt class="py-docstring"> id='cow',</tt> </tt>
-<a name="L389"></a><tt class="py-lineno"> 389</tt> <tt class="py-line"><tt class="py-docstring"> name='cow.png',</tt> </tt>
-<a name="L390"></a><tt class="py-lineno"> 390</tt> <tt class="py-line"><tt class="py-docstring"> media_body=media).execute()</tt> </tt>
-<a name="L391"></a><tt class="py-lineno"> 391</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L392"></a><tt class="py-lineno"> 392</tt> <tt class="py-line"><tt class="py-docstring"> Depending on the platform you are working on, you may pass -1 as the</tt> </tt>
-<a name="L393"></a><tt class="py-lineno"> 393</tt> <tt class="py-line"><tt class="py-docstring"> chunksize, which indicates that the entire file should be uploaded in a single</tt> </tt>
-<a name="L394"></a><tt class="py-lineno"> 394</tt> <tt class="py-line"><tt class="py-docstring"> request. If the underlying platform supports streams, such as Python 2.6 or</tt> </tt>
-<a name="L395"></a><tt class="py-lineno"> 395</tt> <tt class="py-line"><tt class="py-docstring"> later, then this can be very efficient as it avoids multiple connections, and</tt> </tt>
-<a name="L396"></a><tt class="py-lineno"> 396</tt> <tt class="py-line"><tt class="py-docstring"> also avoids loading the entire file into memory before sending it. Note that</tt> </tt>
-<a name="L397"></a><tt class="py-lineno"> 397</tt> <tt class="py-line"><tt class="py-docstring"> Google App Engine has a 5MB limit on request size, so you should never set</tt> </tt>
-<a name="L398"></a><tt class="py-lineno"> 398</tt> <tt class="py-line"><tt class="py-docstring"> your chunksize larger than 5MB, or to -1.</tt> </tt>
-<a name="L399"></a><tt class="py-lineno"> 399</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L400"></a><tt class="py-lineno"> 400</tt> <tt class="py-line"> </tt>
-<a name="L401"></a><tt class="py-lineno"> 401</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-37" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-37', 'positional', 'link-21');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
-<a name="MediaFileUpload.__init__"></a><div id="MediaFileUpload.__init__-def"><a name="L402"></a><tt class="py-lineno"> 402</tt> <a class="py-toggle" href="#" id="MediaFileUpload.__init__-toggle" onclick="return toggle('MediaFileUpload.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaFileUpload-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">filename</tt><tt class="py-op">,</tt> <tt class="py-param">mimetype</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">chunksize</tt><tt class="py-op">=</tt><tt id="link-38" class="py-name"><a title="apiclient.http.DEFAULT_CHUNK_SIZE" class="py-name" href="#" onclick="return doclink('link-38', 'DEFAULT_CHUNK_SIZE', 'link-19');">DEFAULT_CHUNK_SIZE</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L403"></a><tt class="py-lineno"> 403</tt> <tt class="py-line"> <tt class="py-param">resumable</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="MediaFileUpload.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaFileUpload.__init__-expanded"><a name="L404"></a><tt class="py-lineno"> 404</tt> <tt class="py-line"> <tt class="py-docstring">"""Constructor.</tt> </tt>
-<a name="L405"></a><tt class="py-lineno"> 405</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L406"></a><tt class="py-lineno"> 406</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L407"></a><tt class="py-lineno"> 407</tt> <tt class="py-line"><tt class="py-docstring"> filename: string, Name of the file.</tt> </tt>
-<a name="L408"></a><tt class="py-lineno"> 408</tt> <tt class="py-line"><tt class="py-docstring"> mimetype: string, Mime-type of the file. If None then a mime-type will be</tt> </tt>
-<a name="L409"></a><tt class="py-lineno"> 409</tt> <tt class="py-line"><tt class="py-docstring"> guessed from the file extension.</tt> </tt>
-<a name="L410"></a><tt class="py-lineno"> 410</tt> <tt class="py-line"><tt class="py-docstring"> chunksize: int, File will be uploaded in chunks of this many bytes. Only</tt> </tt>
-<a name="L411"></a><tt class="py-lineno"> 411</tt> <tt class="py-line"><tt class="py-docstring"> used if resumable=True. Pass in a value of -1 if the file is to be</tt> </tt>
-<a name="L412"></a><tt class="py-lineno"> 412</tt> <tt class="py-line"><tt class="py-docstring"> uploaded in a single chunk. Note that Google App Engine has a 5MB limit</tt> </tt>
-<a name="L413"></a><tt class="py-lineno"> 413</tt> <tt class="py-line"><tt class="py-docstring"> on request size, so you should never set your chunksize larger than 5MB,</tt> </tt>
-<a name="L414"></a><tt class="py-lineno"> 414</tt> <tt class="py-line"><tt class="py-docstring"> or to -1.</tt> </tt>
-<a name="L415"></a><tt class="py-lineno"> 415</tt> <tt class="py-line"><tt class="py-docstring"> resumable: bool, True if this is a resumable upload. False means upload</tt> </tt>
-<a name="L416"></a><tt class="py-lineno"> 416</tt> <tt class="py-line"><tt class="py-docstring"> in a single request.</tt> </tt>
-<a name="L417"></a><tt class="py-lineno"> 417</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L418"></a><tt class="py-lineno"> 418</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt> <tt class="py-op">=</tt> <tt id="link-39" class="py-name" targets="Method oauth2client.locked_file.LockedFile.filename()=oauth2client.locked_file.LockedFile-class.html#filename,Method oauth2client.locked_file._Opener.filename()=oauth2client.locked_file._Opener-class.html#filename"><a title="oauth2client.locked_file.LockedFile.filename
+<a name="L384"></a><tt class="py-lineno"> 384</tt> <tt class="py-line"><tt class="py-docstring"> Construct a MediaFileUpload and pass as the media_body parameter of the</tt> </tt>
+<a name="L385"></a><tt class="py-lineno"> 385</tt> <tt class="py-line"><tt class="py-docstring"> method. For example, if we had a service that allowed uploading images:</tt> </tt>
+<a name="L386"></a><tt class="py-lineno"> 386</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L387"></a><tt class="py-lineno"> 387</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L388"></a><tt class="py-lineno"> 388</tt> <tt class="py-line"><tt class="py-docstring"> media = MediaFileUpload('cow.png', mimetype='image/png',</tt> </tt>
+<a name="L389"></a><tt class="py-lineno"> 389</tt> <tt class="py-line"><tt class="py-docstring"> chunksize=1024*1024, resumable=True)</tt> </tt>
+<a name="L390"></a><tt class="py-lineno"> 390</tt> <tt class="py-line"><tt class="py-docstring"> farm.animals().insert(</tt> </tt>
+<a name="L391"></a><tt class="py-lineno"> 391</tt> <tt class="py-line"><tt class="py-docstring"> id='cow',</tt> </tt>
+<a name="L392"></a><tt class="py-lineno"> 392</tt> <tt class="py-line"><tt class="py-docstring"> name='cow.png',</tt> </tt>
+<a name="L393"></a><tt class="py-lineno"> 393</tt> <tt class="py-line"><tt class="py-docstring"> media_body=media).execute()</tt> </tt>
+<a name="L394"></a><tt class="py-lineno"> 394</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L395"></a><tt class="py-lineno"> 395</tt> <tt class="py-line"><tt class="py-docstring"> Depending on the platform you are working on, you may pass -1 as the</tt> </tt>
+<a name="L396"></a><tt class="py-lineno"> 396</tt> <tt class="py-line"><tt class="py-docstring"> chunksize, which indicates that the entire file should be uploaded in a single</tt> </tt>
+<a name="L397"></a><tt class="py-lineno"> 397</tt> <tt class="py-line"><tt class="py-docstring"> request. If the underlying platform supports streams, such as Python 2.6 or</tt> </tt>
+<a name="L398"></a><tt class="py-lineno"> 398</tt> <tt class="py-line"><tt class="py-docstring"> later, then this can be very efficient as it avoids multiple connections, and</tt> </tt>
+<a name="L399"></a><tt class="py-lineno"> 399</tt> <tt class="py-line"><tt class="py-docstring"> also avoids loading the entire file into memory before sending it. Note that</tt> </tt>
+<a name="L400"></a><tt class="py-lineno"> 400</tt> <tt class="py-line"><tt class="py-docstring"> Google App Engine has a 5MB limit on request size, so you should never set</tt> </tt>
+<a name="L401"></a><tt class="py-lineno"> 401</tt> <tt class="py-line"><tt class="py-docstring"> your chunksize larger than 5MB, or to -1.</tt> </tt>
+<a name="L402"></a><tt class="py-lineno"> 402</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L403"></a><tt class="py-lineno"> 403</tt> <tt class="py-line"> </tt>
+<a name="L404"></a><tt class="py-lineno"> 404</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-37" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-37', 'positional', 'link-21');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="MediaFileUpload.__init__"></a><div id="MediaFileUpload.__init__-def"><a name="L405"></a><tt class="py-lineno"> 405</tt> <a class="py-toggle" href="#" id="MediaFileUpload.__init__-toggle" onclick="return toggle('MediaFileUpload.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaFileUpload-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">filename</tt><tt class="py-op">,</tt> <tt class="py-param">mimetype</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">chunksize</tt><tt class="py-op">=</tt><tt id="link-38" class="py-name"><a title="apiclient.http.DEFAULT_CHUNK_SIZE" class="py-name" href="#" onclick="return doclink('link-38', 'DEFAULT_CHUNK_SIZE', 'link-19');">DEFAULT_CHUNK_SIZE</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L406"></a><tt class="py-lineno"> 406</tt> <tt class="py-line"> <tt class="py-param">resumable</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="MediaFileUpload.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaFileUpload.__init__-expanded"><a name="L407"></a><tt class="py-lineno"> 407</tt> <tt class="py-line"> <tt class="py-docstring">"""Constructor.</tt> </tt>
+<a name="L408"></a><tt class="py-lineno"> 408</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L409"></a><tt class="py-lineno"> 409</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L410"></a><tt class="py-lineno"> 410</tt> <tt class="py-line"><tt class="py-docstring"> filename: string, Name of the file.</tt> </tt>
+<a name="L411"></a><tt class="py-lineno"> 411</tt> <tt class="py-line"><tt class="py-docstring"> mimetype: string, Mime-type of the file. If None then a mime-type will be</tt> </tt>
+<a name="L412"></a><tt class="py-lineno"> 412</tt> <tt class="py-line"><tt class="py-docstring"> guessed from the file extension.</tt> </tt>
+<a name="L413"></a><tt class="py-lineno"> 413</tt> <tt class="py-line"><tt class="py-docstring"> chunksize: int, File will be uploaded in chunks of this many bytes. Only</tt> </tt>
+<a name="L414"></a><tt class="py-lineno"> 414</tt> <tt class="py-line"><tt class="py-docstring"> used if resumable=True. Pass in a value of -1 if the file is to be</tt> </tt>
+<a name="L415"></a><tt class="py-lineno"> 415</tt> <tt class="py-line"><tt class="py-docstring"> uploaded in a single chunk. Note that Google App Engine has a 5MB limit</tt> </tt>
+<a name="L416"></a><tt class="py-lineno"> 416</tt> <tt class="py-line"><tt class="py-docstring"> on request size, so you should never set your chunksize larger than 5MB,</tt> </tt>
+<a name="L417"></a><tt class="py-lineno"> 417</tt> <tt class="py-line"><tt class="py-docstring"> or to -1.</tt> </tt>
+<a name="L418"></a><tt class="py-lineno"> 418</tt> <tt class="py-line"><tt class="py-docstring"> resumable: bool, True if this is a resumable upload. False means upload</tt> </tt>
+<a name="L419"></a><tt class="py-lineno"> 419</tt> <tt class="py-line"><tt class="py-docstring"> in a single request.</tt> </tt>
+<a name="L420"></a><tt class="py-lineno"> 420</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L421"></a><tt class="py-lineno"> 421</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt> <tt class="py-op">=</tt> <tt id="link-39" class="py-name" targets="Method oauth2client.locked_file.LockedFile.filename()=oauth2client.locked_file.LockedFile-class.html#filename,Method oauth2client.locked_file._Opener.filename()=oauth2client.locked_file._Opener-class.html#filename"><a title="oauth2client.locked_file.LockedFile.filename
oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-39', 'filename', 'link-39');">filename</a></tt> </tt>
-<a name="L419"></a><tt class="py-lineno"> 419</tt> <tt class="py-line"> <tt class="py-name">fd</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt><tt class="py-op">,</tt> <tt class="py-string">'rb'</tt><tt class="py-op">)</tt> </tt>
-<a name="L420"></a><tt class="py-lineno"> 420</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-40" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.mimetype
+<a name="L422"></a><tt class="py-lineno"> 422</tt> <tt class="py-line"> <tt class="py-name">fd</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt><tt class="py-op">,</tt> <tt class="py-string">'rb'</tt><tt class="py-op">)</tt> </tt>
+<a name="L423"></a><tt class="py-lineno"> 423</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-40" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.mimetype
apiclient.http.MediaUpload.mimetype" class="py-name" href="#" onclick="return doclink('link-40', 'mimetype', 'link-30');">mimetype</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L421"></a><tt class="py-lineno"> 421</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt id="link-41" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.mimetype
+<a name="L424"></a><tt class="py-lineno"> 424</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt id="link-41" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.mimetype
apiclient.http.MediaUpload.mimetype" class="py-name" href="#" onclick="return doclink('link-41', 'mimetype', 'link-30');">mimetype</a></tt><tt class="py-op">,</tt> <tt class="py-name">encoding</tt><tt class="py-op">)</tt> <tt class="py-op">=</tt> <tt class="py-name">mimetypes</tt><tt class="py-op">.</tt><tt class="py-name">guess_type</tt><tt class="py-op">(</tt><tt id="link-42" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-42', 'filename', 'link-39');">filename</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L422"></a><tt class="py-lineno"> 422</tt> <tt class="py-line"> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-43" class="py-name" targets="Class apiclient.http.MediaFileUpload=apiclient.http.MediaFileUpload-class.html"><a title="apiclient.http.MediaFileUpload" class="py-name" href="#" onclick="return doclink('link-43', 'MediaFileUpload', 'link-43');">MediaFileUpload</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-44" class="py-name"><a title="apiclient.discovery.Resource.__init__
+<a name="L425"></a><tt class="py-lineno"> 425</tt> <tt class="py-line"> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-43" class="py-name" targets="Class apiclient.http.MediaFileUpload=apiclient.http.MediaFileUpload-class.html"><a title="apiclient.http.MediaFileUpload" class="py-name" href="#" onclick="return doclink('link-43', 'MediaFileUpload', 'link-43');">MediaFileUpload</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-44" class="py-name"><a title="apiclient.channel.Channel.__init__
+apiclient.channel.Notification.__init__
+apiclient.discovery.Resource.__init__
apiclient.discovery.ResourceMethodParameters.__init__
apiclient.errors.BatchError.__init__
apiclient.errors.HttpError.__init__
@@ -566,10 +568,6 @@
apiclient.http._StreamSlice.__init__
apiclient.model.JsonModel.__init__
apiclient.model.ProtocolBufferModel.__init__
-apiclient.push.Channel.__init__
-apiclient.push.Headers.__init__
-apiclient.push.Subscription.__init__
-apiclient.push.WebhookChannel.__init__
apiclient.schema.Schemas.__init__
apiclient.schema._SchemaToStruct.__init__
oauth2client.appengine.AppAssertionCredentials.__init__
@@ -595,56 +593,58 @@
apiclient.http.MediaUpload.mimetype" class="py-name" href="#" onclick="return doclink('link-45', 'mimetype', 'link-30');">mimetype</a></tt><tt class="py-op">,</tt> <tt id="link-46" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.chunksize
apiclient.http.MediaUpload.chunksize" class="py-name" href="#" onclick="return doclink('link-46', 'chunksize', 'link-31');">chunksize</a></tt><tt class="py-op">=</tt><tt id="link-47" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.chunksize
apiclient.http.MediaUpload.chunksize" class="py-name" href="#" onclick="return doclink('link-47', 'chunksize', 'link-31');">chunksize</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L423"></a><tt class="py-lineno"> 423</tt> <tt class="py-line"> <tt id="link-48" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
+<a name="L426"></a><tt class="py-lineno"> 426</tt> <tt class="py-line"> <tt id="link-48" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-48', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">=</tt><tt id="link-49" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-49', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L424"></a><tt class="py-lineno"> 424</tt> <tt class="py-line"> </tt>
-<a name="MediaFileUpload.to_json"></a><div id="MediaFileUpload.to_json-def"><a name="L425"></a><tt class="py-lineno"> 425</tt> <a class="py-toggle" href="#" id="MediaFileUpload.to_json-toggle" onclick="return toggle('MediaFileUpload.to_json');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaFileUpload-class.html#to_json">to_json</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="MediaFileUpload.to_json-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaFileUpload.to_json-expanded"><a name="L426"></a><tt class="py-lineno"> 426</tt> <tt class="py-line"> <tt class="py-docstring">"""Creating a JSON representation of an instance of MediaFileUpload.</tt> </tt>
-<a name="L427"></a><tt class="py-lineno"> 427</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L428"></a><tt class="py-lineno"> 428</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L429"></a><tt class="py-lineno"> 429</tt> <tt class="py-line"><tt class="py-docstring"> string, a JSON representation of this instance, suitable to pass to</tt> </tt>
-<a name="L430"></a><tt class="py-lineno"> 430</tt> <tt class="py-line"><tt class="py-docstring"> from_json().</tt> </tt>
-<a name="L431"></a><tt class="py-lineno"> 431</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L432"></a><tt class="py-lineno"> 432</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-50" class="py-name"><a title="apiclient.http.MediaUpload._to_json
+</div><a name="L427"></a><tt class="py-lineno"> 427</tt> <tt class="py-line"> </tt>
+<a name="MediaFileUpload.to_json"></a><div id="MediaFileUpload.to_json-def"><a name="L428"></a><tt class="py-lineno"> 428</tt> <a class="py-toggle" href="#" id="MediaFileUpload.to_json-toggle" onclick="return toggle('MediaFileUpload.to_json');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaFileUpload-class.html#to_json">to_json</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="MediaFileUpload.to_json-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaFileUpload.to_json-expanded"><a name="L429"></a><tt class="py-lineno"> 429</tt> <tt class="py-line"> <tt class="py-docstring">"""Creating a JSON representation of an instance of MediaFileUpload.</tt> </tt>
+<a name="L430"></a><tt class="py-lineno"> 430</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L431"></a><tt class="py-lineno"> 431</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L432"></a><tt class="py-lineno"> 432</tt> <tt class="py-line"><tt class="py-docstring"> string, a JSON representation of this instance, suitable to pass to</tt> </tt>
+<a name="L433"></a><tt class="py-lineno"> 433</tt> <tt class="py-line"><tt class="py-docstring"> from_json().</tt> </tt>
+<a name="L434"></a><tt class="py-lineno"> 434</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L435"></a><tt class="py-lineno"> 435</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-50" class="py-name"><a title="apiclient.http.MediaUpload._to_json
oauth2client.client.Credentials._to_json" class="py-name" href="#" onclick="return doclink('link-50', '_to_json', 'link-22');">_to_json</a></tt><tt class="py-op">(</tt><tt class="py-name">strip</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-string">'_fd'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L433"></a><tt class="py-lineno"> 433</tt> <tt class="py-line"> </tt>
-<a name="L434"></a><tt class="py-lineno"> 434</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">staticmethod</tt> </tt>
-<a name="MediaFileUpload.from_json"></a><div id="MediaFileUpload.from_json-def"><a name="L435"></a><tt class="py-lineno"> 435</tt> <a class="py-toggle" href="#" id="MediaFileUpload.from_json-toggle" onclick="return toggle('MediaFileUpload.from_json');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaFileUpload-class.html#from_json">from_json</a><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="MediaFileUpload.from_json-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaFileUpload.from_json-expanded"><a name="L436"></a><tt class="py-lineno"> 436</tt> <tt class="py-line"> <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-51" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-51', 'loads', 'link-23');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
-<a name="L437"></a><tt class="py-lineno"> 437</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-52" class="py-name"><a title="apiclient.http.MediaFileUpload" class="py-name" href="#" onclick="return doclink('link-52', 'MediaFileUpload', 'link-43');">MediaFileUpload</a></tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'_filename'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-53" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.mimetype
+</div><a name="L436"></a><tt class="py-lineno"> 436</tt> <tt class="py-line"> </tt>
+<a name="L437"></a><tt class="py-lineno"> 437</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">staticmethod</tt> </tt>
+<a name="MediaFileUpload.from_json"></a><div id="MediaFileUpload.from_json-def"><a name="L438"></a><tt class="py-lineno"> 438</tt> <a class="py-toggle" href="#" id="MediaFileUpload.from_json-toggle" onclick="return toggle('MediaFileUpload.from_json');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaFileUpload-class.html#from_json">from_json</a><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="MediaFileUpload.from_json-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaFileUpload.from_json-expanded"><a name="L439"></a><tt class="py-lineno"> 439</tt> <tt class="py-line"> <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-51" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-51', 'loads', 'link-23');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
+<a name="L440"></a><tt class="py-lineno"> 440</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-52" class="py-name"><a title="apiclient.http.MediaFileUpload" class="py-name" href="#" onclick="return doclink('link-52', 'MediaFileUpload', 'link-43');">MediaFileUpload</a></tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'_filename'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-53" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.mimetype
apiclient.http.MediaUpload.mimetype" class="py-name" href="#" onclick="return doclink('link-53', 'mimetype', 'link-30');">mimetype</a></tt><tt class="py-op">=</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'_mimetype'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L438"></a><tt class="py-lineno"> 438</tt> <tt class="py-line"> <tt id="link-54" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.chunksize
+<a name="L441"></a><tt class="py-lineno"> 441</tt> <tt class="py-line"> <tt id="link-54" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.chunksize
apiclient.http.MediaUpload.chunksize" class="py-name" href="#" onclick="return doclink('link-54', 'chunksize', 'link-31');">chunksize</a></tt><tt class="py-op">=</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'_chunksize'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-55" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-55', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">=</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'_resumable'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L439"></a><tt class="py-lineno"> 439</tt> <tt class="py-line"> </tt>
-<a name="MediaInMemoryUpload"></a><div id="MediaInMemoryUpload-def"><a name="L440"></a><tt class="py-lineno"> 440</tt> <tt class="py-line"> </tt>
-<a name="L441"></a><tt class="py-lineno"> 441</tt> <a class="py-toggle" href="#" id="MediaInMemoryUpload-toggle" onclick="return toggle('MediaInMemoryUpload');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.http.MediaInMemoryUpload-class.html">MediaInMemoryUpload</a><tt class="py-op">(</tt><tt class="py-base-class">MediaIoBaseUpload</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="MediaInMemoryUpload-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="MediaInMemoryUpload-expanded"><a name="L442"></a><tt class="py-lineno"> 442</tt> <tt class="py-line"> <tt class="py-docstring">"""MediaUpload for a chunk of bytes.</tt> </tt>
-<a name="L443"></a><tt class="py-lineno"> 443</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L444"></a><tt class="py-lineno"> 444</tt> <tt class="py-line"><tt class="py-docstring"> DEPRECATED: Use MediaIoBaseUpload with either io.TextIOBase or StringIO for</tt> </tt>
-<a name="L445"></a><tt class="py-lineno"> 445</tt> <tt class="py-line"><tt class="py-docstring"> the stream.</tt> </tt>
-<a name="L446"></a><tt class="py-lineno"> 446</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L447"></a><tt class="py-lineno"> 447</tt> <tt class="py-line"> </tt>
-<a name="L448"></a><tt class="py-lineno"> 448</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-56" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-56', 'positional', 'link-21');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
-<a name="MediaInMemoryUpload.__init__"></a><div id="MediaInMemoryUpload.__init__-def"><a name="L449"></a><tt class="py-lineno"> 449</tt> <a class="py-toggle" href="#" id="MediaInMemoryUpload.__init__-toggle" onclick="return toggle('MediaInMemoryUpload.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaInMemoryUpload-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">body</tt><tt class="py-op">,</tt> <tt class="py-param">mimetype</tt><tt class="py-op">=</tt><tt class="py-string">'application/octet-stream'</tt><tt class="py-op">,</tt> </tt>
-<a name="L450"></a><tt class="py-lineno"> 450</tt> <tt class="py-line"> <tt class="py-param">chunksize</tt><tt class="py-op">=</tt><tt id="link-57" class="py-name"><a title="apiclient.http.DEFAULT_CHUNK_SIZE" class="py-name" href="#" onclick="return doclink('link-57', 'DEFAULT_CHUNK_SIZE', 'link-19');">DEFAULT_CHUNK_SIZE</a></tt><tt class="py-op">,</tt> <tt class="py-param">resumable</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="MediaInMemoryUpload.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaInMemoryUpload.__init__-expanded"><a name="L451"></a><tt class="py-lineno"> 451</tt> <tt class="py-line"> <tt class="py-docstring">"""Create a new MediaInMemoryUpload.</tt> </tt>
-<a name="L452"></a><tt class="py-lineno"> 452</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L453"></a><tt class="py-lineno"> 453</tt> <tt class="py-line"><tt class="py-docstring"> DEPRECATED: Use MediaIoBaseUpload with either io.TextIOBase or StringIO for</tt> </tt>
-<a name="L454"></a><tt class="py-lineno"> 454</tt> <tt class="py-line"><tt class="py-docstring"> the stream.</tt> </tt>
+</div></div><a name="L442"></a><tt class="py-lineno"> 442</tt> <tt class="py-line"> </tt>
+<a name="MediaInMemoryUpload"></a><div id="MediaInMemoryUpload-def"><a name="L443"></a><tt class="py-lineno"> 443</tt> <tt class="py-line"> </tt>
+<a name="L444"></a><tt class="py-lineno"> 444</tt> <a class="py-toggle" href="#" id="MediaInMemoryUpload-toggle" onclick="return toggle('MediaInMemoryUpload');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.http.MediaInMemoryUpload-class.html">MediaInMemoryUpload</a><tt class="py-op">(</tt><tt class="py-base-class">MediaIoBaseUpload</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="MediaInMemoryUpload-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="MediaInMemoryUpload-expanded"><a name="L445"></a><tt class="py-lineno"> 445</tt> <tt class="py-line"> <tt class="py-docstring">"""MediaUpload for a chunk of bytes.</tt> </tt>
+<a name="L446"></a><tt class="py-lineno"> 446</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L447"></a><tt class="py-lineno"> 447</tt> <tt class="py-line"><tt class="py-docstring"> DEPRECATED: Use MediaIoBaseUpload with either io.TextIOBase or StringIO for</tt> </tt>
+<a name="L448"></a><tt class="py-lineno"> 448</tt> <tt class="py-line"><tt class="py-docstring"> the stream.</tt> </tt>
+<a name="L449"></a><tt class="py-lineno"> 449</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L450"></a><tt class="py-lineno"> 450</tt> <tt class="py-line"> </tt>
+<a name="L451"></a><tt class="py-lineno"> 451</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-56" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-56', 'positional', 'link-21');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="MediaInMemoryUpload.__init__"></a><div id="MediaInMemoryUpload.__init__-def"><a name="L452"></a><tt class="py-lineno"> 452</tt> <a class="py-toggle" href="#" id="MediaInMemoryUpload.__init__-toggle" onclick="return toggle('MediaInMemoryUpload.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaInMemoryUpload-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">body</tt><tt class="py-op">,</tt> <tt class="py-param">mimetype</tt><tt class="py-op">=</tt><tt class="py-string">'application/octet-stream'</tt><tt class="py-op">,</tt> </tt>
+<a name="L453"></a><tt class="py-lineno"> 453</tt> <tt class="py-line"> <tt class="py-param">chunksize</tt><tt class="py-op">=</tt><tt id="link-57" class="py-name"><a title="apiclient.http.DEFAULT_CHUNK_SIZE" class="py-name" href="#" onclick="return doclink('link-57', 'DEFAULT_CHUNK_SIZE', 'link-19');">DEFAULT_CHUNK_SIZE</a></tt><tt class="py-op">,</tt> <tt class="py-param">resumable</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="MediaInMemoryUpload.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaInMemoryUpload.__init__-expanded"><a name="L454"></a><tt class="py-lineno"> 454</tt> <tt class="py-line"> <tt class="py-docstring">"""Create a new MediaInMemoryUpload.</tt> </tt>
<a name="L455"></a><tt class="py-lineno"> 455</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L456"></a><tt class="py-lineno"> 456</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L457"></a><tt class="py-lineno"> 457</tt> <tt class="py-line"><tt class="py-docstring"> body: string, Bytes of body content.</tt> </tt>
-<a name="L458"></a><tt class="py-lineno"> 458</tt> <tt class="py-line"><tt class="py-docstring"> mimetype: string, Mime-type of the file or default of</tt> </tt>
-<a name="L459"></a><tt class="py-lineno"> 459</tt> <tt class="py-line"><tt class="py-docstring"> 'application/octet-stream'.</tt> </tt>
-<a name="L460"></a><tt class="py-lineno"> 460</tt> <tt class="py-line"><tt class="py-docstring"> chunksize: int, File will be uploaded in chunks of this many bytes. Only</tt> </tt>
-<a name="L461"></a><tt class="py-lineno"> 461</tt> <tt class="py-line"><tt class="py-docstring"> used if resumable=True.</tt> </tt>
-<a name="L462"></a><tt class="py-lineno"> 462</tt> <tt class="py-line"><tt class="py-docstring"> resumable: bool, True if this is a resumable upload. False means upload</tt> </tt>
-<a name="L463"></a><tt class="py-lineno"> 463</tt> <tt class="py-line"><tt class="py-docstring"> in a single request.</tt> </tt>
-<a name="L464"></a><tt class="py-lineno"> 464</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L465"></a><tt class="py-lineno"> 465</tt> <tt class="py-line"> <tt class="py-name">fd</tt> <tt class="py-op">=</tt> <tt class="py-name">StringIO</tt><tt class="py-op">.</tt><tt class="py-name">StringIO</tt><tt class="py-op">(</tt><tt class="py-name">body</tt><tt class="py-op">)</tt> </tt>
-<a name="L466"></a><tt class="py-lineno"> 466</tt> <tt class="py-line"> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-58" class="py-name" targets="Class apiclient.http.MediaInMemoryUpload=apiclient.http.MediaInMemoryUpload-class.html"><a title="apiclient.http.MediaInMemoryUpload" class="py-name" href="#" onclick="return doclink('link-58', 'MediaInMemoryUpload', 'link-58');">MediaInMemoryUpload</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-59" class="py-name"><a title="apiclient.discovery.Resource.__init__
+<a name="L456"></a><tt class="py-lineno"> 456</tt> <tt class="py-line"><tt class="py-docstring"> DEPRECATED: Use MediaIoBaseUpload with either io.TextIOBase or StringIO for</tt> </tt>
+<a name="L457"></a><tt class="py-lineno"> 457</tt> <tt class="py-line"><tt class="py-docstring"> the stream.</tt> </tt>
+<a name="L458"></a><tt class="py-lineno"> 458</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L459"></a><tt class="py-lineno"> 459</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L460"></a><tt class="py-lineno"> 460</tt> <tt class="py-line"><tt class="py-docstring"> body: string, Bytes of body content.</tt> </tt>
+<a name="L461"></a><tt class="py-lineno"> 461</tt> <tt class="py-line"><tt class="py-docstring"> mimetype: string, Mime-type of the file or default of</tt> </tt>
+<a name="L462"></a><tt class="py-lineno"> 462</tt> <tt class="py-line"><tt class="py-docstring"> 'application/octet-stream'.</tt> </tt>
+<a name="L463"></a><tt class="py-lineno"> 463</tt> <tt class="py-line"><tt class="py-docstring"> chunksize: int, File will be uploaded in chunks of this many bytes. Only</tt> </tt>
+<a name="L464"></a><tt class="py-lineno"> 464</tt> <tt class="py-line"><tt class="py-docstring"> used if resumable=True.</tt> </tt>
+<a name="L465"></a><tt class="py-lineno"> 465</tt> <tt class="py-line"><tt class="py-docstring"> resumable: bool, True if this is a resumable upload. False means upload</tt> </tt>
+<a name="L466"></a><tt class="py-lineno"> 466</tt> <tt class="py-line"><tt class="py-docstring"> in a single request.</tt> </tt>
+<a name="L467"></a><tt class="py-lineno"> 467</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L468"></a><tt class="py-lineno"> 468</tt> <tt class="py-line"> <tt class="py-name">fd</tt> <tt class="py-op">=</tt> <tt class="py-name">StringIO</tt><tt class="py-op">.</tt><tt class="py-name">StringIO</tt><tt class="py-op">(</tt><tt id="link-58" class="py-name" targets="Method apiclient.channel.Channel.body()=apiclient.channel.Channel-class.html#body"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-58', 'body', 'link-58');">body</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L469"></a><tt class="py-lineno"> 469</tt> <tt class="py-line"> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-59" class="py-name" targets="Class apiclient.http.MediaInMemoryUpload=apiclient.http.MediaInMemoryUpload-class.html"><a title="apiclient.http.MediaInMemoryUpload" class="py-name" href="#" onclick="return doclink('link-59', 'MediaInMemoryUpload', 'link-59');">MediaInMemoryUpload</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-60" class="py-name"><a title="apiclient.channel.Channel.__init__
+apiclient.channel.Notification.__init__
+apiclient.discovery.Resource.__init__
apiclient.discovery.ResourceMethodParameters.__init__
apiclient.errors.BatchError.__init__
apiclient.errors.HttpError.__init__
@@ -665,10 +665,6 @@
apiclient.http._StreamSlice.__init__
apiclient.model.JsonModel.__init__
apiclient.model.ProtocolBufferModel.__init__
-apiclient.push.Channel.__init__
-apiclient.push.Headers.__init__
-apiclient.push.Subscription.__init__
-apiclient.push.WebhookChannel.__init__
apiclient.schema.Schemas.__init__
apiclient.schema._SchemaToStruct.__init__
oauth2client.appengine.AppAssertionCredentials.__init__
@@ -690,1358 +686,1423 @@
oauth2client.locked_file.LockedFile.__init__
oauth2client.locked_file._Opener.__init__
oauth2client.multistore_file._MultiStore._Storage.__init__
-oauth2client.multistore_file._MultiStore.__init__" class="py-name" href="#" onclick="return doclink('link-59', '__init__', 'link-29');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">fd</tt><tt class="py-op">,</tt> <tt id="link-60" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.mimetype
-apiclient.http.MediaUpload.mimetype" class="py-name" href="#" onclick="return doclink('link-60', 'mimetype', 'link-30');">mimetype</a></tt><tt class="py-op">,</tt> <tt id="link-61" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.chunksize
-apiclient.http.MediaUpload.chunksize" class="py-name" href="#" onclick="return doclink('link-61', 'chunksize', 'link-31');">chunksize</a></tt><tt class="py-op">=</tt><tt id="link-62" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.chunksize
-apiclient.http.MediaUpload.chunksize" class="py-name" href="#" onclick="return doclink('link-62', 'chunksize', 'link-31');">chunksize</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L467"></a><tt class="py-lineno"> 467</tt> <tt class="py-line"> <tt id="link-63" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
-apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-63', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">=</tt><tt id="link-64" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
-apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-64', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L468"></a><tt class="py-lineno"> 468</tt> <tt class="py-line"> </tt>
-<a name="MediaIoBaseDownload"></a><div id="MediaIoBaseDownload-def"><a name="L469"></a><tt class="py-lineno"> 469</tt> <tt class="py-line"> </tt>
-<a name="L470"></a><tt class="py-lineno"> 470</tt> <a class="py-toggle" href="#" id="MediaIoBaseDownload-toggle" onclick="return toggle('MediaIoBaseDownload');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.http.MediaIoBaseDownload-class.html">MediaIoBaseDownload</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="MediaIoBaseDownload-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="MediaIoBaseDownload-expanded"><a name="L471"></a><tt class="py-lineno"> 471</tt> <tt class="py-line"> <tt class="py-docstring">""""Download media resources.</tt> </tt>
-<a name="L472"></a><tt class="py-lineno"> 472</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L473"></a><tt class="py-lineno"> 473</tt> <tt class="py-line"><tt class="py-docstring"> Note that the Python file object is compatible with io.Base and can be used</tt> </tt>
-<a name="L474"></a><tt class="py-lineno"> 474</tt> <tt class="py-line"><tt class="py-docstring"> with this class also.</tt> </tt>
+oauth2client.multistore_file._MultiStore.__init__" class="py-name" href="#" onclick="return doclink('link-60', '__init__', 'link-29');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">fd</tt><tt class="py-op">,</tt> <tt id="link-61" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.mimetype
+apiclient.http.MediaUpload.mimetype" class="py-name" href="#" onclick="return doclink('link-61', 'mimetype', 'link-30');">mimetype</a></tt><tt class="py-op">,</tt> <tt id="link-62" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.chunksize
+apiclient.http.MediaUpload.chunksize" class="py-name" href="#" onclick="return doclink('link-62', 'chunksize', 'link-31');">chunksize</a></tt><tt class="py-op">=</tt><tt id="link-63" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.chunksize
+apiclient.http.MediaUpload.chunksize" class="py-name" href="#" onclick="return doclink('link-63', 'chunksize', 'link-31');">chunksize</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L470"></a><tt class="py-lineno"> 470</tt> <tt class="py-line"> <tt id="link-64" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
+apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-64', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">=</tt><tt id="link-65" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
+apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-65', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L471"></a><tt class="py-lineno"> 471</tt> <tt class="py-line"> </tt>
+<a name="MediaIoBaseDownload"></a><div id="MediaIoBaseDownload-def"><a name="L472"></a><tt class="py-lineno"> 472</tt> <tt class="py-line"> </tt>
+<a name="L473"></a><tt class="py-lineno"> 473</tt> <a class="py-toggle" href="#" id="MediaIoBaseDownload-toggle" onclick="return toggle('MediaIoBaseDownload');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.http.MediaIoBaseDownload-class.html">MediaIoBaseDownload</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="MediaIoBaseDownload-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="MediaIoBaseDownload-expanded"><a name="L474"></a><tt class="py-lineno"> 474</tt> <tt class="py-line"> <tt class="py-docstring">""""Download media resources.</tt> </tt>
<a name="L475"></a><tt class="py-lineno"> 475</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L476"></a><tt class="py-lineno"> 476</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L477"></a><tt class="py-lineno"> 477</tt> <tt class="py-line"><tt class="py-docstring"> Example:</tt> </tt>
-<a name="L478"></a><tt class="py-lineno"> 478</tt> <tt class="py-line"><tt class="py-docstring"> request = farms.animals().get_media(id='cow')</tt> </tt>
-<a name="L479"></a><tt class="py-lineno"> 479</tt> <tt class="py-line"><tt class="py-docstring"> fh = io.FileIO('cow.png', mode='wb')</tt> </tt>
-<a name="L480"></a><tt class="py-lineno"> 480</tt> <tt class="py-line"><tt class="py-docstring"> downloader = MediaIoBaseDownload(fh, request, chunksize=1024*1024)</tt> </tt>
-<a name="L481"></a><tt class="py-lineno"> 481</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L482"></a><tt class="py-lineno"> 482</tt> <tt class="py-line"><tt class="py-docstring"> done = False</tt> </tt>
-<a name="L483"></a><tt class="py-lineno"> 483</tt> <tt class="py-line"><tt class="py-docstring"> while done is False:</tt> </tt>
-<a name="L484"></a><tt class="py-lineno"> 484</tt> <tt class="py-line"><tt class="py-docstring"> status, done = downloader.next_chunk()</tt> </tt>
-<a name="L485"></a><tt class="py-lineno"> 485</tt> <tt class="py-line"><tt class="py-docstring"> if status:</tt> </tt>
-<a name="L486"></a><tt class="py-lineno"> 486</tt> <tt class="py-line"><tt class="py-docstring"> print "Download %d%%." % int(status.progress() * 100)</tt> </tt>
-<a name="L487"></a><tt class="py-lineno"> 487</tt> <tt class="py-line"><tt class="py-docstring"> print "Download Complete!"</tt> </tt>
-<a name="L488"></a><tt class="py-lineno"> 488</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L489"></a><tt class="py-lineno"> 489</tt> <tt class="py-line"> </tt>
-<a name="L490"></a><tt class="py-lineno"> 490</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-65" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-65', 'positional', 'link-21');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
-<a name="MediaIoBaseDownload.__init__"></a><div id="MediaIoBaseDownload.__init__-def"><a name="L491"></a><tt class="py-lineno"> 491</tt> <a class="py-toggle" href="#" id="MediaIoBaseDownload.__init__-toggle" onclick="return toggle('MediaIoBaseDownload.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaIoBaseDownload-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">fd</tt><tt class="py-op">,</tt> <tt class="py-param">request</tt><tt class="py-op">,</tt> <tt class="py-param">chunksize</tt><tt class="py-op">=</tt><tt id="link-66" class="py-name"><a title="apiclient.http.DEFAULT_CHUNK_SIZE" class="py-name" href="#" onclick="return doclink('link-66', 'DEFAULT_CHUNK_SIZE', 'link-19');">DEFAULT_CHUNK_SIZE</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="MediaIoBaseDownload.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaIoBaseDownload.__init__-expanded"><a name="L492"></a><tt class="py-lineno"> 492</tt> <tt class="py-line"> <tt class="py-docstring">"""Constructor.</tt> </tt>
-<a name="L493"></a><tt class="py-lineno"> 493</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L494"></a><tt class="py-lineno"> 494</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L495"></a><tt class="py-lineno"> 495</tt> <tt class="py-line"><tt class="py-docstring"> fd: io.Base or file object, The stream in which to write the downloaded</tt> </tt>
-<a name="L496"></a><tt class="py-lineno"> 496</tt> <tt class="py-line"><tt class="py-docstring"> bytes.</tt> </tt>
-<a name="L497"></a><tt class="py-lineno"> 497</tt> <tt class="py-line"><tt class="py-docstring"> request: apiclient.http.HttpRequest, the media request to perform in</tt> </tt>
-<a name="L498"></a><tt class="py-lineno"> 498</tt> <tt class="py-line"><tt class="py-docstring"> chunks.</tt> </tt>
-<a name="L499"></a><tt class="py-lineno"> 499</tt> <tt class="py-line"><tt class="py-docstring"> chunksize: int, File will be downloaded in chunks of this many bytes.</tt> </tt>
-<a name="L500"></a><tt class="py-lineno"> 500</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L501"></a><tt class="py-lineno"> 501</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fd</tt> <tt class="py-op">=</tt> <tt class="py-name">fd</tt> </tt>
-<a name="L502"></a><tt class="py-lineno"> 502</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_request</tt> <tt class="py-op">=</tt> <tt id="link-67" class="py-name" targets="Method apiclient.http.HttpMock.request()=apiclient.http.HttpMock-class.html#request,Method apiclient.http.HttpMockSequence.request()=apiclient.http.HttpMockSequence-class.html#request,Method apiclient.model.BaseModel.request()=apiclient.model.BaseModel-class.html#request,Method apiclient.model.Model.request()=apiclient.model.Model-class.html#request"><a title="apiclient.http.HttpMock.request
+<a name="L476"></a><tt class="py-lineno"> 476</tt> <tt class="py-line"><tt class="py-docstring"> Note that the Python file object is compatible with io.Base and can be used</tt> </tt>
+<a name="L477"></a><tt class="py-lineno"> 477</tt> <tt class="py-line"><tt class="py-docstring"> with this class also.</tt> </tt>
+<a name="L478"></a><tt class="py-lineno"> 478</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L479"></a><tt class="py-lineno"> 479</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L480"></a><tt class="py-lineno"> 480</tt> <tt class="py-line"><tt class="py-docstring"> Example:</tt> </tt>
+<a name="L481"></a><tt class="py-lineno"> 481</tt> <tt class="py-line"><tt class="py-docstring"> request = farms.animals().get_media(id='cow')</tt> </tt>
+<a name="L482"></a><tt class="py-lineno"> 482</tt> <tt class="py-line"><tt class="py-docstring"> fh = io.FileIO('cow.png', mode='wb')</tt> </tt>
+<a name="L483"></a><tt class="py-lineno"> 483</tt> <tt class="py-line"><tt class="py-docstring"> downloader = MediaIoBaseDownload(fh, request, chunksize=1024*1024)</tt> </tt>
+<a name="L484"></a><tt class="py-lineno"> 484</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L485"></a><tt class="py-lineno"> 485</tt> <tt class="py-line"><tt class="py-docstring"> done = False</tt> </tt>
+<a name="L486"></a><tt class="py-lineno"> 486</tt> <tt class="py-line"><tt class="py-docstring"> while done is False:</tt> </tt>
+<a name="L487"></a><tt class="py-lineno"> 487</tt> <tt class="py-line"><tt class="py-docstring"> status, done = downloader.next_chunk()</tt> </tt>
+<a name="L488"></a><tt class="py-lineno"> 488</tt> <tt class="py-line"><tt class="py-docstring"> if status:</tt> </tt>
+<a name="L489"></a><tt class="py-lineno"> 489</tt> <tt class="py-line"><tt class="py-docstring"> print "Download %d%%." % int(status.progress() * 100)</tt> </tt>
+<a name="L490"></a><tt class="py-lineno"> 490</tt> <tt class="py-line"><tt class="py-docstring"> print "Download Complete!"</tt> </tt>
+<a name="L491"></a><tt class="py-lineno"> 491</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L492"></a><tt class="py-lineno"> 492</tt> <tt class="py-line"> </tt>
+<a name="L493"></a><tt class="py-lineno"> 493</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-66" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-66', 'positional', 'link-21');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
+<a name="MediaIoBaseDownload.__init__"></a><div id="MediaIoBaseDownload.__init__-def"><a name="L494"></a><tt class="py-lineno"> 494</tt> <a class="py-toggle" href="#" id="MediaIoBaseDownload.__init__-toggle" onclick="return toggle('MediaIoBaseDownload.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaIoBaseDownload-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">fd</tt><tt class="py-op">,</tt> <tt class="py-param">request</tt><tt class="py-op">,</tt> <tt class="py-param">chunksize</tt><tt class="py-op">=</tt><tt id="link-67" class="py-name"><a title="apiclient.http.DEFAULT_CHUNK_SIZE" class="py-name" href="#" onclick="return doclink('link-67', 'DEFAULT_CHUNK_SIZE', 'link-19');">DEFAULT_CHUNK_SIZE</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="MediaIoBaseDownload.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaIoBaseDownload.__init__-expanded"><a name="L495"></a><tt class="py-lineno"> 495</tt> <tt class="py-line"> <tt class="py-docstring">"""Constructor.</tt> </tt>
+<a name="L496"></a><tt class="py-lineno"> 496</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L497"></a><tt class="py-lineno"> 497</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L498"></a><tt class="py-lineno"> 498</tt> <tt class="py-line"><tt class="py-docstring"> fd: io.Base or file object, The stream in which to write the downloaded</tt> </tt>
+<a name="L499"></a><tt class="py-lineno"> 499</tt> <tt class="py-line"><tt class="py-docstring"> bytes.</tt> </tt>
+<a name="L500"></a><tt class="py-lineno"> 500</tt> <tt class="py-line"><tt class="py-docstring"> request: apiclient.http.HttpRequest, the media request to perform in</tt> </tt>
+<a name="L501"></a><tt class="py-lineno"> 501</tt> <tt class="py-line"><tt class="py-docstring"> chunks.</tt> </tt>
+<a name="L502"></a><tt class="py-lineno"> 502</tt> <tt class="py-line"><tt class="py-docstring"> chunksize: int, File will be downloaded in chunks of this many bytes.</tt> </tt>
+<a name="L503"></a><tt class="py-lineno"> 503</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L504"></a><tt class="py-lineno"> 504</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fd</tt> <tt class="py-op">=</tt> <tt class="py-name">fd</tt> </tt>
+<a name="L505"></a><tt class="py-lineno"> 505</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_request</tt> <tt class="py-op">=</tt> <tt id="link-68" class="py-name" targets="Method apiclient.http.HttpMock.request()=apiclient.http.HttpMock-class.html#request,Method apiclient.http.HttpMockSequence.request()=apiclient.http.HttpMockSequence-class.html#request,Method apiclient.model.BaseModel.request()=apiclient.model.BaseModel-class.html#request,Method apiclient.model.Model.request()=apiclient.model.Model-class.html#request"><a title="apiclient.http.HttpMock.request
apiclient.http.HttpMockSequence.request
apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-67', 'request', 'link-67');">request</a></tt> </tt>
-<a name="L503"></a><tt class="py-lineno"> 503</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_uri</tt> <tt class="py-op">=</tt> <tt id="link-68" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-68', 'request', 'link-68');">request</a></tt> </tt>
+<a name="L506"></a><tt class="py-lineno"> 506</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_uri</tt> <tt class="py-op">=</tt> <tt id="link-69" class="py-name"><a title="apiclient.http.HttpMock.request
apiclient.http.HttpMockSequence.request
apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-68', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">uri</tt> </tt>
-<a name="L504"></a><tt class="py-lineno"> 504</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_chunksize</tt> <tt class="py-op">=</tt> <tt id="link-69" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.chunksize
-apiclient.http.MediaUpload.chunksize" class="py-name" href="#" onclick="return doclink('link-69', 'chunksize', 'link-31');">chunksize</a></tt> </tt>
-<a name="L505"></a><tt class="py-lineno"> 505</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
-<a name="L506"></a><tt class="py-lineno"> 506</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_total_size</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L507"></a><tt class="py-lineno"> 507</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_done</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
-</div><a name="L508"></a><tt class="py-lineno"> 508</tt> <tt class="py-line"> </tt>
-<a name="MediaIoBaseDownload.next_chunk"></a><div id="MediaIoBaseDownload.next_chunk-def"><a name="L509"></a><tt class="py-lineno"> 509</tt> <a class="py-toggle" href="#" id="MediaIoBaseDownload.next_chunk-toggle" onclick="return toggle('MediaIoBaseDownload.next_chunk');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaIoBaseDownload-class.html#next_chunk">next_chunk</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="MediaIoBaseDownload.next_chunk-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaIoBaseDownload.next_chunk-expanded"><a name="L510"></a><tt class="py-lineno"> 510</tt> <tt class="py-line"> <tt class="py-docstring">"""Get the next chunk of the download.</tt> </tt>
-<a name="L511"></a><tt class="py-lineno"> 511</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L512"></a><tt class="py-lineno"> 512</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L513"></a><tt class="py-lineno"> 513</tt> <tt class="py-line"><tt class="py-docstring"> (status, done): (MediaDownloadStatus, boolean)</tt> </tt>
-<a name="L514"></a><tt class="py-lineno"> 514</tt> <tt class="py-line"><tt class="py-docstring"> The value of 'done' will be True when the media has been fully</tt> </tt>
-<a name="L515"></a><tt class="py-lineno"> 515</tt> <tt class="py-line"><tt class="py-docstring"> downloaded.</tt> </tt>
-<a name="L516"></a><tt class="py-lineno"> 516</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L517"></a><tt class="py-lineno"> 517</tt> <tt class="py-line"><tt class="py-docstring"> Raises:</tt> </tt>
-<a name="L518"></a><tt class="py-lineno"> 518</tt> <tt class="py-line"><tt class="py-docstring"> apiclient.errors.HttpError if the response was not a 2xx.</tt> </tt>
-<a name="L519"></a><tt class="py-lineno"> 519</tt> <tt class="py-line"><tt class="py-docstring"> httplib2.HttpLib2Error if a transport error has occured.</tt> </tt>
-<a name="L520"></a><tt class="py-lineno"> 520</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L521"></a><tt class="py-lineno"> 521</tt> <tt class="py-line"> <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
-<a name="L522"></a><tt class="py-lineno"> 522</tt> <tt class="py-line"> <tt class="py-string">'range'</tt><tt class="py-op">:</tt> <tt class="py-string">'bytes=%d-%d'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt> </tt>
-<a name="L523"></a><tt class="py-lineno"> 523</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_chunksize</tt><tt class="py-op">)</tt> </tt>
-<a name="L524"></a><tt class="py-lineno"> 524</tt> <tt class="py-line"> <tt class="py-op">}</tt> </tt>
-<a name="L525"></a><tt class="py-lineno"> 525</tt> <tt class="py-line"> <tt id="link-70" class="py-name" targets="Module apiclient.http=apiclient.http-module.html,Method oauth2client.appengine.OAuth2Decorator.http()=oauth2client.appengine.OAuth2Decorator-class.html#http"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-70', 'http', 'link-70');">http</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_request</tt><tt class="py-op">.</tt><tt id="link-71" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-71', 'http', 'link-70');">http</a></tt> </tt>
-<a name="L526"></a><tt class="py-lineno"> 526</tt> <tt class="py-line"> <tt id="link-72" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-72', 'http', 'link-70');">http</a></tt><tt class="py-op">.</tt><tt class="py-name">follow_redirects</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
-<a name="L527"></a><tt class="py-lineno"> 527</tt> <tt class="py-line"> </tt>
-<a name="L528"></a><tt class="py-lineno"> 528</tt> <tt class="py-line"> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt id="link-73" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-73', 'http', 'link-70');">http</a></tt><tt class="py-op">.</tt><tt id="link-74" class="py-name"><a title="apiclient.http.HttpMock.request
-apiclient.http.HttpMockSequence.request
-apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-74', 'request', 'link-67');">request</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_uri</tt><tt class="py-op">,</tt> <tt class="py-name">headers</tt><tt class="py-op">=</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
-<a name="L529"></a><tt class="py-lineno"> 529</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt class="py-number">301</tt><tt class="py-op">,</tt> <tt class="py-number">302</tt><tt class="py-op">,</tt> <tt class="py-number">303</tt><tt class="py-op">,</tt> <tt class="py-number">307</tt><tt class="py-op">,</tt> <tt class="py-number">308</tt><tt class="py-op">]</tt> <tt class="py-keyword">and</tt> <tt class="py-string">'location'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">resp</tt><tt class="py-op">:</tt> </tt>
-<a name="L530"></a><tt class="py-lineno"> 530</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'location'</tt><tt class="py-op">]</tt> </tt>
-<a name="L531"></a><tt class="py-lineno"> 531</tt> <tt class="py-line"> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt id="link-75" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-75', 'http', 'link-70');">http</a></tt><tt class="py-op">.</tt><tt id="link-76" class="py-name"><a title="apiclient.http.HttpMock.request
-apiclient.http.HttpMockSequence.request
-apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-76', 'request', 'link-67');">request</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_uri</tt><tt class="py-op">,</tt> <tt class="py-name">headers</tt><tt class="py-op">=</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
-<a name="L532"></a><tt class="py-lineno"> 532</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt class="py-number">200</tt><tt class="py-op">,</tt> <tt class="py-number">206</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
-<a name="L533"></a><tt class="py-lineno"> 533</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress</tt> <tt class="py-op">+=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
-<a name="L534"></a><tt class="py-lineno"> 534</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fd</tt><tt class="py-op">.</tt><tt id="link-77" class="py-name" targets="Method apiclient.push.Headers.write()=apiclient.push.Headers-class.html#write"><a title="apiclient.push.Headers.write" class="py-name" href="#" onclick="return doclink('link-77', 'write', 'link-77');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
-<a name="L535"></a><tt class="py-lineno"> 535</tt> <tt class="py-line"> </tt>
-<a name="L536"></a><tt class="py-lineno"> 536</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'content-range'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">resp</tt><tt class="py-op">:</tt> </tt>
-<a name="L537"></a><tt class="py-lineno"> 537</tt> <tt class="py-line"> <tt class="py-name">content_range</tt> <tt class="py-op">=</tt> <tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'content-range'</tt><tt class="py-op">]</tt> </tt>
-<a name="L538"></a><tt class="py-lineno"> 538</tt> <tt class="py-line"> <tt class="py-name">length</tt> <tt class="py-op">=</tt> <tt class="py-name">content_range</tt><tt class="py-op">.</tt><tt class="py-name">rsplit</tt><tt class="py-op">(</tt><tt class="py-string">'/'</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
-<a name="L539"></a><tt class="py-lineno"> 539</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_total_size</tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">length</tt><tt class="py-op">)</tt> </tt>
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-69', 'request', 'link-68');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">uri</tt> </tt>
+<a name="L507"></a><tt class="py-lineno"> 507</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_chunksize</tt> <tt class="py-op">=</tt> <tt id="link-70" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.chunksize
+apiclient.http.MediaUpload.chunksize" class="py-name" href="#" onclick="return doclink('link-70', 'chunksize', 'link-31');">chunksize</a></tt> </tt>
+<a name="L508"></a><tt class="py-lineno"> 508</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L509"></a><tt class="py-lineno"> 509</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_total_size</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L510"></a><tt class="py-lineno"> 510</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_done</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L511"></a><tt class="py-lineno"> 511</tt> <tt class="py-line"> </tt>
+<a name="L512"></a><tt class="py-lineno"> 512</tt> <tt class="py-line"> <tt class="py-comment"># Stubs for testing.</tt> </tt>
+<a name="L513"></a><tt class="py-lineno"> 513</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_sleep</tt> <tt class="py-op">=</tt> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">sleep</tt> </tt>
+<a name="L514"></a><tt class="py-lineno"> 514</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_rand</tt> <tt class="py-op">=</tt> <tt class="py-name">random</tt><tt class="py-op">.</tt><tt class="py-name">random</tt> </tt>
+</div><a name="L515"></a><tt class="py-lineno"> 515</tt> <tt class="py-line"> </tt>
+<a name="L516"></a><tt class="py-lineno"> 516</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-71" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-71', 'positional', 'link-21');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="MediaIoBaseDownload.next_chunk"></a><div id="MediaIoBaseDownload.next_chunk-def"><a name="L517"></a><tt class="py-lineno"> 517</tt> <a class="py-toggle" href="#" id="MediaIoBaseDownload.next_chunk-toggle" onclick="return toggle('MediaIoBaseDownload.next_chunk');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.MediaIoBaseDownload-class.html#next_chunk">next_chunk</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">num_retries</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="MediaIoBaseDownload.next_chunk-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="MediaIoBaseDownload.next_chunk-expanded"><a name="L518"></a><tt class="py-lineno"> 518</tt> <tt class="py-line"> <tt class="py-docstring">"""Get the next chunk of the download.</tt> </tt>
+<a name="L519"></a><tt class="py-lineno"> 519</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L520"></a><tt class="py-lineno"> 520</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L521"></a><tt class="py-lineno"> 521</tt> <tt class="py-line"><tt class="py-docstring"> num_retries: Integer, number of times to retry 500's with randomized</tt> </tt>
+<a name="L522"></a><tt class="py-lineno"> 522</tt> <tt class="py-line"><tt class="py-docstring"> exponential backoff. If all retries fail, the raised HttpError</tt> </tt>
+<a name="L523"></a><tt class="py-lineno"> 523</tt> <tt class="py-line"><tt class="py-docstring"> represents the last request. If zero (default), we attempt the</tt> </tt>
+<a name="L524"></a><tt class="py-lineno"> 524</tt> <tt class="py-line"><tt class="py-docstring"> request only once.</tt> </tt>
+<a name="L525"></a><tt class="py-lineno"> 525</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L526"></a><tt class="py-lineno"> 526</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L527"></a><tt class="py-lineno"> 527</tt> <tt class="py-line"><tt class="py-docstring"> (status, done): (MediaDownloadStatus, boolean)</tt> </tt>
+<a name="L528"></a><tt class="py-lineno"> 528</tt> <tt class="py-line"><tt class="py-docstring"> The value of 'done' will be True when the media has been fully</tt> </tt>
+<a name="L529"></a><tt class="py-lineno"> 529</tt> <tt class="py-line"><tt class="py-docstring"> downloaded.</tt> </tt>
+<a name="L530"></a><tt class="py-lineno"> 530</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L531"></a><tt class="py-lineno"> 531</tt> <tt class="py-line"><tt class="py-docstring"> Raises:</tt> </tt>
+<a name="L532"></a><tt class="py-lineno"> 532</tt> <tt class="py-line"><tt class="py-docstring"> apiclient.errors.HttpError if the response was not a 2xx.</tt> </tt>
+<a name="L533"></a><tt class="py-lineno"> 533</tt> <tt class="py-line"><tt class="py-docstring"> httplib2.HttpLib2Error if a transport error has occured.</tt> </tt>
+<a name="L534"></a><tt class="py-lineno"> 534</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L535"></a><tt class="py-lineno"> 535</tt> <tt class="py-line"> <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L536"></a><tt class="py-lineno"> 536</tt> <tt class="py-line"> <tt class="py-string">'range'</tt><tt class="py-op">:</tt> <tt class="py-string">'bytes=%d-%d'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt> </tt>
+<a name="L537"></a><tt class="py-lineno"> 537</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_chunksize</tt><tt class="py-op">)</tt> </tt>
+<a name="L538"></a><tt class="py-lineno"> 538</tt> <tt class="py-line"> <tt class="py-op">}</tt> </tt>
+<a name="L539"></a><tt class="py-lineno"> 539</tt> <tt class="py-line"> <tt id="link-72" class="py-name" targets="Module apiclient.http=apiclient.http-module.html,Method oauth2client.appengine.OAuth2Decorator.http()=oauth2client.appengine.OAuth2Decorator-class.html#http"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-72', 'http', 'link-72');">http</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_request</tt><tt class="py-op">.</tt><tt id="link-73" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-73', 'http', 'link-72');">http</a></tt> </tt>
<a name="L540"></a><tt class="py-lineno"> 540</tt> <tt class="py-line"> </tt>
-<a name="L541"></a><tt class="py-lineno"> 541</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress</tt> <tt class="py-op">==</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_total_size</tt><tt class="py-op">:</tt> </tt>
-<a name="L542"></a><tt class="py-lineno"> 542</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_done</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
-<a name="L543"></a><tt class="py-lineno"> 543</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-78" class="py-name" targets="Class apiclient.http.MediaDownloadProgress=apiclient.http.MediaDownloadProgress-class.html"><a title="apiclient.http.MediaDownloadProgress" class="py-name" href="#" onclick="return doclink('link-78', 'MediaDownloadProgress', 'link-78');">MediaDownloadProgress</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_total_size</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_done</tt> </tt>
-<a name="L544"></a><tt class="py-lineno"> 544</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L545"></a><tt class="py-lineno"> 545</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-79" class="py-name"><a title="apiclient.errors.HttpError" class="py-name" href="#" onclick="return doclink('link-79', 'HttpError', 'link-4');">HttpError</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">,</tt> <tt class="py-name">uri</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_uri</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L546"></a><tt class="py-lineno"> 546</tt> <tt class="py-line"> </tt>
-<a name="_StreamSlice"></a><div id="_StreamSlice-def"><a name="L547"></a><tt class="py-lineno"> 547</tt> <tt class="py-line"> </tt>
-<a name="L548"></a><tt class="py-lineno"> 548</tt> <a class="py-toggle" href="#" id="_StreamSlice-toggle" onclick="return toggle('_StreamSlice');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.http._StreamSlice-class.html">_StreamSlice</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_StreamSlice-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_StreamSlice-expanded"><a name="L549"></a><tt class="py-lineno"> 549</tt> <tt class="py-line"> <tt class="py-docstring">"""Truncated stream.</tt> </tt>
-<a name="L550"></a><tt class="py-lineno"> 550</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L551"></a><tt class="py-lineno"> 551</tt> <tt class="py-line"><tt class="py-docstring"> Takes a stream and presents a stream that is a slice of the original stream.</tt> </tt>
-<a name="L552"></a><tt class="py-lineno"> 552</tt> <tt class="py-line"><tt class="py-docstring"> This is used when uploading media in chunks. In later versions of Python a</tt> </tt>
-<a name="L553"></a><tt class="py-lineno"> 553</tt> <tt class="py-line"><tt class="py-docstring"> stream can be passed to httplib in place of the string of data to send. The</tt> </tt>
-<a name="L554"></a><tt class="py-lineno"> 554</tt> <tt class="py-line"><tt class="py-docstring"> problem is that httplib just blindly reads to the end of the stream. This</tt> </tt>
-<a name="L555"></a><tt class="py-lineno"> 555</tt> <tt class="py-line"><tt class="py-docstring"> wrapper presents a virtual stream that only reads to the end of the chunk.</tt> </tt>
-<a name="L556"></a><tt class="py-lineno"> 556</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L541"></a><tt class="py-lineno"> 541</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">retry_num</tt> <tt class="py-keyword">in</tt> <tt class="py-name">xrange</tt><tt class="py-op">(</tt><tt class="py-name">num_retries</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L542"></a><tt class="py-lineno"> 542</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">retry_num</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L543"></a><tt class="py-lineno"> 543</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_sleep</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_rand</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">*</tt> <tt class="py-number">2</tt><tt class="py-op">**</tt><tt class="py-name">retry_num</tt><tt class="py-op">)</tt> </tt>
+<a name="L544"></a><tt class="py-lineno"> 544</tt> <tt class="py-line"> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt> </tt>
+<a name="L545"></a><tt class="py-lineno"> 545</tt> <tt class="py-line"> <tt class="py-string">'Retry #%d for media download: GET %s, following status: %d'</tt> </tt>
+<a name="L546"></a><tt class="py-lineno"> 546</tt> <tt class="py-line"> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">retry_num</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_uri</tt><tt class="py-op">,</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L547"></a><tt class="py-lineno"> 547</tt> <tt class="py-line"> </tt>
+<a name="L548"></a><tt class="py-lineno"> 548</tt> <tt class="py-line"> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt id="link-74" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-74', 'http', 'link-72');">http</a></tt><tt class="py-op">.</tt><tt id="link-75" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.http.HttpMockSequence.request
+apiclient.model.BaseModel.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-75', 'request', 'link-68');">request</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_uri</tt><tt class="py-op">,</tt> <tt class="py-name">headers</tt><tt class="py-op">=</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
+<a name="L549"></a><tt class="py-lineno"> 549</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-op"><</tt> <tt class="py-number">500</tt><tt class="py-op">:</tt> </tt>
+<a name="L550"></a><tt class="py-lineno"> 550</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt>
+<a name="L551"></a><tt class="py-lineno"> 551</tt> <tt class="py-line"> </tt>
+<a name="L552"></a><tt class="py-lineno"> 552</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt class="py-number">200</tt><tt class="py-op">,</tt> <tt class="py-number">206</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L553"></a><tt class="py-lineno"> 553</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'content-location'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">resp</tt> <tt class="py-keyword">and</tt> <tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'content-location'</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_uri</tt><tt class="py-op">:</tt> </tt>
+<a name="L554"></a><tt class="py-lineno"> 554</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'content-location'</tt><tt class="py-op">]</tt> </tt>
+<a name="L555"></a><tt class="py-lineno"> 555</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress</tt> <tt class="py-op">+=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
+<a name="L556"></a><tt class="py-lineno"> 556</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fd</tt><tt class="py-op">.</tt><tt class="py-name">write</tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
<a name="L557"></a><tt class="py-lineno"> 557</tt> <tt class="py-line"> </tt>
-<a name="_StreamSlice.__init__"></a><div id="_StreamSlice.__init__-def"><a name="L558"></a><tt class="py-lineno"> 558</tt> <a class="py-toggle" href="#" id="_StreamSlice.__init__-toggle" onclick="return toggle('_StreamSlice.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http._StreamSlice-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">stream</tt><tt class="py-op">,</tt> <tt class="py-param">begin</tt><tt class="py-op">,</tt> <tt class="py-param">chunksize</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_StreamSlice.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="_StreamSlice.__init__-expanded"><a name="L559"></a><tt class="py-lineno"> 559</tt> <tt class="py-line"> <tt class="py-docstring">"""Constructor.</tt> </tt>
-<a name="L560"></a><tt class="py-lineno"> 560</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L561"></a><tt class="py-lineno"> 561</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L562"></a><tt class="py-lineno"> 562</tt> <tt class="py-line"><tt class="py-docstring"> stream: (io.Base, file object), the stream to wrap.</tt> </tt>
-<a name="L563"></a><tt class="py-lineno"> 563</tt> <tt class="py-line"><tt class="py-docstring"> begin: int, the seek position the chunk begins at.</tt> </tt>
-<a name="L564"></a><tt class="py-lineno"> 564</tt> <tt class="py-line"><tt class="py-docstring"> chunksize: int, the size of the chunk.</tt> </tt>
-<a name="L565"></a><tt class="py-lineno"> 565</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L566"></a><tt class="py-lineno"> 566</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_stream</tt> <tt class="py-op">=</tt> <tt id="link-80" class="py-name" targets="Method apiclient.http.MediaIoBaseUpload.stream()=apiclient.http.MediaIoBaseUpload-class.html#stream,Method apiclient.http.MediaUpload.stream()=apiclient.http.MediaUpload-class.html#stream"><a title="apiclient.http.MediaIoBaseUpload.stream
-apiclient.http.MediaUpload.stream" class="py-name" href="#" onclick="return doclink('link-80', 'stream', 'link-80');">stream</a></tt> </tt>
-<a name="L567"></a><tt class="py-lineno"> 567</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_begin</tt> <tt class="py-op">=</tt> <tt class="py-name">begin</tt> </tt>
-<a name="L568"></a><tt class="py-lineno"> 568</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_chunksize</tt> <tt class="py-op">=</tt> <tt id="link-81" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.chunksize
-apiclient.http.MediaUpload.chunksize" class="py-name" href="#" onclick="return doclink('link-81', 'chunksize', 'link-31');">chunksize</a></tt> </tt>
-<a name="L569"></a><tt class="py-lineno"> 569</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_stream</tt><tt class="py-op">.</tt><tt class="py-name">seek</tt><tt class="py-op">(</tt><tt class="py-name">begin</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L570"></a><tt class="py-lineno"> 570</tt> <tt class="py-line"> </tt>
-<a name="_StreamSlice.read"></a><div id="_StreamSlice.read-def"><a name="L571"></a><tt class="py-lineno"> 571</tt> <a class="py-toggle" href="#" id="_StreamSlice.read-toggle" onclick="return toggle('_StreamSlice.read');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http._StreamSlice-class.html#read">read</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">n</tt><tt class="py-op">=</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_StreamSlice.read-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="_StreamSlice.read-expanded"><a name="L572"></a><tt class="py-lineno"> 572</tt> <tt class="py-line"> <tt class="py-docstring">"""Read n bytes.</tt> </tt>
-<a name="L573"></a><tt class="py-lineno"> 573</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L574"></a><tt class="py-lineno"> 574</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L575"></a><tt class="py-lineno"> 575</tt> <tt class="py-line"><tt class="py-docstring"> n, int, the number of bytes to read.</tt> </tt>
-<a name="L576"></a><tt class="py-lineno"> 576</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L577"></a><tt class="py-lineno"> 577</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L578"></a><tt class="py-lineno"> 578</tt> <tt class="py-line"><tt class="py-docstring"> A string of length 'n', or less if EOF is reached.</tt> </tt>
-<a name="L579"></a><tt class="py-lineno"> 579</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L580"></a><tt class="py-lineno"> 580</tt> <tt class="py-line"> <tt class="py-comment"># The data left available to read sits in [cur, end)</tt> </tt>
-<a name="L581"></a><tt class="py-lineno"> 581</tt> <tt class="py-line"> <tt class="py-name">cur</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_stream</tt><tt class="py-op">.</tt><tt class="py-name">tell</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L582"></a><tt class="py-lineno"> 582</tt> <tt class="py-line"> <tt class="py-name">end</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_begin</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_chunksize</tt> </tt>
-<a name="L583"></a><tt class="py-lineno"> 583</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">n</tt> <tt class="py-op">==</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt> <tt class="py-keyword">or</tt> <tt class="py-name">cur</tt> <tt class="py-op">+</tt> <tt class="py-name">n</tt> <tt class="py-op">></tt> <tt class="py-name">end</tt><tt class="py-op">:</tt> </tt>
-<a name="L584"></a><tt class="py-lineno"> 584</tt> <tt class="py-line"> <tt class="py-name">n</tt> <tt class="py-op">=</tt> <tt class="py-name">end</tt> <tt class="py-op">-</tt> <tt class="py-name">cur</tt> </tt>
-<a name="L585"></a><tt class="py-lineno"> 585</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_stream</tt><tt class="py-op">.</tt><tt id="link-82" class="py-name"><a title="apiclient.http._StreamSlice.read
-apiclient.push.Headers.read" class="py-name" href="#" onclick="return doclink('link-82', 'read', 'link-36');">read</a></tt><tt class="py-op">(</tt><tt class="py-name">n</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L586"></a><tt class="py-lineno"> 586</tt> <tt class="py-line"> </tt>
-<a name="HttpRequest"></a><div id="HttpRequest-def"><a name="L587"></a><tt class="py-lineno"> 587</tt> <tt class="py-line"> </tt>
-<a name="L588"></a><tt class="py-lineno"> 588</tt> <a class="py-toggle" href="#" id="HttpRequest-toggle" onclick="return toggle('HttpRequest');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.http.HttpRequest-class.html">HttpRequest</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="HttpRequest-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="HttpRequest-expanded"><a name="L589"></a><tt class="py-lineno"> 589</tt> <tt class="py-line"> <tt class="py-docstring">"""Encapsulates a single HTTP request."""</tt> </tt>
-<a name="L590"></a><tt class="py-lineno"> 590</tt> <tt class="py-line"> </tt>
-<a name="L591"></a><tt class="py-lineno"> 591</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-83" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-83', 'positional', 'link-21');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">4</tt><tt class="py-op">)</tt> </tt>
-<a name="HttpRequest.__init__"></a><div id="HttpRequest.__init__-def"><a name="L592"></a><tt class="py-lineno"> 592</tt> <a class="py-toggle" href="#" id="HttpRequest.__init__-toggle" onclick="return toggle('HttpRequest.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.HttpRequest-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">,</tt> <tt class="py-param">postproc</tt><tt class="py-op">,</tt> <tt class="py-param">uri</tt><tt class="py-op">,</tt> </tt>
-<a name="L593"></a><tt class="py-lineno"> 593</tt> <tt class="py-line"> <tt class="py-param">method</tt><tt class="py-op">=</tt><tt class="py-string">'GET'</tt><tt class="py-op">,</tt> </tt>
-<a name="L594"></a><tt class="py-lineno"> 594</tt> <tt class="py-line"> <tt class="py-param">body</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L595"></a><tt class="py-lineno"> 595</tt> <tt class="py-line"> <tt class="py-param">headers</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L596"></a><tt class="py-lineno"> 596</tt> <tt class="py-line"> <tt class="py-param">methodId</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L597"></a><tt class="py-lineno"> 597</tt> <tt class="py-line"> <tt class="py-param">resumable</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="HttpRequest.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpRequest.__init__-expanded"><a name="L598"></a><tt class="py-lineno"> 598</tt> <tt class="py-line"> <tt class="py-docstring">"""Constructor for an HttpRequest.</tt> </tt>
-<a name="L599"></a><tt class="py-lineno"> 599</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L600"></a><tt class="py-lineno"> 600</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L601"></a><tt class="py-lineno"> 601</tt> <tt class="py-line"><tt class="py-docstring"> http: httplib2.Http, the transport object to use to make a request</tt> </tt>
-<a name="L602"></a><tt class="py-lineno"> 602</tt> <tt class="py-line"><tt class="py-docstring"> postproc: callable, called on the HTTP response and content to transform</tt> </tt>
-<a name="L603"></a><tt class="py-lineno"> 603</tt> <tt class="py-line"><tt class="py-docstring"> it into a data object before returning, or raising an exception</tt> </tt>
-<a name="L604"></a><tt class="py-lineno"> 604</tt> <tt class="py-line"><tt class="py-docstring"> on an error.</tt> </tt>
-<a name="L605"></a><tt class="py-lineno"> 605</tt> <tt class="py-line"><tt class="py-docstring"> uri: string, the absolute URI to send the request to</tt> </tt>
-<a name="L606"></a><tt class="py-lineno"> 606</tt> <tt class="py-line"><tt class="py-docstring"> method: string, the HTTP method to use</tt> </tt>
-<a name="L607"></a><tt class="py-lineno"> 607</tt> <tt class="py-line"><tt class="py-docstring"> body: string, the request body of the HTTP request,</tt> </tt>
-<a name="L608"></a><tt class="py-lineno"> 608</tt> <tt class="py-line"><tt class="py-docstring"> headers: dict, the HTTP request headers</tt> </tt>
-<a name="L609"></a><tt class="py-lineno"> 609</tt> <tt class="py-line"><tt class="py-docstring"> methodId: string, a unique identifier for the API method being called.</tt> </tt>
-<a name="L610"></a><tt class="py-lineno"> 610</tt> <tt class="py-line"><tt class="py-docstring"> resumable: MediaUpload, None if this is not a resumbale request.</tt> </tt>
-<a name="L611"></a><tt class="py-lineno"> 611</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L612"></a><tt class="py-lineno"> 612</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uri</tt> <tt class="py-op">=</tt> <tt class="py-name">uri</tt> </tt>
-<a name="L613"></a><tt class="py-lineno"> 613</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt class="py-name">method</tt> </tt>
-<a name="L614"></a><tt class="py-lineno"> 614</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">body</tt> </tt>
-<a name="L615"></a><tt class="py-lineno"> 615</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-name">headers</tt> <tt class="py-keyword">or</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-<a name="L616"></a><tt class="py-lineno"> 616</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">methodId</tt> <tt class="py-op">=</tt> <tt class="py-name">methodId</tt> </tt>
-<a name="L617"></a><tt class="py-lineno"> 617</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-84" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-84', 'http', 'link-70');">http</a></tt> <tt class="py-op">=</tt> <tt id="link-85" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-85', 'http', 'link-70');">http</a></tt> </tt>
-<a name="L618"></a><tt class="py-lineno"> 618</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">postproc</tt> <tt class="py-op">=</tt> <tt class="py-name">postproc</tt> </tt>
-<a name="L619"></a><tt class="py-lineno"> 619</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-86" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
+<a name="L558"></a><tt class="py-lineno"> 558</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'content-range'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">resp</tt><tt class="py-op">:</tt> </tt>
+<a name="L559"></a><tt class="py-lineno"> 559</tt> <tt class="py-line"> <tt class="py-name">content_range</tt> <tt class="py-op">=</tt> <tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'content-range'</tt><tt class="py-op">]</tt> </tt>
+<a name="L560"></a><tt class="py-lineno"> 560</tt> <tt class="py-line"> <tt class="py-name">length</tt> <tt class="py-op">=</tt> <tt class="py-name">content_range</tt><tt class="py-op">.</tt><tt class="py-name">rsplit</tt><tt class="py-op">(</tt><tt class="py-string">'/'</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L561"></a><tt class="py-lineno"> 561</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_total_size</tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">length</tt><tt class="py-op">)</tt> </tt>
+<a name="L562"></a><tt class="py-lineno"> 562</tt> <tt class="py-line"> </tt>
+<a name="L563"></a><tt class="py-lineno"> 563</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress</tt> <tt class="py-op">==</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_total_size</tt><tt class="py-op">:</tt> </tt>
+<a name="L564"></a><tt class="py-lineno"> 564</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_done</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L565"></a><tt class="py-lineno"> 565</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-76" class="py-name" targets="Class apiclient.http.MediaDownloadProgress=apiclient.http.MediaDownloadProgress-class.html"><a title="apiclient.http.MediaDownloadProgress" class="py-name" href="#" onclick="return doclink('link-76', 'MediaDownloadProgress', 'link-76');">MediaDownloadProgress</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_progress</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_total_size</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_done</tt> </tt>
+<a name="L566"></a><tt class="py-lineno"> 566</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L567"></a><tt class="py-lineno"> 567</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-77" class="py-name"><a title="apiclient.errors.HttpError" class="py-name" href="#" onclick="return doclink('link-77', 'HttpError', 'link-4');">HttpError</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">,</tt> <tt class="py-name">uri</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_uri</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L568"></a><tt class="py-lineno"> 568</tt> <tt class="py-line"> </tt>
+<a name="_StreamSlice"></a><div id="_StreamSlice-def"><a name="L569"></a><tt class="py-lineno"> 569</tt> <tt class="py-line"> </tt>
+<a name="L570"></a><tt class="py-lineno"> 570</tt> <a class="py-toggle" href="#" id="_StreamSlice-toggle" onclick="return toggle('_StreamSlice');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.http._StreamSlice-class.html">_StreamSlice</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_StreamSlice-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_StreamSlice-expanded"><a name="L571"></a><tt class="py-lineno"> 571</tt> <tt class="py-line"> <tt class="py-docstring">"""Truncated stream.</tt> </tt>
+<a name="L572"></a><tt class="py-lineno"> 572</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L573"></a><tt class="py-lineno"> 573</tt> <tt class="py-line"><tt class="py-docstring"> Takes a stream and presents a stream that is a slice of the original stream.</tt> </tt>
+<a name="L574"></a><tt class="py-lineno"> 574</tt> <tt class="py-line"><tt class="py-docstring"> This is used when uploading media in chunks. In later versions of Python a</tt> </tt>
+<a name="L575"></a><tt class="py-lineno"> 575</tt> <tt class="py-line"><tt class="py-docstring"> stream can be passed to httplib in place of the string of data to send. The</tt> </tt>
+<a name="L576"></a><tt class="py-lineno"> 576</tt> <tt class="py-line"><tt class="py-docstring"> problem is that httplib just blindly reads to the end of the stream. This</tt> </tt>
+<a name="L577"></a><tt class="py-lineno"> 577</tt> <tt class="py-line"><tt class="py-docstring"> wrapper presents a virtual stream that only reads to the end of the chunk.</tt> </tt>
+<a name="L578"></a><tt class="py-lineno"> 578</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L579"></a><tt class="py-lineno"> 579</tt> <tt class="py-line"> </tt>
+<a name="_StreamSlice.__init__"></a><div id="_StreamSlice.__init__-def"><a name="L580"></a><tt class="py-lineno"> 580</tt> <a class="py-toggle" href="#" id="_StreamSlice.__init__-toggle" onclick="return toggle('_StreamSlice.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http._StreamSlice-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">stream</tt><tt class="py-op">,</tt> <tt class="py-param">begin</tt><tt class="py-op">,</tt> <tt class="py-param">chunksize</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_StreamSlice.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="_StreamSlice.__init__-expanded"><a name="L581"></a><tt class="py-lineno"> 581</tt> <tt class="py-line"> <tt class="py-docstring">"""Constructor.</tt> </tt>
+<a name="L582"></a><tt class="py-lineno"> 582</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L583"></a><tt class="py-lineno"> 583</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L584"></a><tt class="py-lineno"> 584</tt> <tt class="py-line"><tt class="py-docstring"> stream: (io.Base, file object), the stream to wrap.</tt> </tt>
+<a name="L585"></a><tt class="py-lineno"> 585</tt> <tt class="py-line"><tt class="py-docstring"> begin: int, the seek position the chunk begins at.</tt> </tt>
+<a name="L586"></a><tt class="py-lineno"> 586</tt> <tt class="py-line"><tt class="py-docstring"> chunksize: int, the size of the chunk.</tt> </tt>
+<a name="L587"></a><tt class="py-lineno"> 587</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L588"></a><tt class="py-lineno"> 588</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_stream</tt> <tt class="py-op">=</tt> <tt id="link-78" class="py-name" targets="Method apiclient.http.MediaIoBaseUpload.stream()=apiclient.http.MediaIoBaseUpload-class.html#stream,Method apiclient.http.MediaUpload.stream()=apiclient.http.MediaUpload-class.html#stream"><a title="apiclient.http.MediaIoBaseUpload.stream
+apiclient.http.MediaUpload.stream" class="py-name" href="#" onclick="return doclink('link-78', 'stream', 'link-78');">stream</a></tt> </tt>
+<a name="L589"></a><tt class="py-lineno"> 589</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_begin</tt> <tt class="py-op">=</tt> <tt class="py-name">begin</tt> </tt>
+<a name="L590"></a><tt class="py-lineno"> 590</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_chunksize</tt> <tt class="py-op">=</tt> <tt id="link-79" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.chunksize
+apiclient.http.MediaUpload.chunksize" class="py-name" href="#" onclick="return doclink('link-79', 'chunksize', 'link-31');">chunksize</a></tt> </tt>
+<a name="L591"></a><tt class="py-lineno"> 591</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_stream</tt><tt class="py-op">.</tt><tt class="py-name">seek</tt><tt class="py-op">(</tt><tt class="py-name">begin</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L592"></a><tt class="py-lineno"> 592</tt> <tt class="py-line"> </tt>
+<a name="_StreamSlice.read"></a><div id="_StreamSlice.read-def"><a name="L593"></a><tt class="py-lineno"> 593</tt> <a class="py-toggle" href="#" id="_StreamSlice.read-toggle" onclick="return toggle('_StreamSlice.read');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http._StreamSlice-class.html#read">read</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">n</tt><tt class="py-op">=</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_StreamSlice.read-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="_StreamSlice.read-expanded"><a name="L594"></a><tt class="py-lineno"> 594</tt> <tt class="py-line"> <tt class="py-docstring">"""Read n bytes.</tt> </tt>
+<a name="L595"></a><tt class="py-lineno"> 595</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L596"></a><tt class="py-lineno"> 596</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L597"></a><tt class="py-lineno"> 597</tt> <tt class="py-line"><tt class="py-docstring"> n, int, the number of bytes to read.</tt> </tt>
+<a name="L598"></a><tt class="py-lineno"> 598</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L599"></a><tt class="py-lineno"> 599</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L600"></a><tt class="py-lineno"> 600</tt> <tt class="py-line"><tt class="py-docstring"> A string of length 'n', or less if EOF is reached.</tt> </tt>
+<a name="L601"></a><tt class="py-lineno"> 601</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L602"></a><tt class="py-lineno"> 602</tt> <tt class="py-line"> <tt class="py-comment"># The data left available to read sits in [cur, end)</tt> </tt>
+<a name="L603"></a><tt class="py-lineno"> 603</tt> <tt class="py-line"> <tt class="py-name">cur</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_stream</tt><tt class="py-op">.</tt><tt class="py-name">tell</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L604"></a><tt class="py-lineno"> 604</tt> <tt class="py-line"> <tt class="py-name">end</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_begin</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_chunksize</tt> </tt>
+<a name="L605"></a><tt class="py-lineno"> 605</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">n</tt> <tt class="py-op">==</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt> <tt class="py-keyword">or</tt> <tt class="py-name">cur</tt> <tt class="py-op">+</tt> <tt class="py-name">n</tt> <tt class="py-op">></tt> <tt class="py-name">end</tt><tt class="py-op">:</tt> </tt>
+<a name="L606"></a><tt class="py-lineno"> 606</tt> <tt class="py-line"> <tt class="py-name">n</tt> <tt class="py-op">=</tt> <tt class="py-name">end</tt> <tt class="py-op">-</tt> <tt class="py-name">cur</tt> </tt>
+<a name="L607"></a><tt class="py-lineno"> 607</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_stream</tt><tt class="py-op">.</tt><tt id="link-80" class="py-name"><a title="apiclient.http._StreamSlice.read" class="py-name" href="#" onclick="return doclink('link-80', 'read', 'link-36');">read</a></tt><tt class="py-op">(</tt><tt class="py-name">n</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L608"></a><tt class="py-lineno"> 608</tt> <tt class="py-line"> </tt>
+<a name="HttpRequest"></a><div id="HttpRequest-def"><a name="L609"></a><tt class="py-lineno"> 609</tt> <tt class="py-line"> </tt>
+<a name="L610"></a><tt class="py-lineno"> 610</tt> <a class="py-toggle" href="#" id="HttpRequest-toggle" onclick="return toggle('HttpRequest');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.http.HttpRequest-class.html">HttpRequest</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="HttpRequest-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="HttpRequest-expanded"><a name="L611"></a><tt class="py-lineno"> 611</tt> <tt class="py-line"> <tt class="py-docstring">"""Encapsulates a single HTTP request."""</tt> </tt>
+<a name="L612"></a><tt class="py-lineno"> 612</tt> <tt class="py-line"> </tt>
+<a name="L613"></a><tt class="py-lineno"> 613</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-81" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-81', 'positional', 'link-21');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">4</tt><tt class="py-op">)</tt> </tt>
+<a name="HttpRequest.__init__"></a><div id="HttpRequest.__init__-def"><a name="L614"></a><tt class="py-lineno"> 614</tt> <a class="py-toggle" href="#" id="HttpRequest.__init__-toggle" onclick="return toggle('HttpRequest.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.HttpRequest-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">,</tt> <tt class="py-param">postproc</tt><tt class="py-op">,</tt> <tt class="py-param">uri</tt><tt class="py-op">,</tt> </tt>
+<a name="L615"></a><tt class="py-lineno"> 615</tt> <tt class="py-line"> <tt class="py-param">method</tt><tt class="py-op">=</tt><tt class="py-string">'GET'</tt><tt class="py-op">,</tt> </tt>
+<a name="L616"></a><tt class="py-lineno"> 616</tt> <tt class="py-line"> <tt class="py-param">body</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L617"></a><tt class="py-lineno"> 617</tt> <tt class="py-line"> <tt class="py-param">headers</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L618"></a><tt class="py-lineno"> 618</tt> <tt class="py-line"> <tt class="py-param">methodId</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L619"></a><tt class="py-lineno"> 619</tt> <tt class="py-line"> <tt class="py-param">resumable</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="HttpRequest.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpRequest.__init__-expanded"><a name="L620"></a><tt class="py-lineno"> 620</tt> <tt class="py-line"> <tt class="py-docstring">"""Constructor for an HttpRequest.</tt> </tt>
+<a name="L621"></a><tt class="py-lineno"> 621</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L622"></a><tt class="py-lineno"> 622</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L623"></a><tt class="py-lineno"> 623</tt> <tt class="py-line"><tt class="py-docstring"> http: httplib2.Http, the transport object to use to make a request</tt> </tt>
+<a name="L624"></a><tt class="py-lineno"> 624</tt> <tt class="py-line"><tt class="py-docstring"> postproc: callable, called on the HTTP response and content to transform</tt> </tt>
+<a name="L625"></a><tt class="py-lineno"> 625</tt> <tt class="py-line"><tt class="py-docstring"> it into a data object before returning, or raising an exception</tt> </tt>
+<a name="L626"></a><tt class="py-lineno"> 626</tt> <tt class="py-line"><tt class="py-docstring"> on an error.</tt> </tt>
+<a name="L627"></a><tt class="py-lineno"> 627</tt> <tt class="py-line"><tt class="py-docstring"> uri: string, the absolute URI to send the request to</tt> </tt>
+<a name="L628"></a><tt class="py-lineno"> 628</tt> <tt class="py-line"><tt class="py-docstring"> method: string, the HTTP method to use</tt> </tt>
+<a name="L629"></a><tt class="py-lineno"> 629</tt> <tt class="py-line"><tt class="py-docstring"> body: string, the request body of the HTTP request,</tt> </tt>
+<a name="L630"></a><tt class="py-lineno"> 630</tt> <tt class="py-line"><tt class="py-docstring"> headers: dict, the HTTP request headers</tt> </tt>
+<a name="L631"></a><tt class="py-lineno"> 631</tt> <tt class="py-line"><tt class="py-docstring"> methodId: string, a unique identifier for the API method being called.</tt> </tt>
+<a name="L632"></a><tt class="py-lineno"> 632</tt> <tt class="py-line"><tt class="py-docstring"> resumable: MediaUpload, None if this is not a resumbale request.</tt> </tt>
+<a name="L633"></a><tt class="py-lineno"> 633</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L634"></a><tt class="py-lineno"> 634</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uri</tt> <tt class="py-op">=</tt> <tt class="py-name">uri</tt> </tt>
+<a name="L635"></a><tt class="py-lineno"> 635</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt class="py-name">method</tt> </tt>
+<a name="L636"></a><tt class="py-lineno"> 636</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-82" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-82', 'body', 'link-58');">body</a></tt> <tt class="py-op">=</tt> <tt id="link-83" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-83', 'body', 'link-58');">body</a></tt> </tt>
+<a name="L637"></a><tt class="py-lineno"> 637</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-name">headers</tt> <tt class="py-keyword">or</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L638"></a><tt class="py-lineno"> 638</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">methodId</tt> <tt class="py-op">=</tt> <tt class="py-name">methodId</tt> </tt>
+<a name="L639"></a><tt class="py-lineno"> 639</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-84" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-84', 'http', 'link-72');">http</a></tt> <tt class="py-op">=</tt> <tt id="link-85" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-85', 'http', 'link-72');">http</a></tt> </tt>
+<a name="L640"></a><tt class="py-lineno"> 640</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">postproc</tt> <tt class="py-op">=</tt> <tt class="py-name">postproc</tt> </tt>
+<a name="L641"></a><tt class="py-lineno"> 641</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-86" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-86', 'resumable', 'link-35');">resumable</a></tt> <tt class="py-op">=</tt> <tt id="link-87" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-87', 'resumable', 'link-35');">resumable</a></tt> </tt>
-<a name="L620"></a><tt class="py-lineno"> 620</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">response_callbacks</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L621"></a><tt class="py-lineno"> 621</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_in_error_state</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
-<a name="L622"></a><tt class="py-lineno"> 622</tt> <tt class="py-line"> </tt>
-<a name="L623"></a><tt class="py-lineno"> 623</tt> <tt class="py-line"> <tt class="py-comment"># Pull the multipart boundary out of the content-type header.</tt> </tt>
-<a name="L624"></a><tt class="py-lineno"> 624</tt> <tt class="py-line"> <tt class="py-name">major</tt><tt class="py-op">,</tt> <tt class="py-name">minor</tt><tt class="py-op">,</tt> <tt class="py-name">params</tt> <tt class="py-op">=</tt> <tt id="link-88" class="py-name"><a title="apiclient.mimeparse" class="py-name" href="#" onclick="return doclink('link-88', 'mimeparse', 'link-0');">mimeparse</a></tt><tt class="py-op">.</tt><tt id="link-89" class="py-name" targets="Function apiclient.mimeparse.parse_mime_type()=apiclient.mimeparse-module.html#parse_mime_type"><a title="apiclient.mimeparse.parse_mime_type" class="py-name" href="#" onclick="return doclink('link-89', 'parse_mime_type', 'link-89');">parse_mime_type</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L625"></a><tt class="py-lineno"> 625</tt> <tt class="py-line"> <tt class="py-name">headers</tt><tt class="py-op">.</tt><tt id="link-90" class="py-name" targets="Method apiclient.schema.Schemas.get()=apiclient.schema.Schemas-class.html#get,Method oauth2client.client.MemoryCache.get()=oauth2client.client.MemoryCache-class.html#get,Method oauth2client.client.Storage.get()=oauth2client.client.Storage-class.html#get"><a title="apiclient.schema.Schemas.get
+<a name="L642"></a><tt class="py-lineno"> 642</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">response_callbacks</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L643"></a><tt class="py-lineno"> 643</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_in_error_state</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L644"></a><tt class="py-lineno"> 644</tt> <tt class="py-line"> </tt>
+<a name="L645"></a><tt class="py-lineno"> 645</tt> <tt class="py-line"> <tt class="py-comment"># Pull the multipart boundary out of the content-type header.</tt> </tt>
+<a name="L646"></a><tt class="py-lineno"> 646</tt> <tt class="py-line"> <tt class="py-name">major</tt><tt class="py-op">,</tt> <tt class="py-name">minor</tt><tt class="py-op">,</tt> <tt class="py-name">params</tt> <tt class="py-op">=</tt> <tt id="link-88" class="py-name"><a title="apiclient.mimeparse" class="py-name" href="#" onclick="return doclink('link-88', 'mimeparse', 'link-0');">mimeparse</a></tt><tt class="py-op">.</tt><tt id="link-89" class="py-name" targets="Function apiclient.mimeparse.parse_mime_type()=apiclient.mimeparse-module.html#parse_mime_type"><a title="apiclient.mimeparse.parse_mime_type" class="py-name" href="#" onclick="return doclink('link-89', 'parse_mime_type', 'link-89');">parse_mime_type</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L647"></a><tt class="py-lineno"> 647</tt> <tt class="py-line"> <tt class="py-name">headers</tt><tt class="py-op">.</tt><tt id="link-90" class="py-name" targets="Method apiclient.schema.Schemas.get()=apiclient.schema.Schemas-class.html#get,Method oauth2client.client.MemoryCache.get()=oauth2client.client.MemoryCache-class.html#get,Method oauth2client.client.Storage.get()=oauth2client.client.Storage-class.html#get"><a title="apiclient.schema.Schemas.get
oauth2client.client.MemoryCache.get
oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-90', 'get', 'link-90');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'content-type'</tt><tt class="py-op">,</tt> <tt class="py-string">'application/json'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L626"></a><tt class="py-lineno"> 626</tt> <tt class="py-line"> </tt>
-<a name="L627"></a><tt class="py-lineno"> 627</tt> <tt class="py-line"> <tt class="py-comment"># The size of the non-media part of the request.</tt> </tt>
-<a name="L628"></a><tt class="py-lineno"> 628</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">body_size</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">body</tt> <tt class="py-keyword">or</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt> </tt>
-<a name="L629"></a><tt class="py-lineno"> 629</tt> <tt class="py-line"> </tt>
-<a name="L630"></a><tt class="py-lineno"> 630</tt> <tt class="py-line"> <tt class="py-comment"># The resumable URI to send chunks to.</tt> </tt>
-<a name="L631"></a><tt class="py-lineno"> 631</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L632"></a><tt class="py-lineno"> 632</tt> <tt class="py-line"> </tt>
-<a name="L633"></a><tt class="py-lineno"> 633</tt> <tt class="py-line"> <tt class="py-comment"># The bytes that have been uploaded.</tt> </tt>
-<a name="L634"></a><tt class="py-lineno"> 634</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
-</div><a name="L635"></a><tt class="py-lineno"> 635</tt> <tt class="py-line"> </tt>
-<a name="L636"></a><tt class="py-lineno"> 636</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-91" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-91', 'positional', 'link-21');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
-<a name="HttpRequest.execute"></a><div id="HttpRequest.execute-def"><a name="L637"></a><tt class="py-lineno"> 637</tt> <a class="py-toggle" href="#" id="HttpRequest.execute-toggle" onclick="return toggle('HttpRequest.execute');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.HttpRequest-class.html#execute">execute</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="HttpRequest.execute-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpRequest.execute-expanded"><a name="L638"></a><tt class="py-lineno"> 638</tt> <tt class="py-line"> <tt class="py-docstring">"""Execute the request.</tt> </tt>
-<a name="L639"></a><tt class="py-lineno"> 639</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L640"></a><tt class="py-lineno"> 640</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L641"></a><tt class="py-lineno"> 641</tt> <tt class="py-line"><tt class="py-docstring"> http: httplib2.Http, an http object to be used in place of the</tt> </tt>
-<a name="L642"></a><tt class="py-lineno"> 642</tt> <tt class="py-line"><tt class="py-docstring"> one the HttpRequest request object was constructed with.</tt> </tt>
-<a name="L643"></a><tt class="py-lineno"> 643</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L644"></a><tt class="py-lineno"> 644</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L645"></a><tt class="py-lineno"> 645</tt> <tt class="py-line"><tt class="py-docstring"> A deserialized object model of the response body as determined</tt> </tt>
-<a name="L646"></a><tt class="py-lineno"> 646</tt> <tt class="py-line"><tt class="py-docstring"> by the postproc.</tt> </tt>
-<a name="L647"></a><tt class="py-lineno"> 647</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L648"></a><tt class="py-lineno"> 648</tt> <tt class="py-line"><tt class="py-docstring"> Raises:</tt> </tt>
-<a name="L649"></a><tt class="py-lineno"> 649</tt> <tt class="py-line"><tt class="py-docstring"> apiclient.errors.HttpError if the response was not a 2xx.</tt> </tt>
-<a name="L650"></a><tt class="py-lineno"> 650</tt> <tt class="py-line"><tt class="py-docstring"> httplib2.HttpLib2Error if a transport error has occured.</tt> </tt>
-<a name="L651"></a><tt class="py-lineno"> 651</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L652"></a><tt class="py-lineno"> 652</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-92" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-92', 'http', 'link-70');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L653"></a><tt class="py-lineno"> 653</tt> <tt class="py-line"> <tt id="link-93" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-93', 'http', 'link-70');">http</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-94" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-94', 'http', 'link-70');">http</a></tt> </tt>
-<a name="L654"></a><tt class="py-lineno"> 654</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-95" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
-apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-95', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L655"></a><tt class="py-lineno"> 655</tt> <tt class="py-line"> <tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L656"></a><tt class="py-lineno"> 656</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">body</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L657"></a><tt class="py-lineno"> 657</tt> <tt class="py-line"> <tt class="py-name">_</tt><tt class="py-op">,</tt> <tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-96" class="py-name" targets="Method apiclient.http.HttpRequest.next_chunk()=apiclient.http.HttpRequest-class.html#next_chunk,Method apiclient.http.MediaIoBaseDownload.next_chunk()=apiclient.http.MediaIoBaseDownload-class.html#next_chunk"><a title="apiclient.http.HttpRequest.next_chunk
-apiclient.http.MediaIoBaseDownload.next_chunk" class="py-name" href="#" onclick="return doclink('link-96', 'next_chunk', 'link-96');">next_chunk</a></tt><tt class="py-op">(</tt><tt id="link-97" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-97', 'http', 'link-70');">http</a></tt><tt class="py-op">=</tt><tt id="link-98" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-98', 'http', 'link-70');">http</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L658"></a><tt class="py-lineno"> 658</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">body</tt> </tt>
-<a name="L659"></a><tt class="py-lineno"> 659</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L660"></a><tt class="py-lineno"> 660</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'content-length'</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">:</tt> </tt>
-<a name="L661"></a><tt class="py-lineno"> 661</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'content-length'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">body_size</tt><tt class="py-op">)</tt> </tt>
-<a name="L662"></a><tt class="py-lineno"> 662</tt> <tt class="py-line"> <tt class="py-comment"># If the request URI is too long then turn it into a POST request.</tt> </tt>
-<a name="L663"></a><tt class="py-lineno"> 663</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt id="link-99" class="py-name"><a title="apiclient.http.MAX_URI_LENGTH" class="py-name" href="#" onclick="return doclink('link-99', 'MAX_URI_LENGTH', 'link-20');">MAX_URI_LENGTH</a></tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">method</tt> <tt class="py-op">==</tt> <tt class="py-string">'GET'</tt><tt class="py-op">:</tt> </tt>
-<a name="L664"></a><tt class="py-lineno"> 664</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt class="py-string">'POST'</tt> </tt>
-<a name="L665"></a><tt class="py-lineno"> 665</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'x-http-method-override'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'GET'</tt> </tt>
-<a name="L666"></a><tt class="py-lineno"> 666</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'content-type'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'application/x-www-form-urlencoded'</tt> </tt>
-<a name="L667"></a><tt class="py-lineno"> 667</tt> <tt class="py-line"> <tt class="py-name">parsed</tt> <tt class="py-op">=</tt> <tt class="py-name">urlparse</tt><tt class="py-op">.</tt><tt class="py-name">urlparse</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt> </tt>
-<a name="L668"></a><tt class="py-lineno"> 668</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uri</tt> <tt class="py-op">=</tt> <tt class="py-name">urlparse</tt><tt class="py-op">.</tt><tt class="py-name">urlunparse</tt><tt class="py-op">(</tt> </tt>
-<a name="L669"></a><tt class="py-lineno"> 669</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt class="py-name">scheme</tt><tt class="py-op">,</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt class="py-name">netloc</tt><tt class="py-op">,</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">,</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt class="py-name">params</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L670"></a><tt class="py-lineno"> 670</tt> <tt class="py-line"> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
-<a name="L671"></a><tt class="py-lineno"> 671</tt> <tt class="py-line"> <tt class="py-op">)</tt> </tt>
-<a name="L672"></a><tt class="py-lineno"> 672</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt class="py-name">query</tt> </tt>
-<a name="L673"></a><tt class="py-lineno"> 673</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'content-length'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">body</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L674"></a><tt class="py-lineno"> 674</tt> <tt class="py-line"> </tt>
-<a name="L675"></a><tt class="py-lineno"> 675</tt> <tt class="py-line"> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt id="link-100" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-100', 'http', 'link-70');">http</a></tt><tt class="py-op">.</tt><tt id="link-101" class="py-name"><a title="apiclient.http.HttpMock.request
+<a name="L648"></a><tt class="py-lineno"> 648</tt> <tt class="py-line"> </tt>
+<a name="L649"></a><tt class="py-lineno"> 649</tt> <tt class="py-line"> <tt class="py-comment"># The size of the non-media part of the request.</tt> </tt>
+<a name="L650"></a><tt class="py-lineno"> 650</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">body_size</tt> <tt class="py-op">=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-91" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-91', 'body', 'link-58');">body</a></tt> <tt class="py-keyword">or</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt> </tt>
+<a name="L651"></a><tt class="py-lineno"> 651</tt> <tt class="py-line"> </tt>
+<a name="L652"></a><tt class="py-lineno"> 652</tt> <tt class="py-line"> <tt class="py-comment"># The resumable URI to send chunks to.</tt> </tt>
+<a name="L653"></a><tt class="py-lineno"> 653</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L654"></a><tt class="py-lineno"> 654</tt> <tt class="py-line"> </tt>
+<a name="L655"></a><tt class="py-lineno"> 655</tt> <tt class="py-line"> <tt class="py-comment"># The bytes that have been uploaded.</tt> </tt>
+<a name="L656"></a><tt class="py-lineno"> 656</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L657"></a><tt class="py-lineno"> 657</tt> <tt class="py-line"> </tt>
+<a name="L658"></a><tt class="py-lineno"> 658</tt> <tt class="py-line"> <tt class="py-comment"># Stubs for testing.</tt> </tt>
+<a name="L659"></a><tt class="py-lineno"> 659</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_rand</tt> <tt class="py-op">=</tt> <tt class="py-name">random</tt><tt class="py-op">.</tt><tt class="py-name">random</tt> </tt>
+<a name="L660"></a><tt class="py-lineno"> 660</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_sleep</tt> <tt class="py-op">=</tt> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">sleep</tt> </tt>
+</div><a name="L661"></a><tt class="py-lineno"> 661</tt> <tt class="py-line"> </tt>
+<a name="L662"></a><tt class="py-lineno"> 662</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-92" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-92', 'positional', 'link-21');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="HttpRequest.execute"></a><div id="HttpRequest.execute-def"><a name="L663"></a><tt class="py-lineno"> 663</tt> <a class="py-toggle" href="#" id="HttpRequest.execute-toggle" onclick="return toggle('HttpRequest.execute');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.HttpRequest-class.html#execute">execute</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">num_retries</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="HttpRequest.execute-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpRequest.execute-expanded"><a name="L664"></a><tt class="py-lineno"> 664</tt> <tt class="py-line"> <tt class="py-docstring">"""Execute the request.</tt> </tt>
+<a name="L665"></a><tt class="py-lineno"> 665</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L666"></a><tt class="py-lineno"> 666</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L667"></a><tt class="py-lineno"> 667</tt> <tt class="py-line"><tt class="py-docstring"> http: httplib2.Http, an http object to be used in place of the</tt> </tt>
+<a name="L668"></a><tt class="py-lineno"> 668</tt> <tt class="py-line"><tt class="py-docstring"> one the HttpRequest request object was constructed with.</tt> </tt>
+<a name="L669"></a><tt class="py-lineno"> 669</tt> <tt class="py-line"><tt class="py-docstring"> num_retries: Integer, number of times to retry 500's with randomized</tt> </tt>
+<a name="L670"></a><tt class="py-lineno"> 670</tt> <tt class="py-line"><tt class="py-docstring"> exponential backoff. If all retries fail, the raised HttpError</tt> </tt>
+<a name="L671"></a><tt class="py-lineno"> 671</tt> <tt class="py-line"><tt class="py-docstring"> represents the last request. If zero (default), we attempt the</tt> </tt>
+<a name="L672"></a><tt class="py-lineno"> 672</tt> <tt class="py-line"><tt class="py-docstring"> request only once.</tt> </tt>
+<a name="L673"></a><tt class="py-lineno"> 673</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L674"></a><tt class="py-lineno"> 674</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L675"></a><tt class="py-lineno"> 675</tt> <tt class="py-line"><tt class="py-docstring"> A deserialized object model of the response body as determined</tt> </tt>
+<a name="L676"></a><tt class="py-lineno"> 676</tt> <tt class="py-line"><tt class="py-docstring"> by the postproc.</tt> </tt>
+<a name="L677"></a><tt class="py-lineno"> 677</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L678"></a><tt class="py-lineno"> 678</tt> <tt class="py-line"><tt class="py-docstring"> Raises:</tt> </tt>
+<a name="L679"></a><tt class="py-lineno"> 679</tt> <tt class="py-line"><tt class="py-docstring"> apiclient.errors.HttpError if the response was not a 2xx.</tt> </tt>
+<a name="L680"></a><tt class="py-lineno"> 680</tt> <tt class="py-line"><tt class="py-docstring"> httplib2.HttpLib2Error if a transport error has occured.</tt> </tt>
+<a name="L681"></a><tt class="py-lineno"> 681</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L682"></a><tt class="py-lineno"> 682</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-93" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-93', 'http', 'link-72');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L683"></a><tt class="py-lineno"> 683</tt> <tt class="py-line"> <tt id="link-94" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-94', 'http', 'link-72');">http</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-95" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-95', 'http', 'link-72');">http</a></tt> </tt>
+<a name="L684"></a><tt class="py-lineno"> 684</tt> <tt class="py-line"> </tt>
+<a name="L685"></a><tt class="py-lineno"> 685</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-96" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
+apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-96', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L686"></a><tt class="py-lineno"> 686</tt> <tt class="py-line"> <tt id="link-97" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-97', 'body', 'link-58');">body</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L687"></a><tt class="py-lineno"> 687</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt id="link-98" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-98', 'body', 'link-58');">body</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L688"></a><tt class="py-lineno"> 688</tt> <tt class="py-line"> <tt class="py-name">_</tt><tt class="py-op">,</tt> <tt id="link-99" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-99', 'body', 'link-58');">body</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-100" class="py-name" targets="Method apiclient.http.HttpRequest.next_chunk()=apiclient.http.HttpRequest-class.html#next_chunk,Method apiclient.http.MediaIoBaseDownload.next_chunk()=apiclient.http.MediaIoBaseDownload-class.html#next_chunk"><a title="apiclient.http.HttpRequest.next_chunk
+apiclient.http.MediaIoBaseDownload.next_chunk" class="py-name" href="#" onclick="return doclink('link-100', 'next_chunk', 'link-100');">next_chunk</a></tt><tt class="py-op">(</tt><tt id="link-101" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-101', 'http', 'link-72');">http</a></tt><tt class="py-op">=</tt><tt id="link-102" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-102', 'http', 'link-72');">http</a></tt><tt class="py-op">,</tt> <tt class="py-name">num_retries</tt><tt class="py-op">=</tt><tt class="py-name">num_retries</tt><tt class="py-op">)</tt> </tt>
+<a name="L689"></a><tt class="py-lineno"> 689</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-103" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-103', 'body', 'link-58');">body</a></tt> </tt>
+<a name="L690"></a><tt class="py-lineno"> 690</tt> <tt class="py-line"> </tt>
+<a name="L691"></a><tt class="py-lineno"> 691</tt> <tt class="py-line"> <tt class="py-comment"># Non-resumable case.</tt> </tt>
+<a name="L692"></a><tt class="py-lineno"> 692</tt> <tt class="py-line"> </tt>
+<a name="L693"></a><tt class="py-lineno"> 693</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'content-length'</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">:</tt> </tt>
+<a name="L694"></a><tt class="py-lineno"> 694</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'content-length'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">body_size</tt><tt class="py-op">)</tt> </tt>
+<a name="L695"></a><tt class="py-lineno"> 695</tt> <tt class="py-line"> <tt class="py-comment"># If the request URI is too long then turn it into a POST request.</tt> </tt>
+<a name="L696"></a><tt class="py-lineno"> 696</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt id="link-104" class="py-name"><a title="apiclient.http.MAX_URI_LENGTH" class="py-name" href="#" onclick="return doclink('link-104', 'MAX_URI_LENGTH', 'link-20');">MAX_URI_LENGTH</a></tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">method</tt> <tt class="py-op">==</tt> <tt class="py-string">'GET'</tt><tt class="py-op">:</tt> </tt>
+<a name="L697"></a><tt class="py-lineno"> 697</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt class="py-string">'POST'</tt> </tt>
+<a name="L698"></a><tt class="py-lineno"> 698</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'x-http-method-override'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'GET'</tt> </tt>
+<a name="L699"></a><tt class="py-lineno"> 699</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'content-type'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'application/x-www-form-urlencoded'</tt> </tt>
+<a name="L700"></a><tt class="py-lineno"> 700</tt> <tt class="py-line"> <tt class="py-name">parsed</tt> <tt class="py-op">=</tt> <tt class="py-name">urlparse</tt><tt class="py-op">.</tt><tt class="py-name">urlparse</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt> </tt>
+<a name="L701"></a><tt class="py-lineno"> 701</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uri</tt> <tt class="py-op">=</tt> <tt class="py-name">urlparse</tt><tt class="py-op">.</tt><tt class="py-name">urlunparse</tt><tt class="py-op">(</tt> </tt>
+<a name="L702"></a><tt class="py-lineno"> 702</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt class="py-name">scheme</tt><tt class="py-op">,</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt class="py-name">netloc</tt><tt class="py-op">,</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">,</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt class="py-name">params</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L703"></a><tt class="py-lineno"> 703</tt> <tt class="py-line"> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L704"></a><tt class="py-lineno"> 704</tt> <tt class="py-line"> <tt class="py-op">)</tt> </tt>
+<a name="L705"></a><tt class="py-lineno"> 705</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-105" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-105', 'body', 'link-58');">body</a></tt> <tt class="py-op">=</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt class="py-name">query</tt> </tt>
+<a name="L706"></a><tt class="py-lineno"> 706</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'content-length'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-106" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-106', 'body', 'link-58');">body</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L707"></a><tt class="py-lineno"> 707</tt> <tt class="py-line"> </tt>
+<a name="L708"></a><tt class="py-lineno"> 708</tt> <tt class="py-line"> <tt class="py-comment"># Handle retries for server-side errors.</tt> </tt>
+<a name="L709"></a><tt class="py-lineno"> 709</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">retry_num</tt> <tt class="py-keyword">in</tt> <tt class="py-name">xrange</tt><tt class="py-op">(</tt><tt class="py-name">num_retries</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L710"></a><tt class="py-lineno"> 710</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">retry_num</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L711"></a><tt class="py-lineno"> 711</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_sleep</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_rand</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">*</tt> <tt class="py-number">2</tt><tt class="py-op">**</tt><tt class="py-name">retry_num</tt><tt class="py-op">)</tt> </tt>
+<a name="L712"></a><tt class="py-lineno"> 712</tt> <tt class="py-line"> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">'Retry #%d for request: %s %s, following status: %d'</tt> </tt>
+<a name="L713"></a><tt class="py-lineno"> 713</tt> <tt class="py-line"> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">retry_num</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">method</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">,</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L714"></a><tt class="py-lineno"> 714</tt> <tt class="py-line"> </tt>
+<a name="L715"></a><tt class="py-lineno"> 715</tt> <tt class="py-line"> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt id="link-107" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-107', 'http', 'link-72');">http</a></tt><tt class="py-op">.</tt><tt id="link-108" class="py-name"><a title="apiclient.http.HttpMock.request
apiclient.http.HttpMockSequence.request
apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-101', 'request', 'link-67');">request</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt><tt class="py-op">=</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">method</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L676"></a><tt class="py-lineno"> 676</tt> <tt class="py-line"> <tt class="py-name">body</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">body</tt><tt class="py-op">,</tt> <tt class="py-name">headers</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
-<a name="L677"></a><tt class="py-lineno"> 677</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">callback</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">response_callbacks</tt><tt class="py-op">:</tt> </tt>
-<a name="L678"></a><tt class="py-lineno"> 678</tt> <tt class="py-line"> <tt class="py-name">callback</tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">)</tt> </tt>
-<a name="L679"></a><tt class="py-lineno"> 679</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-op">>=</tt> <tt class="py-number">300</tt><tt class="py-op">:</tt> </tt>
-<a name="L680"></a><tt class="py-lineno"> 680</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-102" class="py-name"><a title="apiclient.errors.HttpError" class="py-name" href="#" onclick="return doclink('link-102', 'HttpError', 'link-4');">HttpError</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">,</tt> <tt class="py-name">uri</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt> </tt>
-<a name="L681"></a><tt class="py-lineno"> 681</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">postproc</tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L682"></a><tt class="py-lineno"> 682</tt> <tt class="py-line"> </tt>
-<a name="L683"></a><tt class="py-lineno"> 683</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-103" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-103', 'positional', 'link-21');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
-<a name="HttpRequest.add_response_callback"></a><div id="HttpRequest.add_response_callback-def"><a name="L684"></a><tt class="py-lineno"> 684</tt> <a class="py-toggle" href="#" id="HttpRequest.add_response_callback-toggle" onclick="return toggle('HttpRequest.add_response_callback');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.HttpRequest-class.html#add_response_callback">add_response_callback</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">cb</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="HttpRequest.add_response_callback-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpRequest.add_response_callback-expanded"><a name="L685"></a><tt class="py-lineno"> 685</tt> <tt class="py-line"> <tt class="py-docstring">"""add_response_headers_callback</tt> </tt>
-<a name="L686"></a><tt class="py-lineno"> 686</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L687"></a><tt class="py-lineno"> 687</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L688"></a><tt class="py-lineno"> 688</tt> <tt class="py-line"><tt class="py-docstring"> cb: Callback to be called on receiving the response headers, of signature:</tt> </tt>
-<a name="L689"></a><tt class="py-lineno"> 689</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L690"></a><tt class="py-lineno"> 690</tt> <tt class="py-line"><tt class="py-docstring"> def cb(resp):</tt> </tt>
-<a name="L691"></a><tt class="py-lineno"> 691</tt> <tt class="py-line"><tt class="py-docstring"> # Where resp is an instance of httplib2.Response</tt> </tt>
-<a name="L692"></a><tt class="py-lineno"> 692</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L693"></a><tt class="py-lineno"> 693</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">response_callbacks</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">cb</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L694"></a><tt class="py-lineno"> 694</tt> <tt class="py-line"> </tt>
-<a name="L695"></a><tt class="py-lineno"> 695</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-104" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-104', 'positional', 'link-21');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
-<a name="HttpRequest.next_chunk"></a><div id="HttpRequest.next_chunk-def"><a name="L696"></a><tt class="py-lineno"> 696</tt> <a class="py-toggle" href="#" id="HttpRequest.next_chunk-toggle" onclick="return toggle('HttpRequest.next_chunk');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.HttpRequest-class.html#next_chunk">next_chunk</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="HttpRequest.next_chunk-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpRequest.next_chunk-expanded"><a name="L697"></a><tt class="py-lineno"> 697</tt> <tt class="py-line"> <tt class="py-docstring">"""Execute the next step of a resumable upload.</tt> </tt>
-<a name="L698"></a><tt class="py-lineno"> 698</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L699"></a><tt class="py-lineno"> 699</tt> <tt class="py-line"><tt class="py-docstring"> Can only be used if the method being executed supports media uploads and</tt> </tt>
-<a name="L700"></a><tt class="py-lineno"> 700</tt> <tt class="py-line"><tt class="py-docstring"> the MediaUpload object passed in was flagged as using resumable upload.</tt> </tt>
-<a name="L701"></a><tt class="py-lineno"> 701</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L702"></a><tt class="py-lineno"> 702</tt> <tt class="py-line"><tt class="py-docstring"> Example:</tt> </tt>
-<a name="L703"></a><tt class="py-lineno"> 703</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L704"></a><tt class="py-lineno"> 704</tt> <tt class="py-line"><tt class="py-docstring"> media = MediaFileUpload('cow.png', mimetype='image/png',</tt> </tt>
-<a name="L705"></a><tt class="py-lineno"> 705</tt> <tt class="py-line"><tt class="py-docstring"> chunksize=1000, resumable=True)</tt> </tt>
-<a name="L706"></a><tt class="py-lineno"> 706</tt> <tt class="py-line"><tt class="py-docstring"> request = farm.animals().insert(</tt> </tt>
-<a name="L707"></a><tt class="py-lineno"> 707</tt> <tt class="py-line"><tt class="py-docstring"> id='cow',</tt> </tt>
-<a name="L708"></a><tt class="py-lineno"> 708</tt> <tt class="py-line"><tt class="py-docstring"> name='cow.png',</tt> </tt>
-<a name="L709"></a><tt class="py-lineno"> 709</tt> <tt class="py-line"><tt class="py-docstring"> media_body=media)</tt> </tt>
-<a name="L710"></a><tt class="py-lineno"> 710</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L711"></a><tt class="py-lineno"> 711</tt> <tt class="py-line"><tt class="py-docstring"> response = None</tt> </tt>
-<a name="L712"></a><tt class="py-lineno"> 712</tt> <tt class="py-line"><tt class="py-docstring"> while response is None:</tt> </tt>
-<a name="L713"></a><tt class="py-lineno"> 713</tt> <tt class="py-line"><tt class="py-docstring"> status, response = request.next_chunk()</tt> </tt>
-<a name="L714"></a><tt class="py-lineno"> 714</tt> <tt class="py-line"><tt class="py-docstring"> if status:</tt> </tt>
-<a name="L715"></a><tt class="py-lineno"> 715</tt> <tt class="py-line"><tt class="py-docstring"> print "Upload %d%% complete." % int(status.progress() * 100)</tt> </tt>
-<a name="L716"></a><tt class="py-lineno"> 716</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L717"></a><tt class="py-lineno"> 717</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L718"></a><tt class="py-lineno"> 718</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L719"></a><tt class="py-lineno"> 719</tt> <tt class="py-line"><tt class="py-docstring"> (status, body): (ResumableMediaStatus, object)</tt> </tt>
-<a name="L720"></a><tt class="py-lineno"> 720</tt> <tt class="py-line"><tt class="py-docstring"> The body will be None until the resumable media is fully uploaded.</tt> </tt>
-<a name="L721"></a><tt class="py-lineno"> 721</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L722"></a><tt class="py-lineno"> 722</tt> <tt class="py-line"><tt class="py-docstring"> Raises:</tt> </tt>
-<a name="L723"></a><tt class="py-lineno"> 723</tt> <tt class="py-line"><tt class="py-docstring"> apiclient.errors.HttpError if the response was not a 2xx.</tt> </tt>
-<a name="L724"></a><tt class="py-lineno"> 724</tt> <tt class="py-line"><tt class="py-docstring"> httplib2.HttpLib2Error if a transport error has occured.</tt> </tt>
-<a name="L725"></a><tt class="py-lineno"> 725</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L726"></a><tt class="py-lineno"> 726</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-105" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-105', 'http', 'link-70');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L727"></a><tt class="py-lineno"> 727</tt> <tt class="py-line"> <tt id="link-106" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-106', 'http', 'link-70');">http</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-107" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-107', 'http', 'link-70');">http</a></tt> </tt>
-<a name="L728"></a><tt class="py-lineno"> 728</tt> <tt class="py-line"> </tt>
-<a name="L729"></a><tt class="py-lineno"> 729</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-108" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
-apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-108', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-109" class="py-name" targets="Method apiclient.http.MediaIoBaseUpload.size()=apiclient.http.MediaIoBaseUpload-class.html#size,Method apiclient.http.MediaUpload.size()=apiclient.http.MediaUpload-class.html#size"><a title="apiclient.http.MediaIoBaseUpload.size
-apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-109', 'size', 'link-109');">size</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L730"></a><tt class="py-lineno"> 730</tt> <tt class="py-line"> <tt id="link-110" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.size
-apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-110', 'size', 'link-109');">size</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'*'</tt> </tt>
-<a name="L731"></a><tt class="py-lineno"> 731</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L732"></a><tt class="py-lineno"> 732</tt> <tt class="py-line"> <tt id="link-111" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.size
-apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-111', 'size', 'link-109');">size</a></tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-112" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
-apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-112', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-113" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.size
-apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-113', 'size', 'link-109');">size</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L733"></a><tt class="py-lineno"> 733</tt> <tt class="py-line"> </tt>
-<a name="L734"></a><tt class="py-lineno"> 734</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_uri</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L735"></a><tt class="py-lineno"> 735</tt> <tt class="py-line"> <tt class="py-name">start_headers</tt> <tt class="py-op">=</tt> <tt class="py-name">copy</tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
-<a name="L736"></a><tt class="py-lineno"> 736</tt> <tt class="py-line"> <tt class="py-name">start_headers</tt><tt class="py-op">[</tt><tt class="py-string">'X-Upload-Content-Type'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-114" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
-apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-114', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-115" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.mimetype
-apiclient.http.MediaUpload.mimetype" class="py-name" href="#" onclick="return doclink('link-115', 'mimetype', 'link-30');">mimetype</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L737"></a><tt class="py-lineno"> 737</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-116" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.size
-apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-116', 'size', 'link-109');">size</a></tt> <tt class="py-op">!=</tt> <tt class="py-string">'*'</tt><tt class="py-op">:</tt> </tt>
-<a name="L738"></a><tt class="py-lineno"> 738</tt> <tt class="py-line"> <tt class="py-name">start_headers</tt><tt class="py-op">[</tt><tt class="py-string">'X-Upload-Content-Length'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-117" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.size
-apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-117', 'size', 'link-109');">size</a></tt> </tt>
-<a name="L739"></a><tt class="py-lineno"> 739</tt> <tt class="py-line"> <tt class="py-name">start_headers</tt><tt class="py-op">[</tt><tt class="py-string">'content-length'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">body_size</tt><tt class="py-op">)</tt> </tt>
-<a name="L740"></a><tt class="py-lineno"> 740</tt> <tt class="py-line"> </tt>
-<a name="L741"></a><tt class="py-lineno"> 741</tt> <tt class="py-line"> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt id="link-118" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-118', 'http', 'link-70');">http</a></tt><tt class="py-op">.</tt><tt id="link-119" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-108', 'request', 'link-68');">request</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt><tt class="py-op">=</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">method</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L716"></a><tt class="py-lineno"> 716</tt> <tt class="py-line"> <tt id="link-109" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-109', 'body', 'link-58');">body</a></tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-110" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-110', 'body', 'link-58');">body</a></tt><tt class="py-op">,</tt> <tt class="py-name">headers</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
+<a name="L717"></a><tt class="py-lineno"> 717</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-op"><</tt> <tt class="py-number">500</tt><tt class="py-op">:</tt> </tt>
+<a name="L718"></a><tt class="py-lineno"> 718</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt>
+<a name="L719"></a><tt class="py-lineno"> 719</tt> <tt class="py-line"> </tt>
+<a name="L720"></a><tt class="py-lineno"> 720</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">callback</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">response_callbacks</tt><tt class="py-op">:</tt> </tt>
+<a name="L721"></a><tt class="py-lineno"> 721</tt> <tt class="py-line"> <tt class="py-name">callback</tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">)</tt> </tt>
+<a name="L722"></a><tt class="py-lineno"> 722</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-op">>=</tt> <tt class="py-number">300</tt><tt class="py-op">:</tt> </tt>
+<a name="L723"></a><tt class="py-lineno"> 723</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-111" class="py-name"><a title="apiclient.errors.HttpError" class="py-name" href="#" onclick="return doclink('link-111', 'HttpError', 'link-4');">HttpError</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">,</tt> <tt class="py-name">uri</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt> </tt>
+<a name="L724"></a><tt class="py-lineno"> 724</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">postproc</tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L725"></a><tt class="py-lineno"> 725</tt> <tt class="py-line"> </tt>
+<a name="L726"></a><tt class="py-lineno"> 726</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-112" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-112', 'positional', 'link-21');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="HttpRequest.add_response_callback"></a><div id="HttpRequest.add_response_callback-def"><a name="L727"></a><tt class="py-lineno"> 727</tt> <a class="py-toggle" href="#" id="HttpRequest.add_response_callback-toggle" onclick="return toggle('HttpRequest.add_response_callback');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.HttpRequest-class.html#add_response_callback">add_response_callback</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">cb</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="HttpRequest.add_response_callback-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpRequest.add_response_callback-expanded"><a name="L728"></a><tt class="py-lineno"> 728</tt> <tt class="py-line"> <tt class="py-docstring">"""add_response_headers_callback</tt> </tt>
+<a name="L729"></a><tt class="py-lineno"> 729</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L730"></a><tt class="py-lineno"> 730</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L731"></a><tt class="py-lineno"> 731</tt> <tt class="py-line"><tt class="py-docstring"> cb: Callback to be called on receiving the response headers, of signature:</tt> </tt>
+<a name="L732"></a><tt class="py-lineno"> 732</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L733"></a><tt class="py-lineno"> 733</tt> <tt class="py-line"><tt class="py-docstring"> def cb(resp):</tt> </tt>
+<a name="L734"></a><tt class="py-lineno"> 734</tt> <tt class="py-line"><tt class="py-docstring"> # Where resp is an instance of httplib2.Response</tt> </tt>
+<a name="L735"></a><tt class="py-lineno"> 735</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L736"></a><tt class="py-lineno"> 736</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">response_callbacks</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">cb</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L737"></a><tt class="py-lineno"> 737</tt> <tt class="py-line"> </tt>
+<a name="L738"></a><tt class="py-lineno"> 738</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-113" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-113', 'positional', 'link-21');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="HttpRequest.next_chunk"></a><div id="HttpRequest.next_chunk-def"><a name="L739"></a><tt class="py-lineno"> 739</tt> <a class="py-toggle" href="#" id="HttpRequest.next_chunk-toggle" onclick="return toggle('HttpRequest.next_chunk');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.HttpRequest-class.html#next_chunk">next_chunk</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">num_retries</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="HttpRequest.next_chunk-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpRequest.next_chunk-expanded"><a name="L740"></a><tt class="py-lineno"> 740</tt> <tt class="py-line"> <tt class="py-docstring">"""Execute the next step of a resumable upload.</tt> </tt>
+<a name="L741"></a><tt class="py-lineno"> 741</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L742"></a><tt class="py-lineno"> 742</tt> <tt class="py-line"><tt class="py-docstring"> Can only be used if the method being executed supports media uploads and</tt> </tt>
+<a name="L743"></a><tt class="py-lineno"> 743</tt> <tt class="py-line"><tt class="py-docstring"> the MediaUpload object passed in was flagged as using resumable upload.</tt> </tt>
+<a name="L744"></a><tt class="py-lineno"> 744</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L745"></a><tt class="py-lineno"> 745</tt> <tt class="py-line"><tt class="py-docstring"> Example:</tt> </tt>
+<a name="L746"></a><tt class="py-lineno"> 746</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L747"></a><tt class="py-lineno"> 747</tt> <tt class="py-line"><tt class="py-docstring"> media = MediaFileUpload('cow.png', mimetype='image/png',</tt> </tt>
+<a name="L748"></a><tt class="py-lineno"> 748</tt> <tt class="py-line"><tt class="py-docstring"> chunksize=1000, resumable=True)</tt> </tt>
+<a name="L749"></a><tt class="py-lineno"> 749</tt> <tt class="py-line"><tt class="py-docstring"> request = farm.animals().insert(</tt> </tt>
+<a name="L750"></a><tt class="py-lineno"> 750</tt> <tt class="py-line"><tt class="py-docstring"> id='cow',</tt> </tt>
+<a name="L751"></a><tt class="py-lineno"> 751</tt> <tt class="py-line"><tt class="py-docstring"> name='cow.png',</tt> </tt>
+<a name="L752"></a><tt class="py-lineno"> 752</tt> <tt class="py-line"><tt class="py-docstring"> media_body=media)</tt> </tt>
+<a name="L753"></a><tt class="py-lineno"> 753</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L754"></a><tt class="py-lineno"> 754</tt> <tt class="py-line"><tt class="py-docstring"> response = None</tt> </tt>
+<a name="L755"></a><tt class="py-lineno"> 755</tt> <tt class="py-line"><tt class="py-docstring"> while response is None:</tt> </tt>
+<a name="L756"></a><tt class="py-lineno"> 756</tt> <tt class="py-line"><tt class="py-docstring"> status, response = request.next_chunk()</tt> </tt>
+<a name="L757"></a><tt class="py-lineno"> 757</tt> <tt class="py-line"><tt class="py-docstring"> if status:</tt> </tt>
+<a name="L758"></a><tt class="py-lineno"> 758</tt> <tt class="py-line"><tt class="py-docstring"> print "Upload %d%% complete." % int(status.progress() * 100)</tt> </tt>
+<a name="L759"></a><tt class="py-lineno"> 759</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L760"></a><tt class="py-lineno"> 760</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L761"></a><tt class="py-lineno"> 761</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L762"></a><tt class="py-lineno"> 762</tt> <tt class="py-line"><tt class="py-docstring"> http: httplib2.Http, an http object to be used in place of the</tt> </tt>
+<a name="L763"></a><tt class="py-lineno"> 763</tt> <tt class="py-line"><tt class="py-docstring"> one the HttpRequest request object was constructed with.</tt> </tt>
+<a name="L764"></a><tt class="py-lineno"> 764</tt> <tt class="py-line"><tt class="py-docstring"> num_retries: Integer, number of times to retry 500's with randomized</tt> </tt>
+<a name="L765"></a><tt class="py-lineno"> 765</tt> <tt class="py-line"><tt class="py-docstring"> exponential backoff. If all retries fail, the raised HttpError</tt> </tt>
+<a name="L766"></a><tt class="py-lineno"> 766</tt> <tt class="py-line"><tt class="py-docstring"> represents the last request. If zero (default), we attempt the</tt> </tt>
+<a name="L767"></a><tt class="py-lineno"> 767</tt> <tt class="py-line"><tt class="py-docstring"> request only once.</tt> </tt>
+<a name="L768"></a><tt class="py-lineno"> 768</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L769"></a><tt class="py-lineno"> 769</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L770"></a><tt class="py-lineno"> 770</tt> <tt class="py-line"><tt class="py-docstring"> (status, body): (ResumableMediaStatus, object)</tt> </tt>
+<a name="L771"></a><tt class="py-lineno"> 771</tt> <tt class="py-line"><tt class="py-docstring"> The body will be None until the resumable media is fully uploaded.</tt> </tt>
+<a name="L772"></a><tt class="py-lineno"> 772</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L773"></a><tt class="py-lineno"> 773</tt> <tt class="py-line"><tt class="py-docstring"> Raises:</tt> </tt>
+<a name="L774"></a><tt class="py-lineno"> 774</tt> <tt class="py-line"><tt class="py-docstring"> apiclient.errors.HttpError if the response was not a 2xx.</tt> </tt>
+<a name="L775"></a><tt class="py-lineno"> 775</tt> <tt class="py-line"><tt class="py-docstring"> httplib2.HttpLib2Error if a transport error has occured.</tt> </tt>
+<a name="L776"></a><tt class="py-lineno"> 776</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L777"></a><tt class="py-lineno"> 777</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-114" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-114', 'http', 'link-72');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L778"></a><tt class="py-lineno"> 778</tt> <tt class="py-line"> <tt id="link-115" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-115', 'http', 'link-72');">http</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-116" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-116', 'http', 'link-72');">http</a></tt> </tt>
+<a name="L779"></a><tt class="py-lineno"> 779</tt> <tt class="py-line"> </tt>
+<a name="L780"></a><tt class="py-lineno"> 780</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-117" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
+apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-117', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-118" class="py-name" targets="Method apiclient.http.MediaIoBaseUpload.size()=apiclient.http.MediaIoBaseUpload-class.html#size,Method apiclient.http.MediaUpload.size()=apiclient.http.MediaUpload-class.html#size"><a title="apiclient.http.MediaIoBaseUpload.size
+apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-118', 'size', 'link-118');">size</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L781"></a><tt class="py-lineno"> 781</tt> <tt class="py-line"> <tt id="link-119" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.size
+apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-119', 'size', 'link-118');">size</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'*'</tt> </tt>
+<a name="L782"></a><tt class="py-lineno"> 782</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L783"></a><tt class="py-lineno"> 783</tt> <tt class="py-line"> <tt id="link-120" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.size
+apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-120', 'size', 'link-118');">size</a></tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-121" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
+apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-121', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-122" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.size
+apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-122', 'size', 'link-118');">size</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L784"></a><tt class="py-lineno"> 784</tt> <tt class="py-line"> </tt>
+<a name="L785"></a><tt class="py-lineno"> 785</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_uri</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L786"></a><tt class="py-lineno"> 786</tt> <tt class="py-line"> <tt class="py-name">start_headers</tt> <tt class="py-op">=</tt> <tt class="py-name">copy</tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
+<a name="L787"></a><tt class="py-lineno"> 787</tt> <tt class="py-line"> <tt class="py-name">start_headers</tt><tt class="py-op">[</tt><tt class="py-string">'X-Upload-Content-Type'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-123" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
+apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-123', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-124" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.mimetype
+apiclient.http.MediaUpload.mimetype" class="py-name" href="#" onclick="return doclink('link-124', 'mimetype', 'link-30');">mimetype</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L788"></a><tt class="py-lineno"> 788</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-125" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.size
+apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-125', 'size', 'link-118');">size</a></tt> <tt class="py-op">!=</tt> <tt class="py-string">'*'</tt><tt class="py-op">:</tt> </tt>
+<a name="L789"></a><tt class="py-lineno"> 789</tt> <tt class="py-line"> <tt class="py-name">start_headers</tt><tt class="py-op">[</tt><tt class="py-string">'X-Upload-Content-Length'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-126" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.size
+apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-126', 'size', 'link-118');">size</a></tt> </tt>
+<a name="L790"></a><tt class="py-lineno"> 790</tt> <tt class="py-line"> <tt class="py-name">start_headers</tt><tt class="py-op">[</tt><tt class="py-string">'content-length'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">body_size</tt><tt class="py-op">)</tt> </tt>
+<a name="L791"></a><tt class="py-lineno"> 791</tt> <tt class="py-line"> </tt>
+<a name="L792"></a><tt class="py-lineno"> 792</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">retry_num</tt> <tt class="py-keyword">in</tt> <tt class="py-name">xrange</tt><tt class="py-op">(</tt><tt class="py-name">num_retries</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L793"></a><tt class="py-lineno"> 793</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">retry_num</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L794"></a><tt class="py-lineno"> 794</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_sleep</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_rand</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">*</tt> <tt class="py-number">2</tt><tt class="py-op">**</tt><tt class="py-name">retry_num</tt><tt class="py-op">)</tt> </tt>
+<a name="L795"></a><tt class="py-lineno"> 795</tt> <tt class="py-line"> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt> </tt>
+<a name="L796"></a><tt class="py-lineno"> 796</tt> <tt class="py-line"> <tt class="py-string">'Retry #%d for resumable URI request: %s %s, following status: %d'</tt> </tt>
+<a name="L797"></a><tt class="py-lineno"> 797</tt> <tt class="py-line"> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">retry_num</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">method</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">,</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L798"></a><tt class="py-lineno"> 798</tt> <tt class="py-line"> </tt>
+<a name="L799"></a><tt class="py-lineno"> 799</tt> <tt class="py-line"> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt id="link-127" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-127', 'http', 'link-72');">http</a></tt><tt class="py-op">.</tt><tt id="link-128" class="py-name"><a title="apiclient.http.HttpMock.request
apiclient.http.HttpMockSequence.request
apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-119', 'request', 'link-67');">request</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">method</tt><tt class="py-op">,</tt> </tt>
-<a name="L742"></a><tt class="py-lineno"> 742</tt> <tt class="py-line"> <tt class="py-name">body</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">body</tt><tt class="py-op">,</tt> </tt>
-<a name="L743"></a><tt class="py-lineno"> 743</tt> <tt class="py-line"> <tt class="py-name">headers</tt><tt class="py-op">=</tt><tt class="py-name">start_headers</tt><tt class="py-op">)</tt> </tt>
-<a name="L744"></a><tt class="py-lineno"> 744</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-op">==</tt> <tt class="py-number">200</tt> <tt class="py-keyword">and</tt> <tt class="py-string">'location'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">resp</tt><tt class="py-op">:</tt> </tt>
-<a name="L745"></a><tt class="py-lineno"> 745</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'location'</tt><tt class="py-op">]</tt> </tt>
-<a name="L746"></a><tt class="py-lineno"> 746</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L747"></a><tt class="py-lineno"> 747</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-120" class="py-name"><a title="apiclient.errors.ResumableUploadError" class="py-name" href="#" onclick="return doclink('link-120', 'ResumableUploadError', 'link-8');">ResumableUploadError</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
-<a name="L748"></a><tt class="py-lineno"> 748</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_in_error_state</tt><tt class="py-op">:</tt> </tt>
-<a name="L749"></a><tt class="py-lineno"> 749</tt> <tt class="py-line"> <tt class="py-comment"># If we are in an error state then query the server for current state of</tt> </tt>
-<a name="L750"></a><tt class="py-lineno"> 750</tt> <tt class="py-line"> <tt class="py-comment"># the upload by sending an empty PUT and reading the 'range' header in</tt> </tt>
-<a name="L751"></a><tt class="py-lineno"> 751</tt> <tt class="py-line"> <tt class="py-comment"># the response.</tt> </tt>
-<a name="L752"></a><tt class="py-lineno"> 752</tt> <tt class="py-line"> <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
-<a name="L753"></a><tt class="py-lineno"> 753</tt> <tt class="py-line"> <tt class="py-string">'Content-Range'</tt><tt class="py-op">:</tt> <tt class="py-string">'bytes */%s'</tt> <tt class="py-op">%</tt> <tt id="link-121" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.size
-apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-121', 'size', 'link-109');">size</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L754"></a><tt class="py-lineno"> 754</tt> <tt class="py-line"> <tt class="py-string">'content-length'</tt><tt class="py-op">:</tt> <tt class="py-string">'0'</tt> </tt>
-<a name="L755"></a><tt class="py-lineno"> 755</tt> <tt class="py-line"> <tt class="py-op">}</tt> </tt>
-<a name="L756"></a><tt class="py-lineno"> 756</tt> <tt class="py-line"> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt id="link-122" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-122', 'http', 'link-70');">http</a></tt><tt class="py-op">.</tt><tt id="link-123" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-128', 'request', 'link-68');">request</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">method</tt><tt class="py-op">,</tt> </tt>
+<a name="L800"></a><tt class="py-lineno"> 800</tt> <tt class="py-line"> <tt id="link-129" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-129', 'body', 'link-58');">body</a></tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-130" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-130', 'body', 'link-58');">body</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L801"></a><tt class="py-lineno"> 801</tt> <tt class="py-line"> <tt class="py-name">headers</tt><tt class="py-op">=</tt><tt class="py-name">start_headers</tt><tt class="py-op">)</tt> </tt>
+<a name="L802"></a><tt class="py-lineno"> 802</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-op"><</tt> <tt class="py-number">500</tt><tt class="py-op">:</tt> </tt>
+<a name="L803"></a><tt class="py-lineno"> 803</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt>
+<a name="L804"></a><tt class="py-lineno"> 804</tt> <tt class="py-line"> </tt>
+<a name="L805"></a><tt class="py-lineno"> 805</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-op">==</tt> <tt class="py-number">200</tt> <tt class="py-keyword">and</tt> <tt class="py-string">'location'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">resp</tt><tt class="py-op">:</tt> </tt>
+<a name="L806"></a><tt class="py-lineno"> 806</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'location'</tt><tt class="py-op">]</tt> </tt>
+<a name="L807"></a><tt class="py-lineno"> 807</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L808"></a><tt class="py-lineno"> 808</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-131" class="py-name"><a title="apiclient.errors.ResumableUploadError" class="py-name" href="#" onclick="return doclink('link-131', 'ResumableUploadError', 'link-8');">ResumableUploadError</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
+<a name="L809"></a><tt class="py-lineno"> 809</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_in_error_state</tt><tt class="py-op">:</tt> </tt>
+<a name="L810"></a><tt class="py-lineno"> 810</tt> <tt class="py-line"> <tt class="py-comment"># If we are in an error state then query the server for current state of</tt> </tt>
+<a name="L811"></a><tt class="py-lineno"> 811</tt> <tt class="py-line"> <tt class="py-comment"># the upload by sending an empty PUT and reading the 'range' header in</tt> </tt>
+<a name="L812"></a><tt class="py-lineno"> 812</tt> <tt class="py-line"> <tt class="py-comment"># the response.</tt> </tt>
+<a name="L813"></a><tt class="py-lineno"> 813</tt> <tt class="py-line"> <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L814"></a><tt class="py-lineno"> 814</tt> <tt class="py-line"> <tt class="py-string">'Content-Range'</tt><tt class="py-op">:</tt> <tt class="py-string">'bytes */%s'</tt> <tt class="py-op">%</tt> <tt id="link-132" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.size
+apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-132', 'size', 'link-118');">size</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L815"></a><tt class="py-lineno"> 815</tt> <tt class="py-line"> <tt class="py-string">'content-length'</tt><tt class="py-op">:</tt> <tt class="py-string">'0'</tt> </tt>
+<a name="L816"></a><tt class="py-lineno"> 816</tt> <tt class="py-line"> <tt class="py-op">}</tt> </tt>
+<a name="L817"></a><tt class="py-lineno"> 817</tt> <tt class="py-line"> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt id="link-133" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-133', 'http', 'link-72');">http</a></tt><tt class="py-op">.</tt><tt id="link-134" class="py-name"><a title="apiclient.http.HttpMock.request
apiclient.http.HttpMockSequence.request
apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-123', 'request', 'link-67');">request</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_uri</tt><tt class="py-op">,</tt> <tt class="py-string">'PUT'</tt><tt class="py-op">,</tt> </tt>
-<a name="L757"></a><tt class="py-lineno"> 757</tt> <tt class="py-line"> <tt class="py-name">headers</tt><tt class="py-op">=</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
-<a name="L758"></a><tt class="py-lineno"> 758</tt> <tt class="py-line"> <tt class="py-name">status</tt><tt class="py-op">,</tt> <tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-124" class="py-name" targets="Method apiclient.http.HttpRequest._process_response()=apiclient.http.HttpRequest-class.html#_process_response"><a title="apiclient.http.HttpRequest._process_response" class="py-name" href="#" onclick="return doclink('link-124', '_process_response', 'link-124');">_process_response</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
-<a name="L759"></a><tt class="py-lineno"> 759</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">body</tt><tt class="py-op">:</tt> </tt>
-<a name="L760"></a><tt class="py-lineno"> 760</tt> <tt class="py-line"> <tt class="py-comment"># The upload was complete.</tt> </tt>
-<a name="L761"></a><tt class="py-lineno"> 761</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">status</tt><tt class="py-op">,</tt> <tt class="py-name">body</tt><tt class="py-op">)</tt> </tt>
-<a name="L762"></a><tt class="py-lineno"> 762</tt> <tt class="py-line"> </tt>
-<a name="L763"></a><tt class="py-lineno"> 763</tt> <tt class="py-line"> <tt class="py-comment"># The httplib.request method can take streams for the body parameter, but</tt> </tt>
-<a name="L764"></a><tt class="py-lineno"> 764</tt> <tt class="py-line"> <tt class="py-comment"># only in Python 2.6 or later. If a stream is available under those</tt> </tt>
-<a name="L765"></a><tt class="py-lineno"> 765</tt> <tt class="py-line"> <tt class="py-comment"># conditions then use it as the body argument.</tt> </tt>
-<a name="L766"></a><tt class="py-lineno"> 766</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-125" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
-apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-125', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-126" class="py-name" targets="Method apiclient.http.MediaIoBaseUpload.has_stream()=apiclient.http.MediaIoBaseUpload-class.html#has_stream,Method apiclient.http.MediaUpload.has_stream()=apiclient.http.MediaUpload-class.html#has_stream"><a title="apiclient.http.MediaIoBaseUpload.has_stream
-apiclient.http.MediaUpload.has_stream" class="py-name" href="#" onclick="return doclink('link-126', 'has_stream', 'link-126');">has_stream</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">version_info</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">>=</tt> <tt class="py-number">6</tt><tt class="py-op">:</tt> </tt>
-<a name="L767"></a><tt class="py-lineno"> 767</tt> <tt class="py-line"> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-127" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
-apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-127', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-128" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.stream
-apiclient.http.MediaUpload.stream" class="py-name" href="#" onclick="return doclink('link-128', 'stream', 'link-80');">stream</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L768"></a><tt class="py-lineno"> 768</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-129" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
-apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-129', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-130" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.chunksize
-apiclient.http.MediaUpload.chunksize" class="py-name" href="#" onclick="return doclink('link-130', 'chunksize', 'link-31');">chunksize</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
-<a name="L769"></a><tt class="py-lineno"> 769</tt> <tt class="py-line"> <tt class="py-name">data</tt><tt class="py-op">.</tt><tt class="py-name">seek</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt><tt class="py-op">)</tt> </tt>
-<a name="L770"></a><tt class="py-lineno"> 770</tt> <tt class="py-line"> <tt class="py-name">chunk_end</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-131" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
-apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-131', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-132" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.size
-apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-132', 'size', 'link-109');">size</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">-</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt> </tt>
-<a name="L771"></a><tt class="py-lineno"> 771</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L772"></a><tt class="py-lineno"> 772</tt> <tt class="py-line"> <tt class="py-comment"># Doing chunking with a stream, so wrap a slice of the stream.</tt> </tt>
-<a name="L773"></a><tt class="py-lineno"> 773</tt> <tt class="py-line"> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt id="link-133" class="py-name" targets="Class apiclient.http._StreamSlice=apiclient.http._StreamSlice-class.html"><a title="apiclient.http._StreamSlice" class="py-name" href="#" onclick="return doclink('link-133', '_StreamSlice', 'link-133');">_StreamSlice</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt><tt class="py-op">,</tt> </tt>
-<a name="L774"></a><tt class="py-lineno"> 774</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-134" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
-apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-134', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-135" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.chunksize
-apiclient.http.MediaUpload.chunksize" class="py-name" href="#" onclick="return doclink('link-135', 'chunksize', 'link-31');">chunksize</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L775"></a><tt class="py-lineno"> 775</tt> <tt class="py-line"> <tt class="py-name">chunk_end</tt> <tt class="py-op">=</tt> <tt class="py-name">min</tt><tt class="py-op">(</tt> </tt>
-<a name="L776"></a><tt class="py-lineno"> 776</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-136" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
-apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-136', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-137" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.chunksize
-apiclient.http.MediaUpload.chunksize" class="py-name" href="#" onclick="return doclink('link-137', 'chunksize', 'link-31');">chunksize</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt><tt class="py-op">,</tt> </tt>
-<a name="L777"></a><tt class="py-lineno"> 777</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-138" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
-apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-138', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-139" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.size
-apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-139', 'size', 'link-109');">size</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
-<a name="L778"></a><tt class="py-lineno"> 778</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L779"></a><tt class="py-lineno"> 779</tt> <tt class="py-line"> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-140" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
-apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-140', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-141" class="py-name" targets="Method apiclient.http.MediaIoBaseUpload.getbytes()=apiclient.http.MediaIoBaseUpload-class.html#getbytes,Method apiclient.http.MediaUpload.getbytes()=apiclient.http.MediaUpload-class.html#getbytes"><a title="apiclient.http.MediaIoBaseUpload.getbytes
-apiclient.http.MediaUpload.getbytes" class="py-name" href="#" onclick="return doclink('link-141', 'getbytes', 'link-141');">getbytes</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L780"></a><tt class="py-lineno"> 780</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-142" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
-apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-142', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-143" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.chunksize
-apiclient.http.MediaUpload.chunksize" class="py-name" href="#" onclick="return doclink('link-143', 'chunksize', 'link-31');">chunksize</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L781"></a><tt class="py-lineno"> 781</tt> <tt class="py-line"> </tt>
-<a name="L782"></a><tt class="py-lineno"> 782</tt> <tt class="py-line"> <tt class="py-comment"># A short read implies that we are at EOF, so finish the upload.</tt> </tt>
-<a name="L783"></a><tt class="py-lineno"> 783</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> <tt class="py-op"><</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-144" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
-apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-144', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-145" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.chunksize
-apiclient.http.MediaUpload.chunksize" class="py-name" href="#" onclick="return doclink('link-145', 'chunksize', 'link-31');">chunksize</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L784"></a><tt class="py-lineno"> 784</tt> <tt class="py-line"> <tt id="link-146" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.size
-apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-146', 'size', 'link-109');">size</a></tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt> <tt class="py-op">+</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L785"></a><tt class="py-lineno"> 785</tt> <tt class="py-line"> </tt>
-<a name="L786"></a><tt class="py-lineno"> 786</tt> <tt class="py-line"> <tt class="py-name">chunk_end</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt> <tt class="py-op">+</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt> </tt>
-<a name="L787"></a><tt class="py-lineno"> 787</tt> <tt class="py-line"> </tt>
-<a name="L788"></a><tt class="py-lineno"> 788</tt> <tt class="py-line"> <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
-<a name="L789"></a><tt class="py-lineno"> 789</tt> <tt class="py-line"> <tt class="py-string">'Content-Range'</tt><tt class="py-op">:</tt> <tt class="py-string">'bytes %d-%d/%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt> </tt>
-<a name="L790"></a><tt class="py-lineno"> 790</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt><tt class="py-op">,</tt> <tt class="py-name">chunk_end</tt><tt class="py-op">,</tt> <tt id="link-147" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.size
-apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-147', 'size', 'link-109');">size</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L791"></a><tt class="py-lineno"> 791</tt> <tt class="py-line"> <tt class="py-comment"># Must set the content-length header here because httplib can't</tt> </tt>
-<a name="L792"></a><tt class="py-lineno"> 792</tt> <tt class="py-line"> <tt class="py-comment"># calculate the size when working with _StreamSlice.</tt> </tt>
-<a name="L793"></a><tt class="py-lineno"> 793</tt> <tt class="py-line"> <tt class="py-string">'Content-Length'</tt><tt class="py-op">:</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">chunk_end</tt> <tt class="py-op">-</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
-<a name="L794"></a><tt class="py-lineno"> 794</tt> <tt class="py-line"> <tt class="py-op">}</tt> </tt>
-<a name="L795"></a><tt class="py-lineno"> 795</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L796"></a><tt class="py-lineno"> 796</tt> <tt class="py-line"> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt id="link-148" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-148', 'http', 'link-70');">http</a></tt><tt class="py-op">.</tt><tt id="link-149" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-134', 'request', 'link-68');">request</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_uri</tt><tt class="py-op">,</tt> <tt class="py-string">'PUT'</tt><tt class="py-op">,</tt> </tt>
+<a name="L818"></a><tt class="py-lineno"> 818</tt> <tt class="py-line"> <tt class="py-name">headers</tt><tt class="py-op">=</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
+<a name="L819"></a><tt class="py-lineno"> 819</tt> <tt class="py-line"> <tt class="py-name">status</tt><tt class="py-op">,</tt> <tt id="link-135" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-135', 'body', 'link-58');">body</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-136" class="py-name" targets="Method apiclient.http.HttpRequest._process_response()=apiclient.http.HttpRequest-class.html#_process_response"><a title="apiclient.http.HttpRequest._process_response" class="py-name" href="#" onclick="return doclink('link-136', '_process_response', 'link-136');">_process_response</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
+<a name="L820"></a><tt class="py-lineno"> 820</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-137" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-137', 'body', 'link-58');">body</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L821"></a><tt class="py-lineno"> 821</tt> <tt class="py-line"> <tt class="py-comment"># The upload was complete.</tt> </tt>
+<a name="L822"></a><tt class="py-lineno"> 822</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">status</tt><tt class="py-op">,</tt> <tt id="link-138" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-138', 'body', 'link-58');">body</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L823"></a><tt class="py-lineno"> 823</tt> <tt class="py-line"> </tt>
+<a name="L824"></a><tt class="py-lineno"> 824</tt> <tt class="py-line"> <tt class="py-comment"># The httplib.request method can take streams for the body parameter, but</tt> </tt>
+<a name="L825"></a><tt class="py-lineno"> 825</tt> <tt class="py-line"> <tt class="py-comment"># only in Python 2.6 or later. If a stream is available under those</tt> </tt>
+<a name="L826"></a><tt class="py-lineno"> 826</tt> <tt class="py-line"> <tt class="py-comment"># conditions then use it as the body argument.</tt> </tt>
+<a name="L827"></a><tt class="py-lineno"> 827</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-139" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
+apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-139', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-140" class="py-name" targets="Method apiclient.http.MediaIoBaseUpload.has_stream()=apiclient.http.MediaIoBaseUpload-class.html#has_stream,Method apiclient.http.MediaUpload.has_stream()=apiclient.http.MediaUpload-class.html#has_stream"><a title="apiclient.http.MediaIoBaseUpload.has_stream
+apiclient.http.MediaUpload.has_stream" class="py-name" href="#" onclick="return doclink('link-140', 'has_stream', 'link-140');">has_stream</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">version_info</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">>=</tt> <tt class="py-number">6</tt><tt class="py-op">:</tt> </tt>
+<a name="L828"></a><tt class="py-lineno"> 828</tt> <tt class="py-line"> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-141" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
+apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-141', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-142" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.stream
+apiclient.http.MediaUpload.stream" class="py-name" href="#" onclick="return doclink('link-142', 'stream', 'link-78');">stream</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L829"></a><tt class="py-lineno"> 829</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-143" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
+apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-143', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-144" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.chunksize
+apiclient.http.MediaUpload.chunksize" class="py-name" href="#" onclick="return doclink('link-144', 'chunksize', 'link-31');">chunksize</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L830"></a><tt class="py-lineno"> 830</tt> <tt class="py-line"> <tt class="py-name">data</tt><tt class="py-op">.</tt><tt class="py-name">seek</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt><tt class="py-op">)</tt> </tt>
+<a name="L831"></a><tt class="py-lineno"> 831</tt> <tt class="py-line"> <tt class="py-name">chunk_end</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-145" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
+apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-145', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-146" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.size
+apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-146', 'size', 'link-118');">size</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">-</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt> </tt>
+<a name="L832"></a><tt class="py-lineno"> 832</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L833"></a><tt class="py-lineno"> 833</tt> <tt class="py-line"> <tt class="py-comment"># Doing chunking with a stream, so wrap a slice of the stream.</tt> </tt>
+<a name="L834"></a><tt class="py-lineno"> 834</tt> <tt class="py-line"> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt id="link-147" class="py-name" targets="Class apiclient.http._StreamSlice=apiclient.http._StreamSlice-class.html"><a title="apiclient.http._StreamSlice" class="py-name" href="#" onclick="return doclink('link-147', '_StreamSlice', 'link-147');">_StreamSlice</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt><tt class="py-op">,</tt> </tt>
+<a name="L835"></a><tt class="py-lineno"> 835</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-148" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
+apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-148', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-149" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.chunksize
+apiclient.http.MediaUpload.chunksize" class="py-name" href="#" onclick="return doclink('link-149', 'chunksize', 'link-31');">chunksize</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L836"></a><tt class="py-lineno"> 836</tt> <tt class="py-line"> <tt class="py-name">chunk_end</tt> <tt class="py-op">=</tt> <tt class="py-name">min</tt><tt class="py-op">(</tt> </tt>
+<a name="L837"></a><tt class="py-lineno"> 837</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-150" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
+apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-150', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-151" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.chunksize
+apiclient.http.MediaUpload.chunksize" class="py-name" href="#" onclick="return doclink('link-151', 'chunksize', 'link-31');">chunksize</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt><tt class="py-op">,</tt> </tt>
+<a name="L838"></a><tt class="py-lineno"> 838</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-152" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
+apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-152', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-153" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.size
+apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-153', 'size', 'link-118');">size</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L839"></a><tt class="py-lineno"> 839</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L840"></a><tt class="py-lineno"> 840</tt> <tt class="py-line"> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-154" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
+apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-154', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-155" class="py-name" targets="Method apiclient.http.MediaIoBaseUpload.getbytes()=apiclient.http.MediaIoBaseUpload-class.html#getbytes,Method apiclient.http.MediaUpload.getbytes()=apiclient.http.MediaUpload-class.html#getbytes"><a title="apiclient.http.MediaIoBaseUpload.getbytes
+apiclient.http.MediaUpload.getbytes" class="py-name" href="#" onclick="return doclink('link-155', 'getbytes', 'link-155');">getbytes</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L841"></a><tt class="py-lineno"> 841</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-156" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
+apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-156', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-157" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.chunksize
+apiclient.http.MediaUpload.chunksize" class="py-name" href="#" onclick="return doclink('link-157', 'chunksize', 'link-31');">chunksize</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L842"></a><tt class="py-lineno"> 842</tt> <tt class="py-line"> </tt>
+<a name="L843"></a><tt class="py-lineno"> 843</tt> <tt class="py-line"> <tt class="py-comment"># A short read implies that we are at EOF, so finish the upload.</tt> </tt>
+<a name="L844"></a><tt class="py-lineno"> 844</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> <tt class="py-op"><</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-158" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
+apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-158', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-159" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.chunksize
+apiclient.http.MediaUpload.chunksize" class="py-name" href="#" onclick="return doclink('link-159', 'chunksize', 'link-31');">chunksize</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L845"></a><tt class="py-lineno"> 845</tt> <tt class="py-line"> <tt id="link-160" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.size
+apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-160', 'size', 'link-118');">size</a></tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt> <tt class="py-op">+</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L846"></a><tt class="py-lineno"> 846</tt> <tt class="py-line"> </tt>
+<a name="L847"></a><tt class="py-lineno"> 847</tt> <tt class="py-line"> <tt class="py-name">chunk_end</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt> <tt class="py-op">+</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> <tt class="py-op">-</tt> <tt class="py-number">1</tt> </tt>
+<a name="L848"></a><tt class="py-lineno"> 848</tt> <tt class="py-line"> </tt>
+<a name="L849"></a><tt class="py-lineno"> 849</tt> <tt class="py-line"> <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L850"></a><tt class="py-lineno"> 850</tt> <tt class="py-line"> <tt class="py-string">'Content-Range'</tt><tt class="py-op">:</tt> <tt class="py-string">'bytes %d-%d/%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt> </tt>
+<a name="L851"></a><tt class="py-lineno"> 851</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt><tt class="py-op">,</tt> <tt class="py-name">chunk_end</tt><tt class="py-op">,</tt> <tt id="link-161" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.size
+apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-161', 'size', 'link-118');">size</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L852"></a><tt class="py-lineno"> 852</tt> <tt class="py-line"> <tt class="py-comment"># Must set the content-length header here because httplib can't</tt> </tt>
+<a name="L853"></a><tt class="py-lineno"> 853</tt> <tt class="py-line"> <tt class="py-comment"># calculate the size when working with _StreamSlice.</tt> </tt>
+<a name="L854"></a><tt class="py-lineno"> 854</tt> <tt class="py-line"> <tt class="py-string">'Content-Length'</tt><tt class="py-op">:</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">chunk_end</tt> <tt class="py-op">-</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L855"></a><tt class="py-lineno"> 855</tt> <tt class="py-line"> <tt class="py-op">}</tt> </tt>
+<a name="L856"></a><tt class="py-lineno"> 856</tt> <tt class="py-line"> </tt>
+<a name="L857"></a><tt class="py-lineno"> 857</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">retry_num</tt> <tt class="py-keyword">in</tt> <tt class="py-name">xrange</tt><tt class="py-op">(</tt><tt class="py-name">num_retries</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L858"></a><tt class="py-lineno"> 858</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">retry_num</tt> <tt class="py-op">></tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L859"></a><tt class="py-lineno"> 859</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_sleep</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_rand</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">*</tt> <tt class="py-number">2</tt><tt class="py-op">**</tt><tt class="py-name">retry_num</tt><tt class="py-op">)</tt> </tt>
+<a name="L860"></a><tt class="py-lineno"> 860</tt> <tt class="py-line"> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt> </tt>
+<a name="L861"></a><tt class="py-lineno"> 861</tt> <tt class="py-line"> <tt class="py-string">'Retry #%d for media upload: %s %s, following status: %d'</tt> </tt>
+<a name="L862"></a><tt class="py-lineno"> 862</tt> <tt class="py-line"> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">retry_num</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">method</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">,</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L863"></a><tt class="py-lineno"> 863</tt> <tt class="py-line"> </tt>
+<a name="L864"></a><tt class="py-lineno"> 864</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L865"></a><tt class="py-lineno"> 865</tt> <tt class="py-line"> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt id="link-162" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-162', 'http', 'link-72');">http</a></tt><tt class="py-op">.</tt><tt id="link-163" class="py-name"><a title="apiclient.http.HttpMock.request
apiclient.http.HttpMockSequence.request
apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-149', 'request', 'link-67');">request</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_uri</tt><tt class="py-op">,</tt> <tt class="py-string">'PUT'</tt><tt class="py-op">,</tt> </tt>
-<a name="L797"></a><tt class="py-lineno"> 797</tt> <tt class="py-line"> <tt class="py-name">body</tt><tt class="py-op">=</tt><tt class="py-name">data</tt><tt class="py-op">,</tt> </tt>
-<a name="L798"></a><tt class="py-lineno"> 798</tt> <tt class="py-line"> <tt class="py-name">headers</tt><tt class="py-op">=</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
-<a name="L799"></a><tt class="py-lineno"> 799</tt> <tt class="py-line"> <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
-<a name="L800"></a><tt class="py-lineno"> 800</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_in_error_state</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
-<a name="L801"></a><tt class="py-lineno"> 801</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> </tt>
-<a name="L802"></a><tt class="py-lineno"> 802</tt> <tt class="py-line"> </tt>
-<a name="L803"></a><tt class="py-lineno"> 803</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-150" class="py-name"><a title="apiclient.http.HttpRequest._process_response" class="py-name" href="#" onclick="return doclink('link-150', '_process_response', 'link-124');">_process_response</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L804"></a><tt class="py-lineno"> 804</tt> <tt class="py-line"> </tt>
-<a name="HttpRequest._process_response"></a><div id="HttpRequest._process_response-def"><a name="L805"></a><tt class="py-lineno"> 805</tt> <a class="py-toggle" href="#" id="HttpRequest._process_response-toggle" onclick="return toggle('HttpRequest._process_response');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.HttpRequest-class.html#_process_response">_process_response</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">resp</tt><tt class="py-op">,</tt> <tt class="py-param">content</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="HttpRequest._process_response-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpRequest._process_response-expanded"><a name="L806"></a><tt class="py-lineno"> 806</tt> <tt class="py-line"> <tt class="py-docstring">"""Process the response from a single chunk upload.</tt> </tt>
-<a name="L807"></a><tt class="py-lineno"> 807</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L808"></a><tt class="py-lineno"> 808</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L809"></a><tt class="py-lineno"> 809</tt> <tt class="py-line"><tt class="py-docstring"> resp: httplib2.Response, the response object.</tt> </tt>
-<a name="L810"></a><tt class="py-lineno"> 810</tt> <tt class="py-line"><tt class="py-docstring"> content: string, the content of the response.</tt> </tt>
-<a name="L811"></a><tt class="py-lineno"> 811</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L812"></a><tt class="py-lineno"> 812</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L813"></a><tt class="py-lineno"> 813</tt> <tt class="py-line"><tt class="py-docstring"> (status, body): (ResumableMediaStatus, object)</tt> </tt>
-<a name="L814"></a><tt class="py-lineno"> 814</tt> <tt class="py-line"><tt class="py-docstring"> The body will be None until the resumable media is fully uploaded.</tt> </tt>
-<a name="L815"></a><tt class="py-lineno"> 815</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L816"></a><tt class="py-lineno"> 816</tt> <tt class="py-line"><tt class="py-docstring"> Raises:</tt> </tt>
-<a name="L817"></a><tt class="py-lineno"> 817</tt> <tt class="py-line"><tt class="py-docstring"> apiclient.errors.HttpError if the response was not a 2xx or a 308.</tt> </tt>
-<a name="L818"></a><tt class="py-lineno"> 818</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L819"></a><tt class="py-lineno"> 819</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt class="py-number">200</tt><tt class="py-op">,</tt> <tt class="py-number">201</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
-<a name="L820"></a><tt class="py-lineno"> 820</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_in_error_state</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
-<a name="L821"></a><tt class="py-lineno"> 821</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">postproc</tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
-<a name="L822"></a><tt class="py-lineno"> 822</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-op">==</tt> <tt class="py-number">308</tt><tt class="py-op">:</tt> </tt>
-<a name="L823"></a><tt class="py-lineno"> 823</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_in_error_state</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
-<a name="L824"></a><tt class="py-lineno"> 824</tt> <tt class="py-line"> <tt class="py-comment"># A "308 Resume Incomplete" indicates we are not done.</tt> </tt>
-<a name="L825"></a><tt class="py-lineno"> 825</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'range'</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'-'</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt> </tt>
-<a name="L826"></a><tt class="py-lineno"> 826</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'location'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">resp</tt><tt class="py-op">:</tt> </tt>
-<a name="L827"></a><tt class="py-lineno"> 827</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'location'</tt><tt class="py-op">]</tt> </tt>
-<a name="L828"></a><tt class="py-lineno"> 828</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L829"></a><tt class="py-lineno"> 829</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_in_error_state</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
-<a name="L830"></a><tt class="py-lineno"> 830</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-151" class="py-name"><a title="apiclient.errors.HttpError" class="py-name" href="#" onclick="return doclink('link-151', 'HttpError', 'link-4');">HttpError</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">,</tt> <tt class="py-name">uri</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt> </tt>
-<a name="L831"></a><tt class="py-lineno"> 831</tt> <tt class="py-line"> </tt>
-<a name="L832"></a><tt class="py-lineno"> 832</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt id="link-152" class="py-name" targets="Class apiclient.http.MediaUploadProgress=apiclient.http.MediaUploadProgress-class.html"><a title="apiclient.http.MediaUploadProgress" class="py-name" href="#" onclick="return doclink('link-152', 'MediaUploadProgress', 'link-152');">MediaUploadProgress</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-153" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
-apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-153', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-154" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.size
-apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-154', 'size', 'link-109');">size</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L833"></a><tt class="py-lineno"> 833</tt> <tt class="py-line"> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L834"></a><tt class="py-lineno"> 834</tt> <tt class="py-line"> </tt>
-<a name="HttpRequest.to_json"></a><div id="HttpRequest.to_json-def"><a name="L835"></a><tt class="py-lineno"> 835</tt> <a class="py-toggle" href="#" id="HttpRequest.to_json-toggle" onclick="return toggle('HttpRequest.to_json');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.HttpRequest-class.html#to_json">to_json</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="HttpRequest.to_json-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpRequest.to_json-expanded"><a name="L836"></a><tt class="py-lineno"> 836</tt> <tt class="py-line"> <tt class="py-docstring">"""Returns a JSON representation of the HttpRequest."""</tt> </tt>
-<a name="L837"></a><tt class="py-lineno"> 837</tt> <tt class="py-line"> <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt class="py-name">copy</tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">)</tt> </tt>
-<a name="L838"></a><tt class="py-lineno"> 838</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'resumable'</tt><tt class="py-op">]</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L839"></a><tt class="py-lineno"> 839</tt> <tt class="py-line"> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'resumable'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-155" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
-apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-155', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-156" class="py-name" targets="Method apiclient.http.HttpRequest.to_json()=apiclient.http.HttpRequest-class.html#to_json,Method apiclient.http.MediaFileUpload.to_json()=apiclient.http.MediaFileUpload-class.html#to_json,Method apiclient.http.MediaIoBaseUpload.to_json()=apiclient.http.MediaIoBaseUpload-class.html#to_json,Method apiclient.http.MediaUpload.to_json()=apiclient.http.MediaUpload-class.html#to_json,Method oauth2client.client.Credentials.to_json()=oauth2client.client.Credentials-class.html#to_json,Method oauth2client.client.OAuth2Credentials.to_json()=oauth2client.client.OAuth2Credentials-class.html#to_json"><a title="apiclient.http.HttpRequest.to_json
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-163', 'request', 'link-68');">request</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_uri</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt><tt class="py-op">=</tt><tt class="py-string">'PUT'</tt><tt class="py-op">,</tt> </tt>
+<a name="L866"></a><tt class="py-lineno"> 866</tt> <tt class="py-line"> <tt id="link-164" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-164', 'body', 'link-58');">body</a></tt><tt class="py-op">=</tt><tt class="py-name">data</tt><tt class="py-op">,</tt> </tt>
+<a name="L867"></a><tt class="py-lineno"> 867</tt> <tt class="py-line"> <tt class="py-name">headers</tt><tt class="py-op">=</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
+<a name="L868"></a><tt class="py-lineno"> 868</tt> <tt class="py-line"> <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L869"></a><tt class="py-lineno"> 869</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_in_error_state</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L870"></a><tt class="py-lineno"> 870</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> </tt>
+<a name="L871"></a><tt class="py-lineno"> 871</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-op"><</tt> <tt class="py-number">500</tt><tt class="py-op">:</tt> </tt>
+<a name="L872"></a><tt class="py-lineno"> 872</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt>
+<a name="L873"></a><tt class="py-lineno"> 873</tt> <tt class="py-line"> </tt>
+<a name="L874"></a><tt class="py-lineno"> 874</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-165" class="py-name"><a title="apiclient.http.HttpRequest._process_response" class="py-name" href="#" onclick="return doclink('link-165', '_process_response', 'link-136');">_process_response</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L875"></a><tt class="py-lineno"> 875</tt> <tt class="py-line"> </tt>
+<a name="HttpRequest._process_response"></a><div id="HttpRequest._process_response-def"><a name="L876"></a><tt class="py-lineno"> 876</tt> <a class="py-toggle" href="#" id="HttpRequest._process_response-toggle" onclick="return toggle('HttpRequest._process_response');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.HttpRequest-class.html#_process_response">_process_response</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">resp</tt><tt class="py-op">,</tt> <tt class="py-param">content</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="HttpRequest._process_response-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpRequest._process_response-expanded"><a name="L877"></a><tt class="py-lineno"> 877</tt> <tt class="py-line"> <tt class="py-docstring">"""Process the response from a single chunk upload.</tt> </tt>
+<a name="L878"></a><tt class="py-lineno"> 878</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L879"></a><tt class="py-lineno"> 879</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L880"></a><tt class="py-lineno"> 880</tt> <tt class="py-line"><tt class="py-docstring"> resp: httplib2.Response, the response object.</tt> </tt>
+<a name="L881"></a><tt class="py-lineno"> 881</tt> <tt class="py-line"><tt class="py-docstring"> content: string, the content of the response.</tt> </tt>
+<a name="L882"></a><tt class="py-lineno"> 882</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L883"></a><tt class="py-lineno"> 883</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L884"></a><tt class="py-lineno"> 884</tt> <tt class="py-line"><tt class="py-docstring"> (status, body): (ResumableMediaStatus, object)</tt> </tt>
+<a name="L885"></a><tt class="py-lineno"> 885</tt> <tt class="py-line"><tt class="py-docstring"> The body will be None until the resumable media is fully uploaded.</tt> </tt>
+<a name="L886"></a><tt class="py-lineno"> 886</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L887"></a><tt class="py-lineno"> 887</tt> <tt class="py-line"><tt class="py-docstring"> Raises:</tt> </tt>
+<a name="L888"></a><tt class="py-lineno"> 888</tt> <tt class="py-line"><tt class="py-docstring"> apiclient.errors.HttpError if the response was not a 2xx or a 308.</tt> </tt>
+<a name="L889"></a><tt class="py-lineno"> 889</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L890"></a><tt class="py-lineno"> 890</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt class="py-number">200</tt><tt class="py-op">,</tt> <tt class="py-number">201</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L891"></a><tt class="py-lineno"> 891</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_in_error_state</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L892"></a><tt class="py-lineno"> 892</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">postproc</tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
+<a name="L893"></a><tt class="py-lineno"> 893</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-op">==</tt> <tt class="py-number">308</tt><tt class="py-op">:</tt> </tt>
+<a name="L894"></a><tt class="py-lineno"> 894</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_in_error_state</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L895"></a><tt class="py-lineno"> 895</tt> <tt class="py-line"> <tt class="py-comment"># A "308 Resume Incomplete" indicates we are not done.</tt> </tt>
+<a name="L896"></a><tt class="py-lineno"> 896</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'range'</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'-'</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt> </tt>
+<a name="L897"></a><tt class="py-lineno"> 897</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'location'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">resp</tt><tt class="py-op">:</tt> </tt>
+<a name="L898"></a><tt class="py-lineno"> 898</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'location'</tt><tt class="py-op">]</tt> </tt>
+<a name="L899"></a><tt class="py-lineno"> 899</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L900"></a><tt class="py-lineno"> 900</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_in_error_state</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L901"></a><tt class="py-lineno"> 901</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-166" class="py-name"><a title="apiclient.errors.HttpError" class="py-name" href="#" onclick="return doclink('link-166', 'HttpError', 'link-4');">HttpError</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">,</tt> <tt class="py-name">uri</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt> </tt>
+<a name="L902"></a><tt class="py-lineno"> 902</tt> <tt class="py-line"> </tt>
+<a name="L903"></a><tt class="py-lineno"> 903</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt id="link-167" class="py-name" targets="Class apiclient.http.MediaUploadProgress=apiclient.http.MediaUploadProgress-class.html"><a title="apiclient.http.MediaUploadProgress" class="py-name" href="#" onclick="return doclink('link-167', 'MediaUploadProgress', 'link-167');">MediaUploadProgress</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resumable_progress</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-168" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
+apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-168', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-169" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.size
+apiclient.http.MediaUpload.size" class="py-name" href="#" onclick="return doclink('link-169', 'size', 'link-118');">size</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L904"></a><tt class="py-lineno"> 904</tt> <tt class="py-line"> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L905"></a><tt class="py-lineno"> 905</tt> <tt class="py-line"> </tt>
+<a name="HttpRequest.to_json"></a><div id="HttpRequest.to_json-def"><a name="L906"></a><tt class="py-lineno"> 906</tt> <a class="py-toggle" href="#" id="HttpRequest.to_json-toggle" onclick="return toggle('HttpRequest.to_json');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.HttpRequest-class.html#to_json">to_json</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="HttpRequest.to_json-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpRequest.to_json-expanded"><a name="L907"></a><tt class="py-lineno"> 907</tt> <tt class="py-line"> <tt class="py-docstring">"""Returns a JSON representation of the HttpRequest."""</tt> </tt>
+<a name="L908"></a><tt class="py-lineno"> 908</tt> <tt class="py-line"> <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt class="py-name">copy</tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">)</tt> </tt>
+<a name="L909"></a><tt class="py-lineno"> 909</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'resumable'</tt><tt class="py-op">]</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L910"></a><tt class="py-lineno"> 910</tt> <tt class="py-line"> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'resumable'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-170" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
+apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-170', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">.</tt><tt id="link-171" class="py-name" targets="Method apiclient.http.HttpRequest.to_json()=apiclient.http.HttpRequest-class.html#to_json,Method apiclient.http.MediaFileUpload.to_json()=apiclient.http.MediaFileUpload-class.html#to_json,Method apiclient.http.MediaIoBaseUpload.to_json()=apiclient.http.MediaIoBaseUpload-class.html#to_json,Method apiclient.http.MediaUpload.to_json()=apiclient.http.MediaUpload-class.html#to_json,Method oauth2client.client.Credentials.to_json()=oauth2client.client.Credentials-class.html#to_json,Method oauth2client.client.OAuth2Credentials.to_json()=oauth2client.client.OAuth2Credentials-class.html#to_json"><a title="apiclient.http.HttpRequest.to_json
apiclient.http.MediaFileUpload.to_json
apiclient.http.MediaIoBaseUpload.to_json
apiclient.http.MediaUpload.to_json
oauth2client.client.Credentials.to_json
-oauth2client.client.OAuth2Credentials.to_json" class="py-name" href="#" onclick="return doclink('link-156', 'to_json', 'link-156');">to_json</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L840"></a><tt class="py-lineno"> 840</tt> <tt class="py-line"> <tt class="py-keyword">del</tt> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'http'</tt><tt class="py-op">]</tt> </tt>
-<a name="L841"></a><tt class="py-lineno"> 841</tt> <tt class="py-line"> <tt class="py-keyword">del</tt> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'postproc'</tt><tt class="py-op">]</tt> </tt>
-<a name="L842"></a><tt class="py-lineno"> 842</tt> <tt class="py-line"> </tt>
-<a name="L843"></a><tt class="py-lineno"> 843</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt class="py-name">dumps</tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L844"></a><tt class="py-lineno"> 844</tt> <tt class="py-line"> </tt>
-<a name="L845"></a><tt class="py-lineno"> 845</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">staticmethod</tt> </tt>
-<a name="HttpRequest.from_json"></a><div id="HttpRequest.from_json-def"><a name="L846"></a><tt class="py-lineno"> 846</tt> <a class="py-toggle" href="#" id="HttpRequest.from_json-toggle" onclick="return toggle('HttpRequest.from_json');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.HttpRequest-class.html#from_json">from_json</a><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">,</tt> <tt class="py-param">postproc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="HttpRequest.from_json-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpRequest.from_json-expanded"><a name="L847"></a><tt class="py-lineno"> 847</tt> <tt class="py-line"> <tt class="py-docstring">"""Returns an HttpRequest populated with info from a JSON object."""</tt> </tt>
-<a name="L848"></a><tt class="py-lineno"> 848</tt> <tt class="py-line"> <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-157" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-157', 'loads', 'link-23');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
-<a name="L849"></a><tt class="py-lineno"> 849</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'resumable'</tt><tt class="py-op">]</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L850"></a><tt class="py-lineno"> 850</tt> <tt class="py-line"> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'resumable'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-158" class="py-name" targets="Class apiclient.http.MediaUpload=apiclient.http.MediaUpload-class.html"><a title="apiclient.http.MediaUpload" class="py-name" href="#" onclick="return doclink('link-158', 'MediaUpload', 'link-158');">MediaUpload</a></tt><tt class="py-op">.</tt><tt id="link-159" class="py-name" targets="Class Method apiclient.http.MediaUpload.new_from_json()=apiclient.http.MediaUpload-class.html#new_from_json,Class Method oauth2client.client.Credentials.new_from_json()=oauth2client.client.Credentials-class.html#new_from_json"><a title="apiclient.http.MediaUpload.new_from_json
-oauth2client.client.Credentials.new_from_json" class="py-name" href="#" onclick="return doclink('link-159', 'new_from_json', 'link-159');">new_from_json</a></tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'resumable'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L851"></a><tt class="py-lineno"> 851</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-160" class="py-name" targets="Class apiclient.http.HttpRequest=apiclient.http.HttpRequest-class.html"><a title="apiclient.http.HttpRequest" class="py-name" href="#" onclick="return doclink('link-160', 'HttpRequest', 'link-160');">HttpRequest</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L852"></a><tt class="py-lineno"> 852</tt> <tt class="py-line"> <tt id="link-161" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-161', 'http', 'link-70');">http</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L853"></a><tt class="py-lineno"> 853</tt> <tt class="py-line"> <tt class="py-name">postproc</tt><tt class="py-op">,</tt> </tt>
-<a name="L854"></a><tt class="py-lineno"> 854</tt> <tt class="py-line"> <tt class="py-name">uri</tt><tt class="py-op">=</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'uri'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L855"></a><tt class="py-lineno"> 855</tt> <tt class="py-line"> <tt class="py-name">method</tt><tt class="py-op">=</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'method'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L856"></a><tt class="py-lineno"> 856</tt> <tt class="py-line"> <tt class="py-name">body</tt><tt class="py-op">=</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'body'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L857"></a><tt class="py-lineno"> 857</tt> <tt class="py-line"> <tt class="py-name">headers</tt><tt class="py-op">=</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'headers'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L858"></a><tt class="py-lineno"> 858</tt> <tt class="py-line"> <tt class="py-name">methodId</tt><tt class="py-op">=</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'methodId'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L859"></a><tt class="py-lineno"> 859</tt> <tt class="py-line"> <tt id="link-162" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
-apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-162', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">=</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'resumable'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L860"></a><tt class="py-lineno"> 860</tt> <tt class="py-line"> </tt>
-<a name="BatchHttpRequest"></a><div id="BatchHttpRequest-def"><a name="L861"></a><tt class="py-lineno"> 861</tt> <tt class="py-line"> </tt>
-<a name="L862"></a><tt class="py-lineno"> 862</tt> <a class="py-toggle" href="#" id="BatchHttpRequest-toggle" onclick="return toggle('BatchHttpRequest');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.http.BatchHttpRequest-class.html">BatchHttpRequest</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="BatchHttpRequest-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="BatchHttpRequest-expanded"><a name="L863"></a><tt class="py-lineno"> 863</tt> <tt class="py-line"> <tt class="py-docstring">"""Batches multiple HttpRequest objects into a single HTTP request.</tt> </tt>
-<a name="L864"></a><tt class="py-lineno"> 864</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L865"></a><tt class="py-lineno"> 865</tt> <tt class="py-line"><tt class="py-docstring"> Example:</tt> </tt>
-<a name="L866"></a><tt class="py-lineno"> 866</tt> <tt class="py-line"><tt class="py-docstring"> from apiclient.http import BatchHttpRequest</tt> </tt>
-<a name="L867"></a><tt class="py-lineno"> 867</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L868"></a><tt class="py-lineno"> 868</tt> <tt class="py-line"><tt class="py-docstring"> def list_animals(request_id, response, exception):</tt> </tt>
-<a name="L869"></a><tt class="py-lineno"> 869</tt> <tt class="py-line"><tt class="py-docstring"> \"\"\"Do something with the animals list response.\"\"\"</tt> </tt>
-<a name="L870"></a><tt class="py-lineno"> 870</tt> <tt class="py-line"><tt class="py-docstring"> if exception is not None:</tt> </tt>
-<a name="L871"></a><tt class="py-lineno"> 871</tt> <tt class="py-line"><tt class="py-docstring"> # Do something with the exception.</tt> </tt>
-<a name="L872"></a><tt class="py-lineno"> 872</tt> <tt class="py-line"><tt class="py-docstring"> pass</tt> </tt>
-<a name="L873"></a><tt class="py-lineno"> 873</tt> <tt class="py-line"><tt class="py-docstring"> else:</tt> </tt>
-<a name="L874"></a><tt class="py-lineno"> 874</tt> <tt class="py-line"><tt class="py-docstring"> # Do something with the response.</tt> </tt>
-<a name="L875"></a><tt class="py-lineno"> 875</tt> <tt class="py-line"><tt class="py-docstring"> pass</tt> </tt>
-<a name="L876"></a><tt class="py-lineno"> 876</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L877"></a><tt class="py-lineno"> 877</tt> <tt class="py-line"><tt class="py-docstring"> def list_farmers(request_id, response, exception):</tt> </tt>
-<a name="L878"></a><tt class="py-lineno"> 878</tt> <tt class="py-line"><tt class="py-docstring"> \"\"\"Do something with the farmers list response.\"\"\"</tt> </tt>
-<a name="L879"></a><tt class="py-lineno"> 879</tt> <tt class="py-line"><tt class="py-docstring"> if exception is not None:</tt> </tt>
-<a name="L880"></a><tt class="py-lineno"> 880</tt> <tt class="py-line"><tt class="py-docstring"> # Do something with the exception.</tt> </tt>
-<a name="L881"></a><tt class="py-lineno"> 881</tt> <tt class="py-line"><tt class="py-docstring"> pass</tt> </tt>
-<a name="L882"></a><tt class="py-lineno"> 882</tt> <tt class="py-line"><tt class="py-docstring"> else:</tt> </tt>
-<a name="L883"></a><tt class="py-lineno"> 883</tt> <tt class="py-line"><tt class="py-docstring"> # Do something with the response.</tt> </tt>
-<a name="L884"></a><tt class="py-lineno"> 884</tt> <tt class="py-line"><tt class="py-docstring"> pass</tt> </tt>
-<a name="L885"></a><tt class="py-lineno"> 885</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L886"></a><tt class="py-lineno"> 886</tt> <tt class="py-line"><tt class="py-docstring"> service = build('farm', 'v2')</tt> </tt>
-<a name="L887"></a><tt class="py-lineno"> 887</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L888"></a><tt class="py-lineno"> 888</tt> <tt class="py-line"><tt class="py-docstring"> batch = BatchHttpRequest()</tt> </tt>
-<a name="L889"></a><tt class="py-lineno"> 889</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L890"></a><tt class="py-lineno"> 890</tt> <tt class="py-line"><tt class="py-docstring"> batch.add(service.animals().list(), list_animals)</tt> </tt>
-<a name="L891"></a><tt class="py-lineno"> 891</tt> <tt class="py-line"><tt class="py-docstring"> batch.add(service.farmers().list(), list_farmers)</tt> </tt>
-<a name="L892"></a><tt class="py-lineno"> 892</tt> <tt class="py-line"><tt class="py-docstring"> batch.execute(http=http)</tt> </tt>
-<a name="L893"></a><tt class="py-lineno"> 893</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L894"></a><tt class="py-lineno"> 894</tt> <tt class="py-line"> </tt>
-<a name="L895"></a><tt class="py-lineno"> 895</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-163" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-163', 'positional', 'link-21');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
-<a name="BatchHttpRequest.__init__"></a><div id="BatchHttpRequest.__init__-def"><a name="L896"></a><tt class="py-lineno"> 896</tt> <a class="py-toggle" href="#" id="BatchHttpRequest.__init__-toggle" onclick="return toggle('BatchHttpRequest.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.BatchHttpRequest-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">callback</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">batch_uri</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="BatchHttpRequest.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest.__init__-expanded"><a name="L897"></a><tt class="py-lineno"> 897</tt> <tt class="py-line"> <tt class="py-docstring">"""Constructor for a BatchHttpRequest.</tt> </tt>
-<a name="L898"></a><tt class="py-lineno"> 898</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L899"></a><tt class="py-lineno"> 899</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L900"></a><tt class="py-lineno"> 900</tt> <tt class="py-line"><tt class="py-docstring"> callback: callable, A callback to be called for each response, of the</tt> </tt>
-<a name="L901"></a><tt class="py-lineno"> 901</tt> <tt class="py-line"><tt class="py-docstring"> form callback(id, response, exception). The first parameter is the</tt> </tt>
-<a name="L902"></a><tt class="py-lineno"> 902</tt> <tt class="py-line"><tt class="py-docstring"> request id, and the second is the deserialized response object. The</tt> </tt>
-<a name="L903"></a><tt class="py-lineno"> 903</tt> <tt class="py-line"><tt class="py-docstring"> third is an apiclient.errors.HttpError exception object if an HTTP error</tt> </tt>
-<a name="L904"></a><tt class="py-lineno"> 904</tt> <tt class="py-line"><tt class="py-docstring"> occurred while processing the request, or None if no error occurred.</tt> </tt>
-<a name="L905"></a><tt class="py-lineno"> 905</tt> <tt class="py-line"><tt class="py-docstring"> batch_uri: string, URI to send batch requests to.</tt> </tt>
-<a name="L906"></a><tt class="py-lineno"> 906</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L907"></a><tt class="py-lineno"> 907</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">batch_uri</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L908"></a><tt class="py-lineno"> 908</tt> <tt class="py-line"> <tt class="py-name">batch_uri</tt> <tt class="py-op">=</tt> <tt class="py-string">'https://www.googleapis.com/batch'</tt> </tt>
-<a name="L909"></a><tt class="py-lineno"> 909</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_batch_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">batch_uri</tt> </tt>
-<a name="L910"></a><tt class="py-lineno"> 910</tt> <tt class="py-line"> </tt>
-<a name="L911"></a><tt class="py-lineno"> 911</tt> <tt class="py-line"> <tt class="py-comment"># Global callback to be called for each individual response in the batch.</tt> </tt>
-<a name="L912"></a><tt class="py-lineno"> 912</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_callback</tt> <tt class="py-op">=</tt> <tt class="py-name">callback</tt> </tt>
-<a name="L913"></a><tt class="py-lineno"> 913</tt> <tt class="py-line"> </tt>
-<a name="L914"></a><tt class="py-lineno"> 914</tt> <tt class="py-line"> <tt class="py-comment"># A map from id to request.</tt> </tt>
-<a name="L915"></a><tt class="py-lineno"> 915</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requests</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-<a name="L916"></a><tt class="py-lineno"> 916</tt> <tt class="py-line"> </tt>
-<a name="L917"></a><tt class="py-lineno"> 917</tt> <tt class="py-line"> <tt class="py-comment"># A map from id to callback.</tt> </tt>
-<a name="L918"></a><tt class="py-lineno"> 918</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_callbacks</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-<a name="L919"></a><tt class="py-lineno"> 919</tt> <tt class="py-line"> </tt>
-<a name="L920"></a><tt class="py-lineno"> 920</tt> <tt class="py-line"> <tt class="py-comment"># List of request ids, in the order in which they were added.</tt> </tt>
-<a name="L921"></a><tt class="py-lineno"> 921</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_order</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L922"></a><tt class="py-lineno"> 922</tt> <tt class="py-line"> </tt>
-<a name="L923"></a><tt class="py-lineno"> 923</tt> <tt class="py-line"> <tt class="py-comment"># The last auto generated id.</tt> </tt>
-<a name="L924"></a><tt class="py-lineno"> 924</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_last_auto_id</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
-<a name="L925"></a><tt class="py-lineno"> 925</tt> <tt class="py-line"> </tt>
-<a name="L926"></a><tt class="py-lineno"> 926</tt> <tt class="py-line"> <tt class="py-comment"># Unique ID on which to base the Content-ID headers.</tt> </tt>
-<a name="L927"></a><tt class="py-lineno"> 927</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_base_id</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L928"></a><tt class="py-lineno"> 928</tt> <tt class="py-line"> </tt>
-<a name="L929"></a><tt class="py-lineno"> 929</tt> <tt class="py-line"> <tt class="py-comment"># A map from request id to (httplib2.Response, content) response pairs</tt> </tt>
-<a name="L930"></a><tt class="py-lineno"> 930</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_responses</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-<a name="L931"></a><tt class="py-lineno"> 931</tt> <tt class="py-line"> </tt>
-<a name="L932"></a><tt class="py-lineno"> 932</tt> <tt class="py-line"> <tt class="py-comment"># A map of id(Credentials) that have been refreshed.</tt> </tt>
-<a name="L933"></a><tt class="py-lineno"> 933</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_refreshed_credentials</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-</div><a name="L934"></a><tt class="py-lineno"> 934</tt> <tt class="py-line"> </tt>
-<a name="BatchHttpRequest._refresh_and_apply_credentials"></a><div id="BatchHttpRequest._refresh_and_apply_credentials-def"><a name="L935"></a><tt class="py-lineno"> 935</tt> <a class="py-toggle" href="#" id="BatchHttpRequest._refresh_and_apply_credentials-toggle" onclick="return toggle('BatchHttpRequest._refresh_and_apply_credentials');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.BatchHttpRequest-class.html#_refresh_and_apply_credentials">_refresh_and_apply_credentials</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">request</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="BatchHttpRequest._refresh_and_apply_credentials-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest._refresh_and_apply_credentials-expanded"><a name="L936"></a><tt class="py-lineno"> 936</tt> <tt class="py-line"> <tt class="py-docstring">"""Refresh the credentials and apply to the request.</tt> </tt>
+oauth2client.client.OAuth2Credentials.to_json" class="py-name" href="#" onclick="return doclink('link-171', 'to_json', 'link-171');">to_json</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L911"></a><tt class="py-lineno"> 911</tt> <tt class="py-line"> <tt class="py-keyword">del</tt> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'http'</tt><tt class="py-op">]</tt> </tt>
+<a name="L912"></a><tt class="py-lineno"> 912</tt> <tt class="py-line"> <tt class="py-keyword">del</tt> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'postproc'</tt><tt class="py-op">]</tt> </tt>
+<a name="L913"></a><tt class="py-lineno"> 913</tt> <tt class="py-line"> <tt class="py-keyword">del</tt> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'_sleep'</tt><tt class="py-op">]</tt> </tt>
+<a name="L914"></a><tt class="py-lineno"> 914</tt> <tt class="py-line"> <tt class="py-keyword">del</tt> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'_rand'</tt><tt class="py-op">]</tt> </tt>
+<a name="L915"></a><tt class="py-lineno"> 915</tt> <tt class="py-line"> </tt>
+<a name="L916"></a><tt class="py-lineno"> 916</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt class="py-name">dumps</tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L917"></a><tt class="py-lineno"> 917</tt> <tt class="py-line"> </tt>
+<a name="L918"></a><tt class="py-lineno"> 918</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">staticmethod</tt> </tt>
+<a name="HttpRequest.from_json"></a><div id="HttpRequest.from_json-def"><a name="L919"></a><tt class="py-lineno"> 919</tt> <a class="py-toggle" href="#" id="HttpRequest.from_json-toggle" onclick="return toggle('HttpRequest.from_json');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.HttpRequest-class.html#from_json">from_json</a><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">,</tt> <tt class="py-param">postproc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="HttpRequest.from_json-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpRequest.from_json-expanded"><a name="L920"></a><tt class="py-lineno"> 920</tt> <tt class="py-line"> <tt class="py-docstring">"""Returns an HttpRequest populated with info from a JSON object."""</tt> </tt>
+<a name="L921"></a><tt class="py-lineno"> 921</tt> <tt class="py-line"> <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-172" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-172', 'loads', 'link-23');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
+<a name="L922"></a><tt class="py-lineno"> 922</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'resumable'</tt><tt class="py-op">]</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L923"></a><tt class="py-lineno"> 923</tt> <tt class="py-line"> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'resumable'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-173" class="py-name" targets="Class apiclient.http.MediaUpload=apiclient.http.MediaUpload-class.html"><a title="apiclient.http.MediaUpload" class="py-name" href="#" onclick="return doclink('link-173', 'MediaUpload', 'link-173');">MediaUpload</a></tt><tt class="py-op">.</tt><tt id="link-174" class="py-name" targets="Class Method apiclient.http.MediaUpload.new_from_json()=apiclient.http.MediaUpload-class.html#new_from_json,Class Method oauth2client.client.Credentials.new_from_json()=oauth2client.client.Credentials-class.html#new_from_json"><a title="apiclient.http.MediaUpload.new_from_json
+oauth2client.client.Credentials.new_from_json" class="py-name" href="#" onclick="return doclink('link-174', 'new_from_json', 'link-174');">new_from_json</a></tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'resumable'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L924"></a><tt class="py-lineno"> 924</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-175" class="py-name" targets="Class apiclient.http.HttpRequest=apiclient.http.HttpRequest-class.html"><a title="apiclient.http.HttpRequest" class="py-name" href="#" onclick="return doclink('link-175', 'HttpRequest', 'link-175');">HttpRequest</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L925"></a><tt class="py-lineno"> 925</tt> <tt class="py-line"> <tt id="link-176" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-176', 'http', 'link-72');">http</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L926"></a><tt class="py-lineno"> 926</tt> <tt class="py-line"> <tt class="py-name">postproc</tt><tt class="py-op">,</tt> </tt>
+<a name="L927"></a><tt class="py-lineno"> 927</tt> <tt class="py-line"> <tt class="py-name">uri</tt><tt class="py-op">=</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'uri'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L928"></a><tt class="py-lineno"> 928</tt> <tt class="py-line"> <tt class="py-name">method</tt><tt class="py-op">=</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'method'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L929"></a><tt class="py-lineno"> 929</tt> <tt class="py-line"> <tt id="link-177" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-177', 'body', 'link-58');">body</a></tt><tt class="py-op">=</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'body'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L930"></a><tt class="py-lineno"> 930</tt> <tt class="py-line"> <tt class="py-name">headers</tt><tt class="py-op">=</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'headers'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L931"></a><tt class="py-lineno"> 931</tt> <tt class="py-line"> <tt class="py-name">methodId</tt><tt class="py-op">=</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'methodId'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L932"></a><tt class="py-lineno"> 932</tt> <tt class="py-line"> <tt id="link-178" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
+apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-178', 'resumable', 'link-35');">resumable</a></tt><tt class="py-op">=</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'resumable'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L933"></a><tt class="py-lineno"> 933</tt> <tt class="py-line"> </tt>
+<a name="BatchHttpRequest"></a><div id="BatchHttpRequest-def"><a name="L934"></a><tt class="py-lineno"> 934</tt> <tt class="py-line"> </tt>
+<a name="L935"></a><tt class="py-lineno"> 935</tt> <a class="py-toggle" href="#" id="BatchHttpRequest-toggle" onclick="return toggle('BatchHttpRequest');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.http.BatchHttpRequest-class.html">BatchHttpRequest</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BatchHttpRequest-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="BatchHttpRequest-expanded"><a name="L936"></a><tt class="py-lineno"> 936</tt> <tt class="py-line"> <tt class="py-docstring">"""Batches multiple HttpRequest objects into a single HTTP request.</tt> </tt>
<a name="L937"></a><tt class="py-lineno"> 937</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L938"></a><tt class="py-lineno"> 938</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L939"></a><tt class="py-lineno"> 939</tt> <tt class="py-line"><tt class="py-docstring"> request: HttpRequest, the request.</tt> </tt>
-<a name="L940"></a><tt class="py-lineno"> 940</tt> <tt class="py-line"><tt class="py-docstring"> http: httplib2.Http, the global http object for the batch.</tt> </tt>
-<a name="L941"></a><tt class="py-lineno"> 941</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L942"></a><tt class="py-lineno"> 942</tt> <tt class="py-line"> <tt class="py-comment"># For the credentials to refresh, but only once per refresh_token</tt> </tt>
-<a name="L943"></a><tt class="py-lineno"> 943</tt> <tt class="py-line"> <tt class="py-comment"># If there is no http per the request then refresh the http passed in</tt> </tt>
-<a name="L944"></a><tt class="py-lineno"> 944</tt> <tt class="py-line"> <tt class="py-comment"># via execute()</tt> </tt>
-<a name="L945"></a><tt class="py-lineno"> 945</tt> <tt class="py-line"> <tt class="py-name">creds</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L946"></a><tt class="py-lineno"> 946</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-164" class="py-name"><a title="apiclient.http.HttpMock.request
-apiclient.http.HttpMockSequence.request
-apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-164', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt id="link-165" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-165', 'http', 'link-70');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt id="link-166" class="py-name"><a title="apiclient.http.HttpMock.request
-apiclient.http.HttpMockSequence.request
-apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-166', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt id="link-167" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-167', 'http', 'link-70');">http</a></tt><tt class="py-op">.</tt><tt id="link-168" class="py-name"><a title="apiclient.http.HttpMock.request
-apiclient.http.HttpMockSequence.request
-apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-168', 'request', 'link-67');">request</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L947"></a><tt class="py-lineno"> 947</tt> <tt class="py-line"> <tt class="py-string">'credentials'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L948"></a><tt class="py-lineno"> 948</tt> <tt class="py-line"> <tt class="py-name">creds</tt> <tt class="py-op">=</tt> <tt id="link-169" class="py-name"><a title="apiclient.http.HttpMock.request
-apiclient.http.HttpMockSequence.request
-apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-169', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt id="link-170" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-170', 'http', 'link-70');">http</a></tt><tt class="py-op">.</tt><tt id="link-171" class="py-name"><a title="apiclient.http.HttpMock.request
-apiclient.http.HttpMockSequence.request
-apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-171', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt id="link-172" class="py-name" targets="Variable oauth2client.appengine.CredentialsModel.credentials=oauth2client.appengine.CredentialsModel-class.html#credentials,Variable oauth2client.appengine.CredentialsNDBModel.credentials=oauth2client.appengine.CredentialsNDBModel-class.html#credentials"><a title="oauth2client.appengine.CredentialsModel.credentials
-oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-172', 'credentials', 'link-172');">credentials</a></tt> </tt>
-<a name="L949"></a><tt class="py-lineno"> 949</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt id="link-173" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-173', 'http', 'link-70');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt id="link-174" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-174', 'http', 'link-70');">http</a></tt><tt class="py-op">.</tt><tt id="link-175" class="py-name"><a title="apiclient.http.HttpMock.request
-apiclient.http.HttpMockSequence.request
-apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-175', 'request', 'link-67');">request</a></tt><tt class="py-op">,</tt> <tt class="py-string">'credentials'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L950"></a><tt class="py-lineno"> 950</tt> <tt class="py-line"> <tt class="py-name">creds</tt> <tt class="py-op">=</tt> <tt id="link-176" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-176', 'http', 'link-70');">http</a></tt><tt class="py-op">.</tt><tt id="link-177" class="py-name"><a title="apiclient.http.HttpMock.request
-apiclient.http.HttpMockSequence.request
-apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-177', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt id="link-178" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
-oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-178', 'credentials', 'link-172');">credentials</a></tt> </tt>
-<a name="L951"></a><tt class="py-lineno"> 951</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">creds</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L952"></a><tt class="py-lineno"> 952</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">id</tt><tt class="py-op">(</tt><tt class="py-name">creds</tt><tt class="py-op">)</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_refreshed_credentials</tt><tt class="py-op">:</tt> </tt>
-<a name="L953"></a><tt class="py-lineno"> 953</tt> <tt class="py-line"> <tt class="py-name">creds</tt><tt class="py-op">.</tt><tt id="link-179" class="py-name" targets="Method oauth2client.client.Credentials.refresh()=oauth2client.client.Credentials-class.html#refresh,Method oauth2client.client.OAuth2Credentials.refresh()=oauth2client.client.OAuth2Credentials-class.html#refresh"><a title="oauth2client.client.Credentials.refresh
-oauth2client.client.OAuth2Credentials.refresh" class="py-name" href="#" onclick="return doclink('link-179', 'refresh', 'link-179');">refresh</a></tt><tt class="py-op">(</tt><tt id="link-180" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-180', 'http', 'link-70');">http</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L954"></a><tt class="py-lineno"> 954</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_refreshed_credentials</tt><tt class="py-op">[</tt><tt class="py-name">id</tt><tt class="py-op">(</tt><tt class="py-name">creds</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
-<a name="L955"></a><tt class="py-lineno"> 955</tt> <tt class="py-line"> </tt>
-<a name="L956"></a><tt class="py-lineno"> 956</tt> <tt class="py-line"> <tt class="py-comment"># Only apply the credentials if we are using the http object passed in,</tt> </tt>
-<a name="L957"></a><tt class="py-lineno"> 957</tt> <tt class="py-line"> <tt class="py-comment"># otherwise apply() will get called during _serialize_request().</tt> </tt>
-<a name="L958"></a><tt class="py-lineno"> 958</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-181" class="py-name"><a title="apiclient.http.HttpMock.request
-apiclient.http.HttpMockSequence.request
-apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-181', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt id="link-182" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-182', 'http', 'link-70');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keyword">or</tt> <tt class="py-keyword">not</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt id="link-183" class="py-name"><a title="apiclient.http.HttpMock.request
-apiclient.http.HttpMockSequence.request
-apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-183', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt id="link-184" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-184', 'http', 'link-70');">http</a></tt><tt class="py-op">.</tt><tt id="link-185" class="py-name"><a title="apiclient.http.HttpMock.request
-apiclient.http.HttpMockSequence.request
-apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-185', 'request', 'link-67');">request</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L959"></a><tt class="py-lineno"> 959</tt> <tt class="py-line"> <tt class="py-string">'credentials'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L960"></a><tt class="py-lineno"> 960</tt> <tt class="py-line"> <tt class="py-name">creds</tt><tt class="py-op">.</tt><tt id="link-186" class="py-name" targets="Method oauth2client.client.Credentials.apply()=oauth2client.client.Credentials-class.html#apply,Method oauth2client.client.OAuth2Credentials.apply()=oauth2client.client.OAuth2Credentials-class.html#apply"><a title="oauth2client.client.Credentials.apply
-oauth2client.client.OAuth2Credentials.apply" class="py-name" href="#" onclick="return doclink('link-186', 'apply', 'link-186');">apply</a></tt><tt class="py-op">(</tt><tt id="link-187" class="py-name"><a title="apiclient.http.HttpMock.request
-apiclient.http.HttpMockSequence.request
-apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-187', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L961"></a><tt class="py-lineno"> 961</tt> <tt class="py-line"> </tt>
-<a name="BatchHttpRequest._id_to_header"></a><div id="BatchHttpRequest._id_to_header-def"><a name="L962"></a><tt class="py-lineno"> 962</tt> <a class="py-toggle" href="#" id="BatchHttpRequest._id_to_header-toggle" onclick="return toggle('BatchHttpRequest._id_to_header');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.BatchHttpRequest-class.html#_id_to_header">_id_to_header</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">id_</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="BatchHttpRequest._id_to_header-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest._id_to_header-expanded"><a name="L963"></a><tt class="py-lineno"> 963</tt> <tt class="py-line"> <tt class="py-docstring">"""Convert an id to a Content-ID header value.</tt> </tt>
-<a name="L964"></a><tt class="py-lineno"> 964</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L965"></a><tt class="py-lineno"> 965</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L966"></a><tt class="py-lineno"> 966</tt> <tt class="py-line"><tt class="py-docstring"> id_: string, identifier of individual request.</tt> </tt>
-<a name="L967"></a><tt class="py-lineno"> 967</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L968"></a><tt class="py-lineno"> 968</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L969"></a><tt class="py-lineno"> 969</tt> <tt class="py-line"><tt class="py-docstring"> A Content-ID header with the id_ encoded into it. A UUID is prepended to</tt> </tt>
-<a name="L970"></a><tt class="py-lineno"> 970</tt> <tt class="py-line"><tt class="py-docstring"> the value because Content-ID headers are supposed to be universally</tt> </tt>
-<a name="L971"></a><tt class="py-lineno"> 971</tt> <tt class="py-line"><tt class="py-docstring"> unique.</tt> </tt>
-<a name="L972"></a><tt class="py-lineno"> 972</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L973"></a><tt class="py-lineno"> 973</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_base_id</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L974"></a><tt class="py-lineno"> 974</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_base_id</tt> <tt class="py-op">=</tt> <tt class="py-name">uuid</tt><tt class="py-op">.</tt><tt class="py-name">uuid4</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L975"></a><tt class="py-lineno"> 975</tt> <tt class="py-line"> </tt>
-<a name="L976"></a><tt class="py-lineno"> 976</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">'<%s+%s>'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_base_id</tt><tt class="py-op">,</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">quote</tt><tt class="py-op">(</tt><tt class="py-name">id_</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L977"></a><tt class="py-lineno"> 977</tt> <tt class="py-line"> </tt>
-<a name="BatchHttpRequest._header_to_id"></a><div id="BatchHttpRequest._header_to_id-def"><a name="L978"></a><tt class="py-lineno"> 978</tt> <a class="py-toggle" href="#" id="BatchHttpRequest._header_to_id-toggle" onclick="return toggle('BatchHttpRequest._header_to_id');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.BatchHttpRequest-class.html#_header_to_id">_header_to_id</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">header</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="BatchHttpRequest._header_to_id-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest._header_to_id-expanded"><a name="L979"></a><tt class="py-lineno"> 979</tt> <tt class="py-line"> <tt class="py-docstring">"""Convert a Content-ID header value to an id.</tt> </tt>
-<a name="L980"></a><tt class="py-lineno"> 980</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L981"></a><tt class="py-lineno"> 981</tt> <tt class="py-line"><tt class="py-docstring"> Presumes the Content-ID header conforms to the format that _id_to_header()</tt> </tt>
-<a name="L982"></a><tt class="py-lineno"> 982</tt> <tt class="py-line"><tt class="py-docstring"> returns.</tt> </tt>
-<a name="L983"></a><tt class="py-lineno"> 983</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L984"></a><tt class="py-lineno"> 984</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L985"></a><tt class="py-lineno"> 985</tt> <tt class="py-line"><tt class="py-docstring"> header: string, Content-ID header value.</tt> </tt>
-<a name="L986"></a><tt class="py-lineno"> 986</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L987"></a><tt class="py-lineno"> 987</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L988"></a><tt class="py-lineno"> 988</tt> <tt class="py-line"><tt class="py-docstring"> The extracted id value.</tt> </tt>
-<a name="L989"></a><tt class="py-lineno"> 989</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L990"></a><tt class="py-lineno"> 990</tt> <tt class="py-line"><tt class="py-docstring"> Raises:</tt> </tt>
-<a name="L991"></a><tt class="py-lineno"> 991</tt> <tt class="py-line"><tt class="py-docstring"> BatchError if the header is not in the expected format.</tt> </tt>
-<a name="L992"></a><tt class="py-lineno"> 992</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L993"></a><tt class="py-lineno"> 993</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">header</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-string">'<'</tt> <tt class="py-keyword">or</tt> <tt class="py-name">header</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-string">'>'</tt><tt class="py-op">:</tt> </tt>
-<a name="L994"></a><tt class="py-lineno"> 994</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-188" class="py-name"><a title="apiclient.errors.BatchError" class="py-name" href="#" onclick="return doclink('link-188', 'BatchError', 'link-2');">BatchError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Invalid value for Content-ID: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">header</tt><tt class="py-op">)</tt> </tt>
-<a name="L995"></a><tt class="py-lineno"> 995</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'+'</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">header</tt><tt class="py-op">:</tt> </tt>
-<a name="L996"></a><tt class="py-lineno"> 996</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-189" class="py-name"><a title="apiclient.errors.BatchError" class="py-name" href="#" onclick="return doclink('link-189', 'BatchError', 'link-2');">BatchError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Invalid value for Content-ID: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">header</tt><tt class="py-op">)</tt> </tt>
-<a name="L997"></a><tt class="py-lineno"> 997</tt> <tt class="py-line"> <tt class="py-name">base</tt><tt class="py-op">,</tt> <tt class="py-name">id_</tt> <tt class="py-op">=</tt> <tt class="py-name">header</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">rsplit</tt><tt class="py-op">(</tt><tt class="py-string">'+'</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L938"></a><tt class="py-lineno"> 938</tt> <tt class="py-line"><tt class="py-docstring"> Example:</tt> </tt>
+<a name="L939"></a><tt class="py-lineno"> 939</tt> <tt class="py-line"><tt class="py-docstring"> from apiclient.http import BatchHttpRequest</tt> </tt>
+<a name="L940"></a><tt class="py-lineno"> 940</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L941"></a><tt class="py-lineno"> 941</tt> <tt class="py-line"><tt class="py-docstring"> def list_animals(request_id, response, exception):</tt> </tt>
+<a name="L942"></a><tt class="py-lineno"> 942</tt> <tt class="py-line"><tt class="py-docstring"> \"\"\"Do something with the animals list response.\"\"\"</tt> </tt>
+<a name="L943"></a><tt class="py-lineno"> 943</tt> <tt class="py-line"><tt class="py-docstring"> if exception is not None:</tt> </tt>
+<a name="L944"></a><tt class="py-lineno"> 944</tt> <tt class="py-line"><tt class="py-docstring"> # Do something with the exception.</tt> </tt>
+<a name="L945"></a><tt class="py-lineno"> 945</tt> <tt class="py-line"><tt class="py-docstring"> pass</tt> </tt>
+<a name="L946"></a><tt class="py-lineno"> 946</tt> <tt class="py-line"><tt class="py-docstring"> else:</tt> </tt>
+<a name="L947"></a><tt class="py-lineno"> 947</tt> <tt class="py-line"><tt class="py-docstring"> # Do something with the response.</tt> </tt>
+<a name="L948"></a><tt class="py-lineno"> 948</tt> <tt class="py-line"><tt class="py-docstring"> pass</tt> </tt>
+<a name="L949"></a><tt class="py-lineno"> 949</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L950"></a><tt class="py-lineno"> 950</tt> <tt class="py-line"><tt class="py-docstring"> def list_farmers(request_id, response, exception):</tt> </tt>
+<a name="L951"></a><tt class="py-lineno"> 951</tt> <tt class="py-line"><tt class="py-docstring"> \"\"\"Do something with the farmers list response.\"\"\"</tt> </tt>
+<a name="L952"></a><tt class="py-lineno"> 952</tt> <tt class="py-line"><tt class="py-docstring"> if exception is not None:</tt> </tt>
+<a name="L953"></a><tt class="py-lineno"> 953</tt> <tt class="py-line"><tt class="py-docstring"> # Do something with the exception.</tt> </tt>
+<a name="L954"></a><tt class="py-lineno"> 954</tt> <tt class="py-line"><tt class="py-docstring"> pass</tt> </tt>
+<a name="L955"></a><tt class="py-lineno"> 955</tt> <tt class="py-line"><tt class="py-docstring"> else:</tt> </tt>
+<a name="L956"></a><tt class="py-lineno"> 956</tt> <tt class="py-line"><tt class="py-docstring"> # Do something with the response.</tt> </tt>
+<a name="L957"></a><tt class="py-lineno"> 957</tt> <tt class="py-line"><tt class="py-docstring"> pass</tt> </tt>
+<a name="L958"></a><tt class="py-lineno"> 958</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L959"></a><tt class="py-lineno"> 959</tt> <tt class="py-line"><tt class="py-docstring"> service = build('farm', 'v2')</tt> </tt>
+<a name="L960"></a><tt class="py-lineno"> 960</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L961"></a><tt class="py-lineno"> 961</tt> <tt class="py-line"><tt class="py-docstring"> batch = BatchHttpRequest()</tt> </tt>
+<a name="L962"></a><tt class="py-lineno"> 962</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L963"></a><tt class="py-lineno"> 963</tt> <tt class="py-line"><tt class="py-docstring"> batch.add(service.animals().list(), list_animals)</tt> </tt>
+<a name="L964"></a><tt class="py-lineno"> 964</tt> <tt class="py-line"><tt class="py-docstring"> batch.add(service.farmers().list(), list_farmers)</tt> </tt>
+<a name="L965"></a><tt class="py-lineno"> 965</tt> <tt class="py-line"><tt class="py-docstring"> batch.execute(http=http)</tt> </tt>
+<a name="L966"></a><tt class="py-lineno"> 966</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L967"></a><tt class="py-lineno"> 967</tt> <tt class="py-line"> </tt>
+<a name="L968"></a><tt class="py-lineno"> 968</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-179" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-179', 'positional', 'link-21');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="BatchHttpRequest.__init__"></a><div id="BatchHttpRequest.__init__-def"><a name="L969"></a><tt class="py-lineno"> 969</tt> <a class="py-toggle" href="#" id="BatchHttpRequest.__init__-toggle" onclick="return toggle('BatchHttpRequest.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.BatchHttpRequest-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">callback</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">batch_uri</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BatchHttpRequest.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest.__init__-expanded"><a name="L970"></a><tt class="py-lineno"> 970</tt> <tt class="py-line"> <tt class="py-docstring">"""Constructor for a BatchHttpRequest.</tt> </tt>
+<a name="L971"></a><tt class="py-lineno"> 971</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L972"></a><tt class="py-lineno"> 972</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L973"></a><tt class="py-lineno"> 973</tt> <tt class="py-line"><tt class="py-docstring"> callback: callable, A callback to be called for each response, of the</tt> </tt>
+<a name="L974"></a><tt class="py-lineno"> 974</tt> <tt class="py-line"><tt class="py-docstring"> form callback(id, response, exception). The first parameter is the</tt> </tt>
+<a name="L975"></a><tt class="py-lineno"> 975</tt> <tt class="py-line"><tt class="py-docstring"> request id, and the second is the deserialized response object. The</tt> </tt>
+<a name="L976"></a><tt class="py-lineno"> 976</tt> <tt class="py-line"><tt class="py-docstring"> third is an apiclient.errors.HttpError exception object if an HTTP error</tt> </tt>
+<a name="L977"></a><tt class="py-lineno"> 977</tt> <tt class="py-line"><tt class="py-docstring"> occurred while processing the request, or None if no error occurred.</tt> </tt>
+<a name="L978"></a><tt class="py-lineno"> 978</tt> <tt class="py-line"><tt class="py-docstring"> batch_uri: string, URI to send batch requests to.</tt> </tt>
+<a name="L979"></a><tt class="py-lineno"> 979</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L980"></a><tt class="py-lineno"> 980</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">batch_uri</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L981"></a><tt class="py-lineno"> 981</tt> <tt class="py-line"> <tt class="py-name">batch_uri</tt> <tt class="py-op">=</tt> <tt class="py-string">'https://www.googleapis.com/batch'</tt> </tt>
+<a name="L982"></a><tt class="py-lineno"> 982</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_batch_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">batch_uri</tt> </tt>
+<a name="L983"></a><tt class="py-lineno"> 983</tt> <tt class="py-line"> </tt>
+<a name="L984"></a><tt class="py-lineno"> 984</tt> <tt class="py-line"> <tt class="py-comment"># Global callback to be called for each individual response in the batch.</tt> </tt>
+<a name="L985"></a><tt class="py-lineno"> 985</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_callback</tt> <tt class="py-op">=</tt> <tt class="py-name">callback</tt> </tt>
+<a name="L986"></a><tt class="py-lineno"> 986</tt> <tt class="py-line"> </tt>
+<a name="L987"></a><tt class="py-lineno"> 987</tt> <tt class="py-line"> <tt class="py-comment"># A map from id to request.</tt> </tt>
+<a name="L988"></a><tt class="py-lineno"> 988</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requests</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L989"></a><tt class="py-lineno"> 989</tt> <tt class="py-line"> </tt>
+<a name="L990"></a><tt class="py-lineno"> 990</tt> <tt class="py-line"> <tt class="py-comment"># A map from id to callback.</tt> </tt>
+<a name="L991"></a><tt class="py-lineno"> 991</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_callbacks</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L992"></a><tt class="py-lineno"> 992</tt> <tt class="py-line"> </tt>
+<a name="L993"></a><tt class="py-lineno"> 993</tt> <tt class="py-line"> <tt class="py-comment"># List of request ids, in the order in which they were added.</tt> </tt>
+<a name="L994"></a><tt class="py-lineno"> 994</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_order</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L995"></a><tt class="py-lineno"> 995</tt> <tt class="py-line"> </tt>
+<a name="L996"></a><tt class="py-lineno"> 996</tt> <tt class="py-line"> <tt class="py-comment"># The last auto generated id.</tt> </tt>
+<a name="L997"></a><tt class="py-lineno"> 997</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_last_auto_id</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
<a name="L998"></a><tt class="py-lineno"> 998</tt> <tt class="py-line"> </tt>
-<a name="L999"></a><tt class="py-lineno"> 999</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">unquote</tt><tt class="py-op">(</tt><tt class="py-name">id_</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1000"></a><tt class="py-lineno">1000</tt> <tt class="py-line"> </tt>
-<a name="BatchHttpRequest._serialize_request"></a><div id="BatchHttpRequest._serialize_request-def"><a name="L1001"></a><tt class="py-lineno">1001</tt> <a class="py-toggle" href="#" id="BatchHttpRequest._serialize_request-toggle" onclick="return toggle('BatchHttpRequest._serialize_request');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.BatchHttpRequest-class.html#_serialize_request">_serialize_request</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">request</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="BatchHttpRequest._serialize_request-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest._serialize_request-expanded"><a name="L1002"></a><tt class="py-lineno">1002</tt> <tt class="py-line"> <tt class="py-docstring">"""Convert an HttpRequest object into a string.</tt> </tt>
-<a name="L1003"></a><tt class="py-lineno">1003</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1004"></a><tt class="py-lineno">1004</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L1005"></a><tt class="py-lineno">1005</tt> <tt class="py-line"><tt class="py-docstring"> request: HttpRequest, the request to serialize.</tt> </tt>
-<a name="L1006"></a><tt class="py-lineno">1006</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1007"></a><tt class="py-lineno">1007</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L1008"></a><tt class="py-lineno">1008</tt> <tt class="py-line"><tt class="py-docstring"> The request as a string in application/http format.</tt> </tt>
-<a name="L1009"></a><tt class="py-lineno">1009</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L1010"></a><tt class="py-lineno">1010</tt> <tt class="py-line"> <tt class="py-comment"># Construct status line</tt> </tt>
-<a name="L1011"></a><tt class="py-lineno">1011</tt> <tt class="py-line"> <tt class="py-name">parsed</tt> <tt class="py-op">=</tt> <tt class="py-name">urlparse</tt><tt class="py-op">.</tt><tt class="py-name">urlparse</tt><tt class="py-op">(</tt><tt id="link-190" class="py-name"><a title="apiclient.http.HttpMock.request
+<a name="L999"></a><tt class="py-lineno"> 999</tt> <tt class="py-line"> <tt class="py-comment"># Unique ID on which to base the Content-ID headers.</tt> </tt>
+<a name="L1000"></a><tt class="py-lineno">1000</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_base_id</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1001"></a><tt class="py-lineno">1001</tt> <tt class="py-line"> </tt>
+<a name="L1002"></a><tt class="py-lineno">1002</tt> <tt class="py-line"> <tt class="py-comment"># A map from request id to (httplib2.Response, content) response pairs</tt> </tt>
+<a name="L1003"></a><tt class="py-lineno">1003</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_responses</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L1004"></a><tt class="py-lineno">1004</tt> <tt class="py-line"> </tt>
+<a name="L1005"></a><tt class="py-lineno">1005</tt> <tt class="py-line"> <tt class="py-comment"># A map of id(Credentials) that have been refreshed.</tt> </tt>
+<a name="L1006"></a><tt class="py-lineno">1006</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_refreshed_credentials</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+</div><a name="L1007"></a><tt class="py-lineno">1007</tt> <tt class="py-line"> </tt>
+<a name="BatchHttpRequest._refresh_and_apply_credentials"></a><div id="BatchHttpRequest._refresh_and_apply_credentials-def"><a name="L1008"></a><tt class="py-lineno">1008</tt> <a class="py-toggle" href="#" id="BatchHttpRequest._refresh_and_apply_credentials-toggle" onclick="return toggle('BatchHttpRequest._refresh_and_apply_credentials');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.BatchHttpRequest-class.html#_refresh_and_apply_credentials">_refresh_and_apply_credentials</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">request</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BatchHttpRequest._refresh_and_apply_credentials-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest._refresh_and_apply_credentials-expanded"><a name="L1009"></a><tt class="py-lineno">1009</tt> <tt class="py-line"> <tt class="py-docstring">"""Refresh the credentials and apply to the request.</tt> </tt>
+<a name="L1010"></a><tt class="py-lineno">1010</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1011"></a><tt class="py-lineno">1011</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L1012"></a><tt class="py-lineno">1012</tt> <tt class="py-line"><tt class="py-docstring"> request: HttpRequest, the request.</tt> </tt>
+<a name="L1013"></a><tt class="py-lineno">1013</tt> <tt class="py-line"><tt class="py-docstring"> http: httplib2.Http, the global http object for the batch.</tt> </tt>
+<a name="L1014"></a><tt class="py-lineno">1014</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1015"></a><tt class="py-lineno">1015</tt> <tt class="py-line"> <tt class="py-comment"># For the credentials to refresh, but only once per refresh_token</tt> </tt>
+<a name="L1016"></a><tt class="py-lineno">1016</tt> <tt class="py-line"> <tt class="py-comment"># If there is no http per the request then refresh the http passed in</tt> </tt>
+<a name="L1017"></a><tt class="py-lineno">1017</tt> <tt class="py-line"> <tt class="py-comment"># via execute()</tt> </tt>
+<a name="L1018"></a><tt class="py-lineno">1018</tt> <tt class="py-line"> <tt class="py-name">creds</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1019"></a><tt class="py-lineno">1019</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-180" class="py-name"><a title="apiclient.http.HttpMock.request
apiclient.http.HttpMockSequence.request
apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-190', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt> </tt>
-<a name="L1012"></a><tt class="py-lineno">1012</tt> <tt class="py-line"> <tt class="py-name">request_line</tt> <tt class="py-op">=</tt> <tt class="py-name">urlparse</tt><tt class="py-op">.</tt><tt class="py-name">urlunparse</tt><tt class="py-op">(</tt> </tt>
-<a name="L1013"></a><tt class="py-lineno">1013</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">,</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt class="py-name">params</tt><tt class="py-op">,</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt class="py-name">query</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
-<a name="L1014"></a><tt class="py-lineno">1014</tt> <tt class="py-line"> <tt class="py-op">)</tt> </tt>
-<a name="L1015"></a><tt class="py-lineno">1015</tt> <tt class="py-line"> <tt class="py-name">status_line</tt> <tt class="py-op">=</tt> <tt id="link-191" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-180', 'request', 'link-68');">request</a></tt><tt class="py-op">.</tt><tt id="link-181" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-181', 'http', 'link-72');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt id="link-182" class="py-name"><a title="apiclient.http.HttpMock.request
apiclient.http.HttpMockSequence.request
apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-191', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">method</tt> <tt class="py-op">+</tt> <tt class="py-string">' '</tt> <tt class="py-op">+</tt> <tt class="py-name">request_line</tt> <tt class="py-op">+</tt> <tt class="py-string">' HTTP/1.1\n'</tt> </tt>
-<a name="L1016"></a><tt class="py-lineno">1016</tt> <tt class="py-line"> <tt class="py-name">major</tt><tt class="py-op">,</tt> <tt class="py-name">minor</tt> <tt class="py-op">=</tt> <tt id="link-192" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-182', 'request', 'link-68');">request</a></tt><tt class="py-op">.</tt><tt id="link-183" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-183', 'http', 'link-72');">http</a></tt><tt class="py-op">.</tt><tt id="link-184" class="py-name"><a title="apiclient.http.HttpMock.request
apiclient.http.HttpMockSequence.request
apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-192', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">.</tt><tt id="link-193" class="py-name"><a title="apiclient.schema.Schemas.get
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-184', 'request', 'link-68');">request</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1020"></a><tt class="py-lineno">1020</tt> <tt class="py-line"> <tt class="py-string">'credentials'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1021"></a><tt class="py-lineno">1021</tt> <tt class="py-line"> <tt class="py-name">creds</tt> <tt class="py-op">=</tt> <tt id="link-185" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.http.HttpMockSequence.request
+apiclient.model.BaseModel.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-185', 'request', 'link-68');">request</a></tt><tt class="py-op">.</tt><tt id="link-186" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-186', 'http', 'link-72');">http</a></tt><tt class="py-op">.</tt><tt id="link-187" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.http.HttpMockSequence.request
+apiclient.model.BaseModel.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-187', 'request', 'link-68');">request</a></tt><tt class="py-op">.</tt><tt id="link-188" class="py-name" targets="Variable oauth2client.appengine.CredentialsModel.credentials=oauth2client.appengine.CredentialsModel-class.html#credentials,Variable oauth2client.appengine.CredentialsNDBModel.credentials=oauth2client.appengine.CredentialsNDBModel-class.html#credentials,Variable oauth2client.appengine.OAuth2Decorator.credentials=oauth2client.appengine.OAuth2Decorator-class.html#credentials"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-188', 'credentials', 'link-188');">credentials</a></tt> </tt>
+<a name="L1022"></a><tt class="py-lineno">1022</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt id="link-189" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-189', 'http', 'link-72');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt id="link-190" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-190', 'http', 'link-72');">http</a></tt><tt class="py-op">.</tt><tt id="link-191" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.http.HttpMockSequence.request
+apiclient.model.BaseModel.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-191', 'request', 'link-68');">request</a></tt><tt class="py-op">,</tt> <tt class="py-string">'credentials'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1023"></a><tt class="py-lineno">1023</tt> <tt class="py-line"> <tt class="py-name">creds</tt> <tt class="py-op">=</tt> <tt id="link-192" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-192', 'http', 'link-72');">http</a></tt><tt class="py-op">.</tt><tt id="link-193" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.http.HttpMockSequence.request
+apiclient.model.BaseModel.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-193', 'request', 'link-68');">request</a></tt><tt class="py-op">.</tt><tt id="link-194" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-194', 'credentials', 'link-188');">credentials</a></tt> </tt>
+<a name="L1024"></a><tt class="py-lineno">1024</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">creds</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1025"></a><tt class="py-lineno">1025</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">id</tt><tt class="py-op">(</tt><tt class="py-name">creds</tt><tt class="py-op">)</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_refreshed_credentials</tt><tt class="py-op">:</tt> </tt>
+<a name="L1026"></a><tt class="py-lineno">1026</tt> <tt class="py-line"> <tt class="py-name">creds</tt><tt class="py-op">.</tt><tt id="link-195" class="py-name" targets="Method oauth2client.client.Credentials.refresh()=oauth2client.client.Credentials-class.html#refresh,Method oauth2client.client.OAuth2Credentials.refresh()=oauth2client.client.OAuth2Credentials-class.html#refresh"><a title="oauth2client.client.Credentials.refresh
+oauth2client.client.OAuth2Credentials.refresh" class="py-name" href="#" onclick="return doclink('link-195', 'refresh', 'link-195');">refresh</a></tt><tt class="py-op">(</tt><tt id="link-196" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-196', 'http', 'link-72');">http</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1027"></a><tt class="py-lineno">1027</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_refreshed_credentials</tt><tt class="py-op">[</tt><tt class="py-name">id</tt><tt class="py-op">(</tt><tt class="py-name">creds</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L1028"></a><tt class="py-lineno">1028</tt> <tt class="py-line"> </tt>
+<a name="L1029"></a><tt class="py-lineno">1029</tt> <tt class="py-line"> <tt class="py-comment"># Only apply the credentials if we are using the http object passed in,</tt> </tt>
+<a name="L1030"></a><tt class="py-lineno">1030</tt> <tt class="py-line"> <tt class="py-comment"># otherwise apply() will get called during _serialize_request().</tt> </tt>
+<a name="L1031"></a><tt class="py-lineno">1031</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-197" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.http.HttpMockSequence.request
+apiclient.model.BaseModel.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-197', 'request', 'link-68');">request</a></tt><tt class="py-op">.</tt><tt id="link-198" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-198', 'http', 'link-72');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keyword">or</tt> <tt class="py-keyword">not</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt id="link-199" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.http.HttpMockSequence.request
+apiclient.model.BaseModel.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-199', 'request', 'link-68');">request</a></tt><tt class="py-op">.</tt><tt id="link-200" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-200', 'http', 'link-72');">http</a></tt><tt class="py-op">.</tt><tt id="link-201" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.http.HttpMockSequence.request
+apiclient.model.BaseModel.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-201', 'request', 'link-68');">request</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1032"></a><tt class="py-lineno">1032</tt> <tt class="py-line"> <tt class="py-string">'credentials'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1033"></a><tt class="py-lineno">1033</tt> <tt class="py-line"> <tt class="py-name">creds</tt><tt class="py-op">.</tt><tt id="link-202" class="py-name" targets="Method oauth2client.client.Credentials.apply()=oauth2client.client.Credentials-class.html#apply,Method oauth2client.client.OAuth2Credentials.apply()=oauth2client.client.OAuth2Credentials-class.html#apply"><a title="oauth2client.client.Credentials.apply
+oauth2client.client.OAuth2Credentials.apply" class="py-name" href="#" onclick="return doclink('link-202', 'apply', 'link-202');">apply</a></tt><tt class="py-op">(</tt><tt id="link-203" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.http.HttpMockSequence.request
+apiclient.model.BaseModel.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-203', 'request', 'link-68');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1034"></a><tt class="py-lineno">1034</tt> <tt class="py-line"> </tt>
+<a name="BatchHttpRequest._id_to_header"></a><div id="BatchHttpRequest._id_to_header-def"><a name="L1035"></a><tt class="py-lineno">1035</tt> <a class="py-toggle" href="#" id="BatchHttpRequest._id_to_header-toggle" onclick="return toggle('BatchHttpRequest._id_to_header');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.BatchHttpRequest-class.html#_id_to_header">_id_to_header</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">id_</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BatchHttpRequest._id_to_header-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest._id_to_header-expanded"><a name="L1036"></a><tt class="py-lineno">1036</tt> <tt class="py-line"> <tt class="py-docstring">"""Convert an id to a Content-ID header value.</tt> </tt>
+<a name="L1037"></a><tt class="py-lineno">1037</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1038"></a><tt class="py-lineno">1038</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L1039"></a><tt class="py-lineno">1039</tt> <tt class="py-line"><tt class="py-docstring"> id_: string, identifier of individual request.</tt> </tt>
+<a name="L1040"></a><tt class="py-lineno">1040</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1041"></a><tt class="py-lineno">1041</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L1042"></a><tt class="py-lineno">1042</tt> <tt class="py-line"><tt class="py-docstring"> A Content-ID header with the id_ encoded into it. A UUID is prepended to</tt> </tt>
+<a name="L1043"></a><tt class="py-lineno">1043</tt> <tt class="py-line"><tt class="py-docstring"> the value because Content-ID headers are supposed to be universally</tt> </tt>
+<a name="L1044"></a><tt class="py-lineno">1044</tt> <tt class="py-line"><tt class="py-docstring"> unique.</tt> </tt>
+<a name="L1045"></a><tt class="py-lineno">1045</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1046"></a><tt class="py-lineno">1046</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_base_id</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1047"></a><tt class="py-lineno">1047</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_base_id</tt> <tt class="py-op">=</tt> <tt class="py-name">uuid</tt><tt class="py-op">.</tt><tt class="py-name">uuid4</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1048"></a><tt class="py-lineno">1048</tt> <tt class="py-line"> </tt>
+<a name="L1049"></a><tt class="py-lineno">1049</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">'<%s+%s>'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_base_id</tt><tt class="py-op">,</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">quote</tt><tt class="py-op">(</tt><tt class="py-name">id_</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1050"></a><tt class="py-lineno">1050</tt> <tt class="py-line"> </tt>
+<a name="BatchHttpRequest._header_to_id"></a><div id="BatchHttpRequest._header_to_id-def"><a name="L1051"></a><tt class="py-lineno">1051</tt> <a class="py-toggle" href="#" id="BatchHttpRequest._header_to_id-toggle" onclick="return toggle('BatchHttpRequest._header_to_id');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.BatchHttpRequest-class.html#_header_to_id">_header_to_id</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">header</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BatchHttpRequest._header_to_id-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest._header_to_id-expanded"><a name="L1052"></a><tt class="py-lineno">1052</tt> <tt class="py-line"> <tt class="py-docstring">"""Convert a Content-ID header value to an id.</tt> </tt>
+<a name="L1053"></a><tt class="py-lineno">1053</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1054"></a><tt class="py-lineno">1054</tt> <tt class="py-line"><tt class="py-docstring"> Presumes the Content-ID header conforms to the format that _id_to_header()</tt> </tt>
+<a name="L1055"></a><tt class="py-lineno">1055</tt> <tt class="py-line"><tt class="py-docstring"> returns.</tt> </tt>
+<a name="L1056"></a><tt class="py-lineno">1056</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1057"></a><tt class="py-lineno">1057</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L1058"></a><tt class="py-lineno">1058</tt> <tt class="py-line"><tt class="py-docstring"> header: string, Content-ID header value.</tt> </tt>
+<a name="L1059"></a><tt class="py-lineno">1059</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1060"></a><tt class="py-lineno">1060</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L1061"></a><tt class="py-lineno">1061</tt> <tt class="py-line"><tt class="py-docstring"> The extracted id value.</tt> </tt>
+<a name="L1062"></a><tt class="py-lineno">1062</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1063"></a><tt class="py-lineno">1063</tt> <tt class="py-line"><tt class="py-docstring"> Raises:</tt> </tt>
+<a name="L1064"></a><tt class="py-lineno">1064</tt> <tt class="py-line"><tt class="py-docstring"> BatchError if the header is not in the expected format.</tt> </tt>
+<a name="L1065"></a><tt class="py-lineno">1065</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1066"></a><tt class="py-lineno">1066</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">header</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-string">'<'</tt> <tt class="py-keyword">or</tt> <tt class="py-name">header</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt class="py-string">'>'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1067"></a><tt class="py-lineno">1067</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-204" class="py-name"><a title="apiclient.errors.BatchError" class="py-name" href="#" onclick="return doclink('link-204', 'BatchError', 'link-2');">BatchError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Invalid value for Content-ID: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">header</tt><tt class="py-op">)</tt> </tt>
+<a name="L1068"></a><tt class="py-lineno">1068</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'+'</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">header</tt><tt class="py-op">:</tt> </tt>
+<a name="L1069"></a><tt class="py-lineno">1069</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-205" class="py-name"><a title="apiclient.errors.BatchError" class="py-name" href="#" onclick="return doclink('link-205', 'BatchError', 'link-2');">BatchError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Invalid value for Content-ID: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">header</tt><tt class="py-op">)</tt> </tt>
+<a name="L1070"></a><tt class="py-lineno">1070</tt> <tt class="py-line"> <tt class="py-name">base</tt><tt class="py-op">,</tt> <tt class="py-name">id_</tt> <tt class="py-op">=</tt> <tt class="py-name">header</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">rsplit</tt><tt class="py-op">(</tt><tt class="py-string">'+'</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L1071"></a><tt class="py-lineno">1071</tt> <tt class="py-line"> </tt>
+<a name="L1072"></a><tt class="py-lineno">1072</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">unquote</tt><tt class="py-op">(</tt><tt class="py-name">id_</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1073"></a><tt class="py-lineno">1073</tt> <tt class="py-line"> </tt>
+<a name="BatchHttpRequest._serialize_request"></a><div id="BatchHttpRequest._serialize_request-def"><a name="L1074"></a><tt class="py-lineno">1074</tt> <a class="py-toggle" href="#" id="BatchHttpRequest._serialize_request-toggle" onclick="return toggle('BatchHttpRequest._serialize_request');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.BatchHttpRequest-class.html#_serialize_request">_serialize_request</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">request</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BatchHttpRequest._serialize_request-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest._serialize_request-expanded"><a name="L1075"></a><tt class="py-lineno">1075</tt> <tt class="py-line"> <tt class="py-docstring">"""Convert an HttpRequest object into a string.</tt> </tt>
+<a name="L1076"></a><tt class="py-lineno">1076</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1077"></a><tt class="py-lineno">1077</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L1078"></a><tt class="py-lineno">1078</tt> <tt class="py-line"><tt class="py-docstring"> request: HttpRequest, the request to serialize.</tt> </tt>
+<a name="L1079"></a><tt class="py-lineno">1079</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1080"></a><tt class="py-lineno">1080</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L1081"></a><tt class="py-lineno">1081</tt> <tt class="py-line"><tt class="py-docstring"> The request as a string in application/http format.</tt> </tt>
+<a name="L1082"></a><tt class="py-lineno">1082</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1083"></a><tt class="py-lineno">1083</tt> <tt class="py-line"> <tt class="py-comment"># Construct status line</tt> </tt>
+<a name="L1084"></a><tt class="py-lineno">1084</tt> <tt class="py-line"> <tt class="py-name">parsed</tt> <tt class="py-op">=</tt> <tt class="py-name">urlparse</tt><tt class="py-op">.</tt><tt class="py-name">urlparse</tt><tt class="py-op">(</tt><tt id="link-206" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.http.HttpMockSequence.request
+apiclient.model.BaseModel.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-206', 'request', 'link-68');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt> </tt>
+<a name="L1085"></a><tt class="py-lineno">1085</tt> <tt class="py-line"> <tt class="py-name">request_line</tt> <tt class="py-op">=</tt> <tt class="py-name">urlparse</tt><tt class="py-op">.</tt><tt class="py-name">urlunparse</tt><tt class="py-op">(</tt> </tt>
+<a name="L1086"></a><tt class="py-lineno">1086</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">,</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt class="py-name">params</tt><tt class="py-op">,</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt class="py-name">query</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L1087"></a><tt class="py-lineno">1087</tt> <tt class="py-line"> <tt class="py-op">)</tt> </tt>
+<a name="L1088"></a><tt class="py-lineno">1088</tt> <tt class="py-line"> <tt class="py-name">status_line</tt> <tt class="py-op">=</tt> <tt id="link-207" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.http.HttpMockSequence.request
+apiclient.model.BaseModel.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-207', 'request', 'link-68');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">method</tt> <tt class="py-op">+</tt> <tt class="py-string">' '</tt> <tt class="py-op">+</tt> <tt class="py-name">request_line</tt> <tt class="py-op">+</tt> <tt class="py-string">' HTTP/1.1\n'</tt> </tt>
+<a name="L1089"></a><tt class="py-lineno">1089</tt> <tt class="py-line"> <tt class="py-name">major</tt><tt class="py-op">,</tt> <tt class="py-name">minor</tt> <tt class="py-op">=</tt> <tt id="link-208" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.http.HttpMockSequence.request
+apiclient.model.BaseModel.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-208', 'request', 'link-68');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">.</tt><tt id="link-209" class="py-name"><a title="apiclient.schema.Schemas.get
oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-193', 'get', 'link-90');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'content-type'</tt><tt class="py-op">,</tt> <tt class="py-string">'application/json'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'/'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1017"></a><tt class="py-lineno">1017</tt> <tt class="py-line"> <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">MIMENonMultipart</tt><tt class="py-op">(</tt><tt class="py-name">major</tt><tt class="py-op">,</tt> <tt class="py-name">minor</tt><tt class="py-op">)</tt> </tt>
-<a name="L1018"></a><tt class="py-lineno">1018</tt> <tt class="py-line"> <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt id="link-194" class="py-name"><a title="apiclient.http.HttpMock.request
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-209', 'get', 'link-90');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'content-type'</tt><tt class="py-op">,</tt> <tt class="py-string">'application/json'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'/'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1090"></a><tt class="py-lineno">1090</tt> <tt class="py-line"> <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">MIMENonMultipart</tt><tt class="py-op">(</tt><tt class="py-name">major</tt><tt class="py-op">,</tt> <tt class="py-name">minor</tt><tt class="py-op">)</tt> </tt>
+<a name="L1091"></a><tt class="py-lineno">1091</tt> <tt class="py-line"> <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt id="link-210" class="py-name"><a title="apiclient.http.HttpMock.request
apiclient.http.HttpMockSequence.request
apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-194', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1019"></a><tt class="py-lineno">1019</tt> <tt class="py-line"> </tt>
-<a name="L1020"></a><tt class="py-lineno">1020</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-195" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-210', 'request', 'link-68');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">headers</tt><tt class="py-op">.</tt><tt class="py-name">copy</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1092"></a><tt class="py-lineno">1092</tt> <tt class="py-line"> </tt>
+<a name="L1093"></a><tt class="py-lineno">1093</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-211" class="py-name"><a title="apiclient.http.HttpMock.request
apiclient.http.HttpMockSequence.request
apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-195', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt id="link-196" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-196', 'http', 'link-70');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt id="link-197" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-211', 'request', 'link-68');">request</a></tt><tt class="py-op">.</tt><tt id="link-212" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-212', 'http', 'link-72');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt id="link-213" class="py-name"><a title="apiclient.http.HttpMock.request
apiclient.http.HttpMockSequence.request
apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-197', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt id="link-198" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-198', 'http', 'link-70');">http</a></tt><tt class="py-op">.</tt><tt id="link-199" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-213', 'request', 'link-68');">request</a></tt><tt class="py-op">.</tt><tt id="link-214" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-214', 'http', 'link-72');">http</a></tt><tt class="py-op">.</tt><tt id="link-215" class="py-name"><a title="apiclient.http.HttpMock.request
apiclient.http.HttpMockSequence.request
apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-199', 'request', 'link-67');">request</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L1021"></a><tt class="py-lineno">1021</tt> <tt class="py-line"> <tt class="py-string">'credentials'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1022"></a><tt class="py-lineno">1022</tt> <tt class="py-line"> <tt id="link-200" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-215', 'request', 'link-68');">request</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1094"></a><tt class="py-lineno">1094</tt> <tt class="py-line"> <tt class="py-string">'credentials'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1095"></a><tt class="py-lineno">1095</tt> <tt class="py-line"> <tt id="link-216" class="py-name"><a title="apiclient.http.HttpMock.request
apiclient.http.HttpMockSequence.request
apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-200', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt id="link-201" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-201', 'http', 'link-70');">http</a></tt><tt class="py-op">.</tt><tt id="link-202" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-216', 'request', 'link-68');">request</a></tt><tt class="py-op">.</tt><tt id="link-217" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-217', 'http', 'link-72');">http</a></tt><tt class="py-op">.</tt><tt id="link-218" class="py-name"><a title="apiclient.http.HttpMock.request
apiclient.http.HttpMockSequence.request
apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-202', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt id="link-203" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
-oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-203', 'credentials', 'link-172');">credentials</a></tt><tt class="py-op">.</tt><tt id="link-204" class="py-name"><a title="oauth2client.client.Credentials.apply
-oauth2client.client.OAuth2Credentials.apply" class="py-name" href="#" onclick="return doclink('link-204', 'apply', 'link-186');">apply</a></tt><tt class="py-op">(</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
-<a name="L1023"></a><tt class="py-lineno">1023</tt> <tt class="py-line"> </tt>
-<a name="L1024"></a><tt class="py-lineno">1024</tt> <tt class="py-line"> <tt class="py-comment"># MIMENonMultipart adds its own Content-Type header.</tt> </tt>
-<a name="L1025"></a><tt class="py-lineno">1025</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'content-type'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">headers</tt><tt class="py-op">:</tt> </tt>
-<a name="L1026"></a><tt class="py-lineno">1026</tt> <tt class="py-line"> <tt class="py-keyword">del</tt> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'content-type'</tt><tt class="py-op">]</tt> </tt>
-<a name="L1027"></a><tt class="py-lineno">1027</tt> <tt class="py-line"> </tt>
-<a name="L1028"></a><tt class="py-lineno">1028</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt> <tt class="py-keyword">in</tt> <tt class="py-name">headers</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1029"></a><tt class="py-lineno">1029</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt> </tt>
-<a name="L1030"></a><tt class="py-lineno">1030</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">[</tt><tt class="py-string">'Host'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt class="py-name">netloc</tt> </tt>
-<a name="L1031"></a><tt class="py-lineno">1031</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt class="py-name">set_unixfrom</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
-<a name="L1032"></a><tt class="py-lineno">1032</tt> <tt class="py-line"> </tt>
-<a name="L1033"></a><tt class="py-lineno">1033</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-205" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-218', 'request', 'link-68');">request</a></tt><tt class="py-op">.</tt><tt id="link-219" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-219', 'credentials', 'link-188');">credentials</a></tt><tt class="py-op">.</tt><tt id="link-220" class="py-name"><a title="oauth2client.client.Credentials.apply
+oauth2client.client.OAuth2Credentials.apply" class="py-name" href="#" onclick="return doclink('link-220', 'apply', 'link-202');">apply</a></tt><tt class="py-op">(</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
+<a name="L1096"></a><tt class="py-lineno">1096</tt> <tt class="py-line"> </tt>
+<a name="L1097"></a><tt class="py-lineno">1097</tt> <tt class="py-line"> <tt class="py-comment"># MIMENonMultipart adds its own Content-Type header.</tt> </tt>
+<a name="L1098"></a><tt class="py-lineno">1098</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'content-type'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">headers</tt><tt class="py-op">:</tt> </tt>
+<a name="L1099"></a><tt class="py-lineno">1099</tt> <tt class="py-line"> <tt class="py-keyword">del</tt> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'content-type'</tt><tt class="py-op">]</tt> </tt>
+<a name="L1100"></a><tt class="py-lineno">1100</tt> <tt class="py-line"> </tt>
+<a name="L1101"></a><tt class="py-lineno">1101</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt> <tt class="py-keyword">in</tt> <tt class="py-name">headers</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1102"></a><tt class="py-lineno">1102</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt> </tt>
+<a name="L1103"></a><tt class="py-lineno">1103</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">[</tt><tt class="py-string">'Host'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt class="py-name">netloc</tt> </tt>
+<a name="L1104"></a><tt class="py-lineno">1104</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt class="py-name">set_unixfrom</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L1105"></a><tt class="py-lineno">1105</tt> <tt class="py-line"> </tt>
+<a name="L1106"></a><tt class="py-lineno">1106</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-221" class="py-name"><a title="apiclient.http.HttpMock.request
apiclient.http.HttpMockSequence.request
apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-205', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">body</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L1034"></a><tt class="py-lineno">1034</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt class="py-name">set_payload</tt><tt class="py-op">(</tt><tt id="link-206" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-221', 'request', 'link-68');">request</a></tt><tt class="py-op">.</tt><tt id="link-222" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-222', 'body', 'link-58');">body</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1107"></a><tt class="py-lineno">1107</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt class="py-name">set_payload</tt><tt class="py-op">(</tt><tt id="link-223" class="py-name"><a title="apiclient.http.HttpMock.request
apiclient.http.HttpMockSequence.request
apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-206', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">body</tt><tt class="py-op">)</tt> </tt>
-<a name="L1035"></a><tt class="py-lineno">1035</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">[</tt><tt class="py-string">'content-length'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-207" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-223', 'request', 'link-68');">request</a></tt><tt class="py-op">.</tt><tt id="link-224" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-224', 'body', 'link-58');">body</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1108"></a><tt class="py-lineno">1108</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">[</tt><tt class="py-string">'content-length'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-225" class="py-name"><a title="apiclient.http.HttpMock.request
apiclient.http.HttpMockSequence.request
apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-207', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">body</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1036"></a><tt class="py-lineno">1036</tt> <tt class="py-line"> </tt>
-<a name="L1037"></a><tt class="py-lineno">1037</tt> <tt class="py-line"> <tt class="py-comment"># Serialize the mime message.</tt> </tt>
-<a name="L1038"></a><tt class="py-lineno">1038</tt> <tt class="py-line"> <tt class="py-name">fp</tt> <tt class="py-op">=</tt> <tt class="py-name">StringIO</tt><tt class="py-op">.</tt><tt class="py-name">StringIO</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1039"></a><tt class="py-lineno">1039</tt> <tt class="py-line"> <tt class="py-comment"># maxheaderlen=0 means don't line wrap headers.</tt> </tt>
-<a name="L1040"></a><tt class="py-lineno">1040</tt> <tt class="py-line"> <tt class="py-name">g</tt> <tt class="py-op">=</tt> <tt class="py-name">Generator</tt><tt class="py-op">(</tt><tt class="py-name">fp</tt><tt class="py-op">,</tt> <tt class="py-name">maxheaderlen</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
-<a name="L1041"></a><tt class="py-lineno">1041</tt> <tt class="py-line"> <tt class="py-name">g</tt><tt class="py-op">.</tt><tt class="py-name">flatten</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">,</tt> <tt class="py-name">unixfrom</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
-<a name="L1042"></a><tt class="py-lineno">1042</tt> <tt class="py-line"> <tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">fp</tt><tt class="py-op">.</tt><tt class="py-name">getvalue</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1043"></a><tt class="py-lineno">1043</tt> <tt class="py-line"> </tt>
-<a name="L1044"></a><tt class="py-lineno">1044</tt> <tt class="py-line"> <tt class="py-comment"># Strip off the \n\n that the MIME lib tacks onto the end of the payload.</tt> </tt>
-<a name="L1045"></a><tt class="py-lineno">1045</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-208" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-225', 'request', 'link-68');">request</a></tt><tt class="py-op">.</tt><tt id="link-226" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-226', 'body', 'link-58');">body</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1109"></a><tt class="py-lineno">1109</tt> <tt class="py-line"> </tt>
+<a name="L1110"></a><tt class="py-lineno">1110</tt> <tt class="py-line"> <tt class="py-comment"># Serialize the mime message.</tt> </tt>
+<a name="L1111"></a><tt class="py-lineno">1111</tt> <tt class="py-line"> <tt class="py-name">fp</tt> <tt class="py-op">=</tt> <tt class="py-name">StringIO</tt><tt class="py-op">.</tt><tt class="py-name">StringIO</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1112"></a><tt class="py-lineno">1112</tt> <tt class="py-line"> <tt class="py-comment"># maxheaderlen=0 means don't line wrap headers.</tt> </tt>
+<a name="L1113"></a><tt class="py-lineno">1113</tt> <tt class="py-line"> <tt class="py-name">g</tt> <tt class="py-op">=</tt> <tt class="py-name">Generator</tt><tt class="py-op">(</tt><tt class="py-name">fp</tt><tt class="py-op">,</tt> <tt class="py-name">maxheaderlen</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L1114"></a><tt class="py-lineno">1114</tt> <tt class="py-line"> <tt class="py-name">g</tt><tt class="py-op">.</tt><tt class="py-name">flatten</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">,</tt> <tt class="py-name">unixfrom</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+<a name="L1115"></a><tt class="py-lineno">1115</tt> <tt class="py-line"> <tt id="link-227" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-227', 'body', 'link-58');">body</a></tt> <tt class="py-op">=</tt> <tt class="py-name">fp</tt><tt class="py-op">.</tt><tt class="py-name">getvalue</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1116"></a><tt class="py-lineno">1116</tt> <tt class="py-line"> </tt>
+<a name="L1117"></a><tt class="py-lineno">1117</tt> <tt class="py-line"> <tt class="py-comment"># Strip off the \n\n that the MIME lib tacks onto the end of the payload.</tt> </tt>
+<a name="L1118"></a><tt class="py-lineno">1118</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-228" class="py-name"><a title="apiclient.http.HttpMock.request
apiclient.http.HttpMockSequence.request
apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-208', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">body</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L1046"></a><tt class="py-lineno">1046</tt> <tt class="py-line"> <tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">body</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> </tt>
-<a name="L1047"></a><tt class="py-lineno">1047</tt> <tt class="py-line"> </tt>
-<a name="L1048"></a><tt class="py-lineno">1048</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">status_line</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'utf-8'</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">body</tt> </tt>
-</div><a name="L1049"></a><tt class="py-lineno">1049</tt> <tt class="py-line"> </tt>
-<a name="BatchHttpRequest._deserialize_response"></a><div id="BatchHttpRequest._deserialize_response-def"><a name="L1050"></a><tt class="py-lineno">1050</tt> <a class="py-toggle" href="#" id="BatchHttpRequest._deserialize_response-toggle" onclick="return toggle('BatchHttpRequest._deserialize_response');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.BatchHttpRequest-class.html#_deserialize_response">_deserialize_response</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">payload</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="BatchHttpRequest._deserialize_response-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest._deserialize_response-expanded"><a name="L1051"></a><tt class="py-lineno">1051</tt> <tt class="py-line"> <tt class="py-docstring">"""Convert string into httplib2 response and content.</tt> </tt>
-<a name="L1052"></a><tt class="py-lineno">1052</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1053"></a><tt class="py-lineno">1053</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L1054"></a><tt class="py-lineno">1054</tt> <tt class="py-line"><tt class="py-docstring"> payload: string, headers and body as a string.</tt> </tt>
-<a name="L1055"></a><tt class="py-lineno">1055</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1056"></a><tt class="py-lineno">1056</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L1057"></a><tt class="py-lineno">1057</tt> <tt class="py-line"><tt class="py-docstring"> A pair (resp, content), such as would be returned from httplib2.request.</tt> </tt>
-<a name="L1058"></a><tt class="py-lineno">1058</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L1059"></a><tt class="py-lineno">1059</tt> <tt class="py-line"> <tt class="py-comment"># Strip off the status line</tt> </tt>
-<a name="L1060"></a><tt class="py-lineno">1060</tt> <tt class="py-line"> <tt class="py-name">status_line</tt><tt class="py-op">,</tt> <tt class="py-name">payload</tt> <tt class="py-op">=</tt> <tt class="py-name">payload</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
-<a name="L1061"></a><tt class="py-lineno">1061</tt> <tt class="py-line"> <tt class="py-name">protocol</tt><tt class="py-op">,</tt> <tt class="py-name">status</tt><tt class="py-op">,</tt> <tt class="py-name">reason</tt> <tt class="py-op">=</tt> <tt class="py-name">status_line</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">' '</tt><tt class="py-op">,</tt> <tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
-<a name="L1062"></a><tt class="py-lineno">1062</tt> <tt class="py-line"> </tt>
-<a name="L1063"></a><tt class="py-lineno">1063</tt> <tt class="py-line"> <tt class="py-comment"># Parse the rest of the response</tt> </tt>
-<a name="L1064"></a><tt class="py-lineno">1064</tt> <tt class="py-line"> <tt class="py-name">parser</tt> <tt class="py-op">=</tt> <tt class="py-name">FeedParser</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1065"></a><tt class="py-lineno">1065</tt> <tt class="py-line"> <tt class="py-name">parser</tt><tt class="py-op">.</tt><tt class="py-name">feed</tt><tt class="py-op">(</tt><tt class="py-name">payload</tt><tt class="py-op">)</tt> </tt>
-<a name="L1066"></a><tt class="py-lineno">1066</tt> <tt class="py-line"> <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">parser</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1067"></a><tt class="py-lineno">1067</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">[</tt><tt class="py-string">'status'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">status</tt> </tt>
-<a name="L1068"></a><tt class="py-lineno">1068</tt> <tt class="py-line"> </tt>
-<a name="L1069"></a><tt class="py-lineno">1069</tt> <tt class="py-line"> <tt class="py-comment"># Create httplib2.Response from the parsed headers.</tt> </tt>
-<a name="L1070"></a><tt class="py-lineno">1070</tt> <tt class="py-line"> <tt class="py-name">resp</tt> <tt class="py-op">=</tt> <tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">Response</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt>
-<a name="L1071"></a><tt class="py-lineno">1071</tt> <tt class="py-line"> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">reason</tt> <tt class="py-op">=</tt> <tt class="py-name">reason</tt> </tt>
-<a name="L1072"></a><tt class="py-lineno">1072</tt> <tt class="py-line"> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">version</tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">protocol</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'/'</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'.'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1073"></a><tt class="py-lineno">1073</tt> <tt class="py-line"> </tt>
-<a name="L1074"></a><tt class="py-lineno">1074</tt> <tt class="py-line"> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">payload</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'\r\n\r\n'</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
-<a name="L1075"></a><tt class="py-lineno">1075</tt> <tt class="py-line"> </tt>
-<a name="L1076"></a><tt class="py-lineno">1076</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> </tt>
-</div><a name="L1077"></a><tt class="py-lineno">1077</tt> <tt class="py-line"> </tt>
-<a name="BatchHttpRequest._new_id"></a><div id="BatchHttpRequest._new_id-def"><a name="L1078"></a><tt class="py-lineno">1078</tt> <a class="py-toggle" href="#" id="BatchHttpRequest._new_id-toggle" onclick="return toggle('BatchHttpRequest._new_id');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.BatchHttpRequest-class.html#_new_id">_new_id</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="BatchHttpRequest._new_id-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest._new_id-expanded"><a name="L1079"></a><tt class="py-lineno">1079</tt> <tt class="py-line"> <tt class="py-docstring">"""Create a new id.</tt> </tt>
-<a name="L1080"></a><tt class="py-lineno">1080</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1081"></a><tt class="py-lineno">1081</tt> <tt class="py-line"><tt class="py-docstring"> Auto incrementing number that avoids conflicts with ids already used.</tt> </tt>
-<a name="L1082"></a><tt class="py-lineno">1082</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1083"></a><tt class="py-lineno">1083</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L1084"></a><tt class="py-lineno">1084</tt> <tt class="py-line"><tt class="py-docstring"> string, a new unique id.</tt> </tt>
-<a name="L1085"></a><tt class="py-lineno">1085</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L1086"></a><tt class="py-lineno">1086</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_last_auto_id</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
-<a name="L1087"></a><tt class="py-lineno">1087</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_last_auto_id</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requests</tt><tt class="py-op">:</tt> </tt>
-<a name="L1088"></a><tt class="py-lineno">1088</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_last_auto_id</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
-<a name="L1089"></a><tt class="py-lineno">1089</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_last_auto_id</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1090"></a><tt class="py-lineno">1090</tt> <tt class="py-line"> </tt>
-<a name="L1091"></a><tt class="py-lineno">1091</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-209" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-209', 'positional', 'link-21');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
-<a name="BatchHttpRequest.add"></a><div id="BatchHttpRequest.add-def"><a name="L1092"></a><tt class="py-lineno">1092</tt> <a class="py-toggle" href="#" id="BatchHttpRequest.add-toggle" onclick="return toggle('BatchHttpRequest.add');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.BatchHttpRequest-class.html#add">add</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">request</tt><tt class="py-op">,</tt> <tt class="py-param">callback</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">request_id</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="BatchHttpRequest.add-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest.add-expanded"><a name="L1093"></a><tt class="py-lineno">1093</tt> <tt class="py-line"> <tt class="py-docstring">"""Add a new request.</tt> </tt>
-<a name="L1094"></a><tt class="py-lineno">1094</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1095"></a><tt class="py-lineno">1095</tt> <tt class="py-line"><tt class="py-docstring"> Every callback added will be paired with a unique id, the request_id. That</tt> </tt>
-<a name="L1096"></a><tt class="py-lineno">1096</tt> <tt class="py-line"><tt class="py-docstring"> unique id will be passed back to the callback when the response comes back</tt> </tt>
-<a name="L1097"></a><tt class="py-lineno">1097</tt> <tt class="py-line"><tt class="py-docstring"> from the server. The default behavior is to have the library generate it's</tt> </tt>
-<a name="L1098"></a><tt class="py-lineno">1098</tt> <tt class="py-line"><tt class="py-docstring"> own unique id. If the caller passes in a request_id then they must ensure</tt> </tt>
-<a name="L1099"></a><tt class="py-lineno">1099</tt> <tt class="py-line"><tt class="py-docstring"> uniqueness for each request_id, and if they are not an exception is</tt> </tt>
-<a name="L1100"></a><tt class="py-lineno">1100</tt> <tt class="py-line"><tt class="py-docstring"> raised. Callers should either supply all request_ids or nevery supply a</tt> </tt>
-<a name="L1101"></a><tt class="py-lineno">1101</tt> <tt class="py-line"><tt class="py-docstring"> request id, to avoid such an error.</tt> </tt>
-<a name="L1102"></a><tt class="py-lineno">1102</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1103"></a><tt class="py-lineno">1103</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L1104"></a><tt class="py-lineno">1104</tt> <tt class="py-line"><tt class="py-docstring"> request: HttpRequest, Request to add to the batch.</tt> </tt>
-<a name="L1105"></a><tt class="py-lineno">1105</tt> <tt class="py-line"><tt class="py-docstring"> callback: callable, A callback to be called for this response, of the</tt> </tt>
-<a name="L1106"></a><tt class="py-lineno">1106</tt> <tt class="py-line"><tt class="py-docstring"> form callback(id, response, exception). The first parameter is the</tt> </tt>
-<a name="L1107"></a><tt class="py-lineno">1107</tt> <tt class="py-line"><tt class="py-docstring"> request id, and the second is the deserialized response object. The</tt> </tt>
-<a name="L1108"></a><tt class="py-lineno">1108</tt> <tt class="py-line"><tt class="py-docstring"> third is an apiclient.errors.HttpError exception object if an HTTP error</tt> </tt>
-<a name="L1109"></a><tt class="py-lineno">1109</tt> <tt class="py-line"><tt class="py-docstring"> occurred while processing the request, or None if no errors occurred.</tt> </tt>
-<a name="L1110"></a><tt class="py-lineno">1110</tt> <tt class="py-line"><tt class="py-docstring"> request_id: string, A unique id for the request. The id will be passed to</tt> </tt>
-<a name="L1111"></a><tt class="py-lineno">1111</tt> <tt class="py-line"><tt class="py-docstring"> the callback with the response.</tt> </tt>
-<a name="L1112"></a><tt class="py-lineno">1112</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1113"></a><tt class="py-lineno">1113</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L1114"></a><tt class="py-lineno">1114</tt> <tt class="py-line"><tt class="py-docstring"> None</tt> </tt>
-<a name="L1115"></a><tt class="py-lineno">1115</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1116"></a><tt class="py-lineno">1116</tt> <tt class="py-line"><tt class="py-docstring"> Raises:</tt> </tt>
-<a name="L1117"></a><tt class="py-lineno">1117</tt> <tt class="py-line"><tt class="py-docstring"> BatchError if a media request is added to a batch.</tt> </tt>
-<a name="L1118"></a><tt class="py-lineno">1118</tt> <tt class="py-line"><tt class="py-docstring"> KeyError is the request_id is not unique.</tt> </tt>
-<a name="L1119"></a><tt class="py-lineno">1119</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L1120"></a><tt class="py-lineno">1120</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">request_id</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L1121"></a><tt class="py-lineno">1121</tt> <tt class="py-line"> <tt class="py-name">request_id</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-210" class="py-name" targets="Method apiclient.http.BatchHttpRequest._new_id()=apiclient.http.BatchHttpRequest-class.html#_new_id"><a title="apiclient.http.BatchHttpRequest._new_id" class="py-name" href="#" onclick="return doclink('link-210', '_new_id', 'link-210');">_new_id</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1122"></a><tt class="py-lineno">1122</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-211" class="py-name"><a title="apiclient.http.HttpMock.request
-apiclient.http.HttpMockSequence.request
-apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-211', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt id="link-212" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
-apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-212', 'resumable', 'link-35');">resumable</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L1123"></a><tt class="py-lineno">1123</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-213" class="py-name"><a title="apiclient.errors.BatchError" class="py-name" href="#" onclick="return doclink('link-213', 'BatchError', 'link-2');">BatchError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Media requests cannot be used in a batch request."</tt><tt class="py-op">)</tt> </tt>
-<a name="L1124"></a><tt class="py-lineno">1124</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">request_id</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requests</tt><tt class="py-op">:</tt> </tt>
-<a name="L1125"></a><tt class="py-lineno">1125</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">KeyError</tt><tt class="py-op">(</tt><tt class="py-string">"A request with this ID already exists: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">request_id</tt><tt class="py-op">)</tt> </tt>
-<a name="L1126"></a><tt class="py-lineno">1126</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requests</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-214" class="py-name"><a title="apiclient.http.HttpMock.request
-apiclient.http.HttpMockSequence.request
-apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-214', 'request', 'link-67');">request</a></tt> </tt>
-<a name="L1127"></a><tt class="py-lineno">1127</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_callbacks</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">callback</tt> </tt>
-<a name="L1128"></a><tt class="py-lineno">1128</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_order</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">request_id</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1129"></a><tt class="py-lineno">1129</tt> <tt class="py-line"> </tt>
-<a name="BatchHttpRequest._execute"></a><div id="BatchHttpRequest._execute-def"><a name="L1130"></a><tt class="py-lineno">1130</tt> <a class="py-toggle" href="#" id="BatchHttpRequest._execute-toggle" onclick="return toggle('BatchHttpRequest._execute');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.BatchHttpRequest-class.html#_execute">_execute</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">,</tt> <tt class="py-param">order</tt><tt class="py-op">,</tt> <tt class="py-param">requests</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="BatchHttpRequest._execute-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest._execute-expanded"><a name="L1131"></a><tt class="py-lineno">1131</tt> <tt class="py-line"> <tt class="py-docstring">"""Serialize batch request, send to server, process response.</tt> </tt>
-<a name="L1132"></a><tt class="py-lineno">1132</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1133"></a><tt class="py-lineno">1133</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L1134"></a><tt class="py-lineno">1134</tt> <tt class="py-line"><tt class="py-docstring"> http: httplib2.Http, an http object to be used to make the request with.</tt> </tt>
-<a name="L1135"></a><tt class="py-lineno">1135</tt> <tt class="py-line"><tt class="py-docstring"> order: list, list of request ids in the order they were added to the</tt> </tt>
-<a name="L1136"></a><tt class="py-lineno">1136</tt> <tt class="py-line"><tt class="py-docstring"> batch.</tt> </tt>
-<a name="L1137"></a><tt class="py-lineno">1137</tt> <tt class="py-line"><tt class="py-docstring"> request: list, list of request objects to send.</tt> </tt>
-<a name="L1138"></a><tt class="py-lineno">1138</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1139"></a><tt class="py-lineno">1139</tt> <tt class="py-line"><tt class="py-docstring"> Raises:</tt> </tt>
-<a name="L1140"></a><tt class="py-lineno">1140</tt> <tt class="py-line"><tt class="py-docstring"> httplib2.HttpLib2Error if a transport error has occured.</tt> </tt>
-<a name="L1141"></a><tt class="py-lineno">1141</tt> <tt class="py-line"><tt class="py-docstring"> apiclient.errors.BatchError if the response is the wrong format.</tt> </tt>
-<a name="L1142"></a><tt class="py-lineno">1142</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L1143"></a><tt class="py-lineno">1143</tt> <tt class="py-line"> <tt class="py-name">message</tt> <tt class="py-op">=</tt> <tt class="py-name">MIMEMultipart</tt><tt class="py-op">(</tt><tt class="py-string">'mixed'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1144"></a><tt class="py-lineno">1144</tt> <tt class="py-line"> <tt class="py-comment"># Message should not write out it's own headers.</tt> </tt>
-<a name="L1145"></a><tt class="py-lineno">1145</tt> <tt class="py-line"> <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">message</tt><tt class="py-op">,</tt> <tt class="py-string">'_write_headers'</tt><tt class="py-op">,</tt> <tt class="py-keyword">lambda</tt> <tt class="py-name">self</tt><tt class="py-op">:</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-228', 'request', 'link-68');">request</a></tt><tt class="py-op">.</tt><tt id="link-229" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-229', 'body', 'link-58');">body</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1119"></a><tt class="py-lineno">1119</tt> <tt class="py-line"> <tt id="link-230" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-230', 'body', 'link-58');">body</a></tt> <tt class="py-op">=</tt> <tt id="link-231" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-231', 'body', 'link-58');">body</a></tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> </tt>
+<a name="L1120"></a><tt class="py-lineno">1120</tt> <tt class="py-line"> </tt>
+<a name="L1121"></a><tt class="py-lineno">1121</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">status_line</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'utf-8'</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt id="link-232" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-232', 'body', 'link-58');">body</a></tt> </tt>
+</div><a name="L1122"></a><tt class="py-lineno">1122</tt> <tt class="py-line"> </tt>
+<a name="BatchHttpRequest._deserialize_response"></a><div id="BatchHttpRequest._deserialize_response-def"><a name="L1123"></a><tt class="py-lineno">1123</tt> <a class="py-toggle" href="#" id="BatchHttpRequest._deserialize_response-toggle" onclick="return toggle('BatchHttpRequest._deserialize_response');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.BatchHttpRequest-class.html#_deserialize_response">_deserialize_response</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">payload</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BatchHttpRequest._deserialize_response-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest._deserialize_response-expanded"><a name="L1124"></a><tt class="py-lineno">1124</tt> <tt class="py-line"> <tt class="py-docstring">"""Convert string into httplib2 response and content.</tt> </tt>
+<a name="L1125"></a><tt class="py-lineno">1125</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1126"></a><tt class="py-lineno">1126</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L1127"></a><tt class="py-lineno">1127</tt> <tt class="py-line"><tt class="py-docstring"> payload: string, headers and body as a string.</tt> </tt>
+<a name="L1128"></a><tt class="py-lineno">1128</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1129"></a><tt class="py-lineno">1129</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L1130"></a><tt class="py-lineno">1130</tt> <tt class="py-line"><tt class="py-docstring"> A pair (resp, content), such as would be returned from httplib2.request.</tt> </tt>
+<a name="L1131"></a><tt class="py-lineno">1131</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1132"></a><tt class="py-lineno">1132</tt> <tt class="py-line"> <tt class="py-comment"># Strip off the status line</tt> </tt>
+<a name="L1133"></a><tt class="py-lineno">1133</tt> <tt class="py-line"> <tt class="py-name">status_line</tt><tt class="py-op">,</tt> <tt class="py-name">payload</tt> <tt class="py-op">=</tt> <tt class="py-name">payload</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L1134"></a><tt class="py-lineno">1134</tt> <tt class="py-line"> <tt class="py-name">protocol</tt><tt class="py-op">,</tt> <tt class="py-name">status</tt><tt class="py-op">,</tt> <tt class="py-name">reason</tt> <tt class="py-op">=</tt> <tt class="py-name">status_line</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">' '</tt><tt class="py-op">,</tt> <tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="L1135"></a><tt class="py-lineno">1135</tt> <tt class="py-line"> </tt>
+<a name="L1136"></a><tt class="py-lineno">1136</tt> <tt class="py-line"> <tt class="py-comment"># Parse the rest of the response</tt> </tt>
+<a name="L1137"></a><tt class="py-lineno">1137</tt> <tt class="py-line"> <tt class="py-name">parser</tt> <tt class="py-op">=</tt> <tt class="py-name">FeedParser</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1138"></a><tt class="py-lineno">1138</tt> <tt class="py-line"> <tt class="py-name">parser</tt><tt class="py-op">.</tt><tt class="py-name">feed</tt><tt class="py-op">(</tt><tt class="py-name">payload</tt><tt class="py-op">)</tt> </tt>
+<a name="L1139"></a><tt class="py-lineno">1139</tt> <tt class="py-line"> <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">parser</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1140"></a><tt class="py-lineno">1140</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">[</tt><tt class="py-string">'status'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">status</tt> </tt>
+<a name="L1141"></a><tt class="py-lineno">1141</tt> <tt class="py-line"> </tt>
+<a name="L1142"></a><tt class="py-lineno">1142</tt> <tt class="py-line"> <tt class="py-comment"># Create httplib2.Response from the parsed headers.</tt> </tt>
+<a name="L1143"></a><tt class="py-lineno">1143</tt> <tt class="py-line"> <tt class="py-name">resp</tt> <tt class="py-op">=</tt> <tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">Response</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt>
+<a name="L1144"></a><tt class="py-lineno">1144</tt> <tt class="py-line"> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">reason</tt> <tt class="py-op">=</tt> <tt class="py-name">reason</tt> </tt>
+<a name="L1145"></a><tt class="py-lineno">1145</tt> <tt class="py-line"> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">version</tt> <tt class="py-op">=</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">protocol</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'/'</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">'.'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L1146"></a><tt class="py-lineno">1146</tt> <tt class="py-line"> </tt>
-<a name="L1147"></a><tt class="py-lineno">1147</tt> <tt class="py-line"> <tt class="py-comment"># Add all the individual requests.</tt> </tt>
-<a name="L1148"></a><tt class="py-lineno">1148</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">request_id</tt> <tt class="py-keyword">in</tt> <tt class="py-name">order</tt><tt class="py-op">:</tt> </tt>
-<a name="L1149"></a><tt class="py-lineno">1149</tt> <tt class="py-line"> <tt id="link-215" class="py-name"><a title="apiclient.http.HttpMock.request
+<a name="L1147"></a><tt class="py-lineno">1147</tt> <tt class="py-line"> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">payload</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'\r\n\r\n'</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L1148"></a><tt class="py-lineno">1148</tt> <tt class="py-line"> </tt>
+<a name="L1149"></a><tt class="py-lineno">1149</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> </tt>
+</div><a name="L1150"></a><tt class="py-lineno">1150</tt> <tt class="py-line"> </tt>
+<a name="BatchHttpRequest._new_id"></a><div id="BatchHttpRequest._new_id-def"><a name="L1151"></a><tt class="py-lineno">1151</tt> <a class="py-toggle" href="#" id="BatchHttpRequest._new_id-toggle" onclick="return toggle('BatchHttpRequest._new_id');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.BatchHttpRequest-class.html#_new_id">_new_id</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BatchHttpRequest._new_id-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest._new_id-expanded"><a name="L1152"></a><tt class="py-lineno">1152</tt> <tt class="py-line"> <tt class="py-docstring">"""Create a new id.</tt> </tt>
+<a name="L1153"></a><tt class="py-lineno">1153</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1154"></a><tt class="py-lineno">1154</tt> <tt class="py-line"><tt class="py-docstring"> Auto incrementing number that avoids conflicts with ids already used.</tt> </tt>
+<a name="L1155"></a><tt class="py-lineno">1155</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1156"></a><tt class="py-lineno">1156</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L1157"></a><tt class="py-lineno">1157</tt> <tt class="py-line"><tt class="py-docstring"> string, a new unique id.</tt> </tt>
+<a name="L1158"></a><tt class="py-lineno">1158</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1159"></a><tt class="py-lineno">1159</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_last_auto_id</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L1160"></a><tt class="py-lineno">1160</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_last_auto_id</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requests</tt><tt class="py-op">:</tt> </tt>
+<a name="L1161"></a><tt class="py-lineno">1161</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_last_auto_id</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L1162"></a><tt class="py-lineno">1162</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_last_auto_id</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1163"></a><tt class="py-lineno">1163</tt> <tt class="py-line"> </tt>
+<a name="L1164"></a><tt class="py-lineno">1164</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-233" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-233', 'positional', 'link-21');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="BatchHttpRequest.add"></a><div id="BatchHttpRequest.add-def"><a name="L1165"></a><tt class="py-lineno">1165</tt> <a class="py-toggle" href="#" id="BatchHttpRequest.add-toggle" onclick="return toggle('BatchHttpRequest.add');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.BatchHttpRequest-class.html#add">add</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">request</tt><tt class="py-op">,</tt> <tt class="py-param">callback</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">request_id</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BatchHttpRequest.add-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest.add-expanded"><a name="L1166"></a><tt class="py-lineno">1166</tt> <tt class="py-line"> <tt class="py-docstring">"""Add a new request.</tt> </tt>
+<a name="L1167"></a><tt class="py-lineno">1167</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1168"></a><tt class="py-lineno">1168</tt> <tt class="py-line"><tt class="py-docstring"> Every callback added will be paired with a unique id, the request_id. That</tt> </tt>
+<a name="L1169"></a><tt class="py-lineno">1169</tt> <tt class="py-line"><tt class="py-docstring"> unique id will be passed back to the callback when the response comes back</tt> </tt>
+<a name="L1170"></a><tt class="py-lineno">1170</tt> <tt class="py-line"><tt class="py-docstring"> from the server. The default behavior is to have the library generate it's</tt> </tt>
+<a name="L1171"></a><tt class="py-lineno">1171</tt> <tt class="py-line"><tt class="py-docstring"> own unique id. If the caller passes in a request_id then they must ensure</tt> </tt>
+<a name="L1172"></a><tt class="py-lineno">1172</tt> <tt class="py-line"><tt class="py-docstring"> uniqueness for each request_id, and if they are not an exception is</tt> </tt>
+<a name="L1173"></a><tt class="py-lineno">1173</tt> <tt class="py-line"><tt class="py-docstring"> raised. Callers should either supply all request_ids or nevery supply a</tt> </tt>
+<a name="L1174"></a><tt class="py-lineno">1174</tt> <tt class="py-line"><tt class="py-docstring"> request id, to avoid such an error.</tt> </tt>
+<a name="L1175"></a><tt class="py-lineno">1175</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1176"></a><tt class="py-lineno">1176</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L1177"></a><tt class="py-lineno">1177</tt> <tt class="py-line"><tt class="py-docstring"> request: HttpRequest, Request to add to the batch.</tt> </tt>
+<a name="L1178"></a><tt class="py-lineno">1178</tt> <tt class="py-line"><tt class="py-docstring"> callback: callable, A callback to be called for this response, of the</tt> </tt>
+<a name="L1179"></a><tt class="py-lineno">1179</tt> <tt class="py-line"><tt class="py-docstring"> form callback(id, response, exception). The first parameter is the</tt> </tt>
+<a name="L1180"></a><tt class="py-lineno">1180</tt> <tt class="py-line"><tt class="py-docstring"> request id, and the second is the deserialized response object. The</tt> </tt>
+<a name="L1181"></a><tt class="py-lineno">1181</tt> <tt class="py-line"><tt class="py-docstring"> third is an apiclient.errors.HttpError exception object if an HTTP error</tt> </tt>
+<a name="L1182"></a><tt class="py-lineno">1182</tt> <tt class="py-line"><tt class="py-docstring"> occurred while processing the request, or None if no errors occurred.</tt> </tt>
+<a name="L1183"></a><tt class="py-lineno">1183</tt> <tt class="py-line"><tt class="py-docstring"> request_id: string, A unique id for the request. The id will be passed to</tt> </tt>
+<a name="L1184"></a><tt class="py-lineno">1184</tt> <tt class="py-line"><tt class="py-docstring"> the callback with the response.</tt> </tt>
+<a name="L1185"></a><tt class="py-lineno">1185</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1186"></a><tt class="py-lineno">1186</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L1187"></a><tt class="py-lineno">1187</tt> <tt class="py-line"><tt class="py-docstring"> None</tt> </tt>
+<a name="L1188"></a><tt class="py-lineno">1188</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1189"></a><tt class="py-lineno">1189</tt> <tt class="py-line"><tt class="py-docstring"> Raises:</tt> </tt>
+<a name="L1190"></a><tt class="py-lineno">1190</tt> <tt class="py-line"><tt class="py-docstring"> BatchError if a media request is added to a batch.</tt> </tt>
+<a name="L1191"></a><tt class="py-lineno">1191</tt> <tt class="py-line"><tt class="py-docstring"> KeyError is the request_id is not unique.</tt> </tt>
+<a name="L1192"></a><tt class="py-lineno">1192</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1193"></a><tt class="py-lineno">1193</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">request_id</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1194"></a><tt class="py-lineno">1194</tt> <tt class="py-line"> <tt class="py-name">request_id</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-234" class="py-name" targets="Method apiclient.http.BatchHttpRequest._new_id()=apiclient.http.BatchHttpRequest-class.html#_new_id"><a title="apiclient.http.BatchHttpRequest._new_id" class="py-name" href="#" onclick="return doclink('link-234', '_new_id', 'link-234');">_new_id</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1195"></a><tt class="py-lineno">1195</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-235" class="py-name"><a title="apiclient.http.HttpMock.request
apiclient.http.HttpMockSequence.request
apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-215', 'request', 'link-67');">request</a></tt> <tt class="py-op">=</tt> <tt class="py-name">requests</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> </tt>
-<a name="L1150"></a><tt class="py-lineno">1150</tt> <tt class="py-line"> </tt>
-<a name="L1151"></a><tt class="py-lineno">1151</tt> <tt class="py-line"> <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">MIMENonMultipart</tt><tt class="py-op">(</tt><tt class="py-string">'application'</tt><tt class="py-op">,</tt> <tt class="py-string">'http'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1152"></a><tt class="py-lineno">1152</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">[</tt><tt class="py-string">'Content-Transfer-Encoding'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'binary'</tt> </tt>
-<a name="L1153"></a><tt class="py-lineno">1153</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">[</tt><tt class="py-string">'Content-ID'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-216" class="py-name" targets="Method apiclient.http.BatchHttpRequest._id_to_header()=apiclient.http.BatchHttpRequest-class.html#_id_to_header"><a title="apiclient.http.BatchHttpRequest._id_to_header" class="py-name" href="#" onclick="return doclink('link-216', '_id_to_header', 'link-216');">_id_to_header</a></tt><tt class="py-op">(</tt><tt class="py-name">request_id</tt><tt class="py-op">)</tt> </tt>
-<a name="L1154"></a><tt class="py-lineno">1154</tt> <tt class="py-line"> </tt>
-<a name="L1155"></a><tt class="py-lineno">1155</tt> <tt class="py-line"> <tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-217" class="py-name" targets="Method apiclient.http.BatchHttpRequest._serialize_request()=apiclient.http.BatchHttpRequest-class.html#_serialize_request"><a title="apiclient.http.BatchHttpRequest._serialize_request" class="py-name" href="#" onclick="return doclink('link-217', '_serialize_request', 'link-217');">_serialize_request</a></tt><tt class="py-op">(</tt><tt id="link-218" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-235', 'request', 'link-68');">request</a></tt><tt class="py-op">.</tt><tt id="link-236" class="py-name"><a title="apiclient.http.MediaIoBaseUpload.resumable
+apiclient.http.MediaUpload.resumable" class="py-name" href="#" onclick="return doclink('link-236', 'resumable', 'link-35');">resumable</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1196"></a><tt class="py-lineno">1196</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-237" class="py-name"><a title="apiclient.errors.BatchError" class="py-name" href="#" onclick="return doclink('link-237', 'BatchError', 'link-2');">BatchError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Media requests cannot be used in a batch request."</tt><tt class="py-op">)</tt> </tt>
+<a name="L1197"></a><tt class="py-lineno">1197</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">request_id</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requests</tt><tt class="py-op">:</tt> </tt>
+<a name="L1198"></a><tt class="py-lineno">1198</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">KeyError</tt><tt class="py-op">(</tt><tt class="py-string">"A request with this ID already exists: %s"</tt> <tt class="py-op">%</tt> <tt class="py-name">request_id</tt><tt class="py-op">)</tt> </tt>
+<a name="L1199"></a><tt class="py-lineno">1199</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requests</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-238" class="py-name"><a title="apiclient.http.HttpMock.request
apiclient.http.HttpMockSequence.request
apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-218', 'request', 'link-67');">request</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1156"></a><tt class="py-lineno">1156</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt class="py-name">set_payload</tt><tt class="py-op">(</tt><tt class="py-name">body</tt><tt class="py-op">)</tt> </tt>
-<a name="L1157"></a><tt class="py-lineno">1157</tt> <tt class="py-line"> <tt class="py-name">message</tt><tt class="py-op">.</tt><tt class="py-name">attach</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt>
-<a name="L1158"></a><tt class="py-lineno">1158</tt> <tt class="py-line"> </tt>
-<a name="L1159"></a><tt class="py-lineno">1159</tt> <tt class="py-line"> <tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">message</tt><tt class="py-op">.</tt><tt class="py-name">as_string</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1160"></a><tt class="py-lineno">1160</tt> <tt class="py-line"> </tt>
-<a name="L1161"></a><tt class="py-lineno">1161</tt> <tt class="py-line"> <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-<a name="L1162"></a><tt class="py-lineno">1162</tt> <tt class="py-line"> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'content-type'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">'multipart/mixed; '</tt> </tt>
-<a name="L1163"></a><tt class="py-lineno">1163</tt> <tt class="py-line"> <tt class="py-string">'boundary="%s"'</tt><tt class="py-op">)</tt> <tt class="py-op">%</tt> <tt class="py-name">message</tt><tt class="py-op">.</tt><tt class="py-name">get_boundary</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1164"></a><tt class="py-lineno">1164</tt> <tt class="py-line"> </tt>
-<a name="L1165"></a><tt class="py-lineno">1165</tt> <tt class="py-line"> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt id="link-219" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-219', 'http', 'link-70');">http</a></tt><tt class="py-op">.</tt><tt id="link-220" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-238', 'request', 'link-68');">request</a></tt> </tt>
+<a name="L1200"></a><tt class="py-lineno">1200</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_callbacks</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">callback</tt> </tt>
+<a name="L1201"></a><tt class="py-lineno">1201</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_order</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">request_id</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1202"></a><tt class="py-lineno">1202</tt> <tt class="py-line"> </tt>
+<a name="BatchHttpRequest._execute"></a><div id="BatchHttpRequest._execute-def"><a name="L1203"></a><tt class="py-lineno">1203</tt> <a class="py-toggle" href="#" id="BatchHttpRequest._execute-toggle" onclick="return toggle('BatchHttpRequest._execute');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.BatchHttpRequest-class.html#_execute">_execute</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">,</tt> <tt class="py-param">order</tt><tt class="py-op">,</tt> <tt class="py-param">requests</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BatchHttpRequest._execute-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest._execute-expanded"><a name="L1204"></a><tt class="py-lineno">1204</tt> <tt class="py-line"> <tt class="py-docstring">"""Serialize batch request, send to server, process response.</tt> </tt>
+<a name="L1205"></a><tt class="py-lineno">1205</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1206"></a><tt class="py-lineno">1206</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L1207"></a><tt class="py-lineno">1207</tt> <tt class="py-line"><tt class="py-docstring"> http: httplib2.Http, an http object to be used to make the request with.</tt> </tt>
+<a name="L1208"></a><tt class="py-lineno">1208</tt> <tt class="py-line"><tt class="py-docstring"> order: list, list of request ids in the order they were added to the</tt> </tt>
+<a name="L1209"></a><tt class="py-lineno">1209</tt> <tt class="py-line"><tt class="py-docstring"> batch.</tt> </tt>
+<a name="L1210"></a><tt class="py-lineno">1210</tt> <tt class="py-line"><tt class="py-docstring"> request: list, list of request objects to send.</tt> </tt>
+<a name="L1211"></a><tt class="py-lineno">1211</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1212"></a><tt class="py-lineno">1212</tt> <tt class="py-line"><tt class="py-docstring"> Raises:</tt> </tt>
+<a name="L1213"></a><tt class="py-lineno">1213</tt> <tt class="py-line"><tt class="py-docstring"> httplib2.HttpLib2Error if a transport error has occured.</tt> </tt>
+<a name="L1214"></a><tt class="py-lineno">1214</tt> <tt class="py-line"><tt class="py-docstring"> apiclient.errors.BatchError if the response is the wrong format.</tt> </tt>
+<a name="L1215"></a><tt class="py-lineno">1215</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1216"></a><tt class="py-lineno">1216</tt> <tt class="py-line"> <tt class="py-name">message</tt> <tt class="py-op">=</tt> <tt class="py-name">MIMEMultipart</tt><tt class="py-op">(</tt><tt class="py-string">'mixed'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1217"></a><tt class="py-lineno">1217</tt> <tt class="py-line"> <tt class="py-comment"># Message should not write out it's own headers.</tt> </tt>
+<a name="L1218"></a><tt class="py-lineno">1218</tt> <tt class="py-line"> <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">message</tt><tt class="py-op">,</tt> <tt class="py-string">'_write_headers'</tt><tt class="py-op">,</tt> <tt class="py-keyword">lambda</tt> <tt class="py-name">self</tt><tt class="py-op">:</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L1219"></a><tt class="py-lineno">1219</tt> <tt class="py-line"> </tt>
+<a name="L1220"></a><tt class="py-lineno">1220</tt> <tt class="py-line"> <tt class="py-comment"># Add all the individual requests.</tt> </tt>
+<a name="L1221"></a><tt class="py-lineno">1221</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">request_id</tt> <tt class="py-keyword">in</tt> <tt class="py-name">order</tt><tt class="py-op">:</tt> </tt>
+<a name="L1222"></a><tt class="py-lineno">1222</tt> <tt class="py-line"> <tt id="link-239" class="py-name"><a title="apiclient.http.HttpMock.request
apiclient.http.HttpMockSequence.request
apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-220', 'request', 'link-67');">request</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_batch_uri</tt><tt class="py-op">,</tt> <tt class="py-string">'POST'</tt><tt class="py-op">,</tt> <tt class="py-name">body</tt><tt class="py-op">=</tt><tt class="py-name">body</tt><tt class="py-op">,</tt> </tt>
-<a name="L1166"></a><tt class="py-lineno">1166</tt> <tt class="py-line"> <tt class="py-name">headers</tt><tt class="py-op">=</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
-<a name="L1167"></a><tt class="py-lineno">1167</tt> <tt class="py-line"> </tt>
-<a name="L1168"></a><tt class="py-lineno">1168</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-op">>=</tt> <tt class="py-number">300</tt><tt class="py-op">:</tt> </tt>
-<a name="L1169"></a><tt class="py-lineno">1169</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-221" class="py-name"><a title="apiclient.errors.HttpError" class="py-name" href="#" onclick="return doclink('link-221', 'HttpError', 'link-4');">HttpError</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">,</tt> <tt class="py-name">uri</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_batch_uri</tt><tt class="py-op">)</tt> </tt>
-<a name="L1170"></a><tt class="py-lineno">1170</tt> <tt class="py-line"> </tt>
-<a name="L1171"></a><tt class="py-lineno">1171</tt> <tt class="py-line"> <tt class="py-comment"># Now break out the individual responses and store each one.</tt> </tt>
-<a name="L1172"></a><tt class="py-lineno">1172</tt> <tt class="py-line"> <tt class="py-name">boundary</tt><tt class="py-op">,</tt> <tt class="py-name">_</tt> <tt class="py-op">=</tt> <tt class="py-name">content</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
-<a name="L1173"></a><tt class="py-lineno">1173</tt> <tt class="py-line"> </tt>
-<a name="L1174"></a><tt class="py-lineno">1174</tt> <tt class="py-line"> <tt class="py-comment"># Prepend with a content-type header so FeedParser can handle it.</tt> </tt>
-<a name="L1175"></a><tt class="py-lineno">1175</tt> <tt class="py-line"> <tt class="py-name">header</tt> <tt class="py-op">=</tt> <tt class="py-string">'content-type: %s\r\n\r\n'</tt> <tt class="py-op">%</tt> <tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'content-type'</tt><tt class="py-op">]</tt> </tt>
-<a name="L1176"></a><tt class="py-lineno">1176</tt> <tt class="py-line"> <tt class="py-name">for_parser</tt> <tt class="py-op">=</tt> <tt class="py-name">header</tt> <tt class="py-op">+</tt> <tt class="py-name">content</tt> </tt>
-<a name="L1177"></a><tt class="py-lineno">1177</tt> <tt class="py-line"> </tt>
-<a name="L1178"></a><tt class="py-lineno">1178</tt> <tt class="py-line"> <tt class="py-name">parser</tt> <tt class="py-op">=</tt> <tt class="py-name">FeedParser</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1179"></a><tt class="py-lineno">1179</tt> <tt class="py-line"> <tt class="py-name">parser</tt><tt class="py-op">.</tt><tt class="py-name">feed</tt><tt class="py-op">(</tt><tt class="py-name">for_parser</tt><tt class="py-op">)</tt> </tt>
-<a name="L1180"></a><tt class="py-lineno">1180</tt> <tt class="py-line"> <tt class="py-name">mime_response</tt> <tt class="py-op">=</tt> <tt class="py-name">parser</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1181"></a><tt class="py-lineno">1181</tt> <tt class="py-line"> </tt>
-<a name="L1182"></a><tt class="py-lineno">1182</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">mime_response</tt><tt class="py-op">.</tt><tt class="py-name">is_multipart</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1183"></a><tt class="py-lineno">1183</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-222" class="py-name"><a title="apiclient.errors.BatchError" class="py-name" href="#" onclick="return doclink('link-222', 'BatchError', 'link-2');">BatchError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Response not in multipart/mixed format."</tt><tt class="py-op">,</tt> <tt class="py-name">resp</tt><tt class="py-op">=</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> </tt>
-<a name="L1184"></a><tt class="py-lineno">1184</tt> <tt class="py-line"> <tt class="py-name">content</tt><tt class="py-op">=</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
-<a name="L1185"></a><tt class="py-lineno">1185</tt> <tt class="py-line"> </tt>
-<a name="L1186"></a><tt class="py-lineno">1186</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">part</tt> <tt class="py-keyword">in</tt> <tt class="py-name">mime_response</tt><tt class="py-op">.</tt><tt class="py-name">get_payload</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1187"></a><tt class="py-lineno">1187</tt> <tt class="py-line"> <tt class="py-name">request_id</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-223" class="py-name" targets="Method apiclient.http.BatchHttpRequest._header_to_id()=apiclient.http.BatchHttpRequest-class.html#_header_to_id"><a title="apiclient.http.BatchHttpRequest._header_to_id" class="py-name" href="#" onclick="return doclink('link-223', '_header_to_id', 'link-223');">_header_to_id</a></tt><tt class="py-op">(</tt><tt class="py-name">part</tt><tt class="py-op">[</tt><tt class="py-string">'Content-ID'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1188"></a><tt class="py-lineno">1188</tt> <tt class="py-line"> <tt id="link-224" class="py-name" targets="Method apiclient.model.BaseModel.response()=apiclient.model.BaseModel-class.html#response,Method apiclient.model.Model.response()=apiclient.model.Model-class.html#response"><a title="apiclient.model.BaseModel.response
-apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-224', 'response', 'link-224');">response</a></tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-225" class="py-name" targets="Method apiclient.http.BatchHttpRequest._deserialize_response()=apiclient.http.BatchHttpRequest-class.html#_deserialize_response"><a title="apiclient.http.BatchHttpRequest._deserialize_response" class="py-name" href="#" onclick="return doclink('link-225', '_deserialize_response', 'link-225');">_deserialize_response</a></tt><tt class="py-op">(</tt><tt class="py-name">part</tt><tt class="py-op">.</tt><tt class="py-name">get_payload</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1189"></a><tt class="py-lineno">1189</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_responses</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt id="link-226" class="py-name"><a title="apiclient.model.BaseModel.response
-apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-226', 'response', 'link-224');">response</a></tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1190"></a><tt class="py-lineno">1190</tt> <tt class="py-line"> </tt>
-<a name="L1191"></a><tt class="py-lineno">1191</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-227" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-227', 'positional', 'link-21');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
-<a name="BatchHttpRequest.execute"></a><div id="BatchHttpRequest.execute-def"><a name="L1192"></a><tt class="py-lineno">1192</tt> <a class="py-toggle" href="#" id="BatchHttpRequest.execute-toggle" onclick="return toggle('BatchHttpRequest.execute');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.BatchHttpRequest-class.html#execute">execute</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="BatchHttpRequest.execute-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest.execute-expanded"><a name="L1193"></a><tt class="py-lineno">1193</tt> <tt class="py-line"> <tt class="py-docstring">"""Execute all the requests as a single batched HTTP request.</tt> </tt>
-<a name="L1194"></a><tt class="py-lineno">1194</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1195"></a><tt class="py-lineno">1195</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L1196"></a><tt class="py-lineno">1196</tt> <tt class="py-line"><tt class="py-docstring"> http: httplib2.Http, an http object to be used in place of the one the</tt> </tt>
-<a name="L1197"></a><tt class="py-lineno">1197</tt> <tt class="py-line"><tt class="py-docstring"> HttpRequest request object was constructed with. If one isn't supplied</tt> </tt>
-<a name="L1198"></a><tt class="py-lineno">1198</tt> <tt class="py-line"><tt class="py-docstring"> then use a http object from the requests in this batch.</tt> </tt>
-<a name="L1199"></a><tt class="py-lineno">1199</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1200"></a><tt class="py-lineno">1200</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L1201"></a><tt class="py-lineno">1201</tt> <tt class="py-line"><tt class="py-docstring"> None</tt> </tt>
-<a name="L1202"></a><tt class="py-lineno">1202</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1203"></a><tt class="py-lineno">1203</tt> <tt class="py-line"><tt class="py-docstring"> Raises:</tt> </tt>
-<a name="L1204"></a><tt class="py-lineno">1204</tt> <tt class="py-line"><tt class="py-docstring"> httplib2.HttpLib2Error if a transport error has occured.</tt> </tt>
-<a name="L1205"></a><tt class="py-lineno">1205</tt> <tt class="py-line"><tt class="py-docstring"> apiclient.errors.BatchError if the response is the wrong format.</tt> </tt>
-<a name="L1206"></a><tt class="py-lineno">1206</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L1207"></a><tt class="py-lineno">1207</tt> <tt class="py-line"> </tt>
-<a name="L1208"></a><tt class="py-lineno">1208</tt> <tt class="py-line"> <tt class="py-comment"># If http is not supplied use the first valid one given in the requests.</tt> </tt>
-<a name="L1209"></a><tt class="py-lineno">1209</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-228" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-228', 'http', 'link-70');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L1210"></a><tt class="py-lineno">1210</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">request_id</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_order</tt><tt class="py-op">:</tt> </tt>
-<a name="L1211"></a><tt class="py-lineno">1211</tt> <tt class="py-line"> <tt id="link-229" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-239', 'request', 'link-68');">request</a></tt> <tt class="py-op">=</tt> <tt class="py-name">requests</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> </tt>
+<a name="L1223"></a><tt class="py-lineno">1223</tt> <tt class="py-line"> </tt>
+<a name="L1224"></a><tt class="py-lineno">1224</tt> <tt class="py-line"> <tt class="py-name">msg</tt> <tt class="py-op">=</tt> <tt class="py-name">MIMENonMultipart</tt><tt class="py-op">(</tt><tt class="py-string">'application'</tt><tt class="py-op">,</tt> <tt class="py-string">'http'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1225"></a><tt class="py-lineno">1225</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">[</tt><tt class="py-string">'Content-Transfer-Encoding'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'binary'</tt> </tt>
+<a name="L1226"></a><tt class="py-lineno">1226</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">[</tt><tt class="py-string">'Content-ID'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-240" class="py-name" targets="Method apiclient.http.BatchHttpRequest._id_to_header()=apiclient.http.BatchHttpRequest-class.html#_id_to_header"><a title="apiclient.http.BatchHttpRequest._id_to_header" class="py-name" href="#" onclick="return doclink('link-240', '_id_to_header', 'link-240');">_id_to_header</a></tt><tt class="py-op">(</tt><tt class="py-name">request_id</tt><tt class="py-op">)</tt> </tt>
+<a name="L1227"></a><tt class="py-lineno">1227</tt> <tt class="py-line"> </tt>
+<a name="L1228"></a><tt class="py-lineno">1228</tt> <tt class="py-line"> <tt id="link-241" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-241', 'body', 'link-58');">body</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-242" class="py-name" targets="Method apiclient.http.BatchHttpRequest._serialize_request()=apiclient.http.BatchHttpRequest-class.html#_serialize_request"><a title="apiclient.http.BatchHttpRequest._serialize_request" class="py-name" href="#" onclick="return doclink('link-242', '_serialize_request', 'link-242');">_serialize_request</a></tt><tt class="py-op">(</tt><tt id="link-243" class="py-name"><a title="apiclient.http.HttpMock.request
apiclient.http.HttpMockSequence.request
apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-229', 'request', 'link-67');">request</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requests</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> </tt>
-<a name="L1212"></a><tt class="py-lineno">1212</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-230" class="py-name"><a title="apiclient.http.HttpMock.request
-apiclient.http.HttpMockSequence.request
-apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-230', 'request', 'link-67');">request</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L1213"></a><tt class="py-lineno">1213</tt> <tt class="py-line"> <tt id="link-231" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-231', 'http', 'link-70');">http</a></tt> <tt class="py-op">=</tt> <tt id="link-232" class="py-name"><a title="apiclient.http.HttpMock.request
-apiclient.http.HttpMockSequence.request
-apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-232', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt id="link-233" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-233', 'http', 'link-70');">http</a></tt> </tt>
-<a name="L1214"></a><tt class="py-lineno">1214</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt>
-<a name="L1215"></a><tt class="py-lineno">1215</tt> <tt class="py-line"> </tt>
-<a name="L1216"></a><tt class="py-lineno">1216</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-234" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-234', 'http', 'link-70');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L1217"></a><tt class="py-lineno">1217</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Missing a valid http object."</tt><tt class="py-op">)</tt> </tt>
-<a name="L1218"></a><tt class="py-lineno">1218</tt> <tt class="py-line"> </tt>
-<a name="L1219"></a><tt class="py-lineno">1219</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-235" class="py-name" targets="Method apiclient.http.BatchHttpRequest._execute()=apiclient.http.BatchHttpRequest-class.html#_execute"><a title="apiclient.http.BatchHttpRequest._execute" class="py-name" href="#" onclick="return doclink('link-235', '_execute', 'link-235');">_execute</a></tt><tt class="py-op">(</tt><tt id="link-236" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-236', 'http', 'link-70');">http</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_order</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requests</tt><tt class="py-op">)</tt> </tt>
-<a name="L1220"></a><tt class="py-lineno">1220</tt> <tt class="py-line"> </tt>
-<a name="L1221"></a><tt class="py-lineno">1221</tt> <tt class="py-line"> <tt class="py-comment"># Loop over all the requests and check for 401s. For each 401 request the</tt> </tt>
-<a name="L1222"></a><tt class="py-lineno">1222</tt> <tt class="py-line"> <tt class="py-comment"># credentials should be refreshed and then sent again in a separate batch.</tt> </tt>
-<a name="L1223"></a><tt class="py-lineno">1223</tt> <tt class="py-line"> <tt class="py-name">redo_requests</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-<a name="L1224"></a><tt class="py-lineno">1224</tt> <tt class="py-line"> <tt class="py-name">redo_order</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L1225"></a><tt class="py-lineno">1225</tt> <tt class="py-line"> </tt>
-<a name="L1226"></a><tt class="py-lineno">1226</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">request_id</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_order</tt><tt class="py-op">:</tt> </tt>
-<a name="L1227"></a><tt class="py-lineno">1227</tt> <tt class="py-line"> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_responses</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> </tt>
-<a name="L1228"></a><tt class="py-lineno">1228</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'status'</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'401'</tt><tt class="py-op">:</tt> </tt>
-<a name="L1229"></a><tt class="py-lineno">1229</tt> <tt class="py-line"> <tt class="py-name">redo_order</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">request_id</tt><tt class="py-op">)</tt> </tt>
-<a name="L1230"></a><tt class="py-lineno">1230</tt> <tt class="py-line"> <tt id="link-237" class="py-name"><a title="apiclient.http.HttpMock.request
-apiclient.http.HttpMockSequence.request
-apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-237', 'request', 'link-67');">request</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requests</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> </tt>
-<a name="L1231"></a><tt class="py-lineno">1231</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-238" class="py-name" targets="Method apiclient.http.BatchHttpRequest._refresh_and_apply_credentials()=apiclient.http.BatchHttpRequest-class.html#_refresh_and_apply_credentials"><a title="apiclient.http.BatchHttpRequest._refresh_and_apply_credentials" class="py-name" href="#" onclick="return doclink('link-238', '_refresh_and_apply_credentials', 'link-238');">_refresh_and_apply_credentials</a></tt><tt class="py-op">(</tt><tt id="link-239" class="py-name"><a title="apiclient.http.HttpMock.request
-apiclient.http.HttpMockSequence.request
-apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-239', 'request', 'link-67');">request</a></tt><tt class="py-op">,</tt> <tt id="link-240" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-240', 'http', 'link-70');">http</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1232"></a><tt class="py-lineno">1232</tt> <tt class="py-line"> <tt class="py-name">redo_requests</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-241" class="py-name"><a title="apiclient.http.HttpMock.request
-apiclient.http.HttpMockSequence.request
-apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-241', 'request', 'link-67');">request</a></tt> </tt>
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-243', 'request', 'link-68');">request</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1229"></a><tt class="py-lineno">1229</tt> <tt class="py-line"> <tt class="py-name">msg</tt><tt class="py-op">.</tt><tt class="py-name">set_payload</tt><tt class="py-op">(</tt><tt id="link-244" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-244', 'body', 'link-58');">body</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1230"></a><tt class="py-lineno">1230</tt> <tt class="py-line"> <tt class="py-name">message</tt><tt class="py-op">.</tt><tt class="py-name">attach</tt><tt class="py-op">(</tt><tt class="py-name">msg</tt><tt class="py-op">)</tt> </tt>
+<a name="L1231"></a><tt class="py-lineno">1231</tt> <tt class="py-line"> </tt>
+<a name="L1232"></a><tt class="py-lineno">1232</tt> <tt class="py-line"> <tt id="link-245" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-245', 'body', 'link-58');">body</a></tt> <tt class="py-op">=</tt> <tt class="py-name">message</tt><tt class="py-op">.</tt><tt class="py-name">as_string</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L1233"></a><tt class="py-lineno">1233</tt> <tt class="py-line"> </tt>
-<a name="L1234"></a><tt class="py-lineno">1234</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">redo_requests</tt><tt class="py-op">:</tt> </tt>
-<a name="L1235"></a><tt class="py-lineno">1235</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-242" class="py-name"><a title="apiclient.http.BatchHttpRequest._execute" class="py-name" href="#" onclick="return doclink('link-242', '_execute', 'link-235');">_execute</a></tt><tt class="py-op">(</tt><tt id="link-243" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-243', 'http', 'link-70');">http</a></tt><tt class="py-op">,</tt> <tt class="py-name">redo_order</tt><tt class="py-op">,</tt> <tt class="py-name">redo_requests</tt><tt class="py-op">)</tt> </tt>
-<a name="L1236"></a><tt class="py-lineno">1236</tt> <tt class="py-line"> </tt>
-<a name="L1237"></a><tt class="py-lineno">1237</tt> <tt class="py-line"> <tt class="py-comment"># Now process all callbacks that are erroring, and raise an exception for</tt> </tt>
-<a name="L1238"></a><tt class="py-lineno">1238</tt> <tt class="py-line"> <tt class="py-comment"># ones that return a non-2xx response? Or add extra parameter to callback</tt> </tt>
-<a name="L1239"></a><tt class="py-lineno">1239</tt> <tt class="py-line"> <tt class="py-comment"># that contains an HttpError?</tt> </tt>
+<a name="L1234"></a><tt class="py-lineno">1234</tt> <tt class="py-line"> <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L1235"></a><tt class="py-lineno">1235</tt> <tt class="py-line"> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'content-type'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-string">'multipart/mixed; '</tt> </tt>
+<a name="L1236"></a><tt class="py-lineno">1236</tt> <tt class="py-line"> <tt class="py-string">'boundary="%s"'</tt><tt class="py-op">)</tt> <tt class="py-op">%</tt> <tt class="py-name">message</tt><tt class="py-op">.</tt><tt class="py-name">get_boundary</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1237"></a><tt class="py-lineno">1237</tt> <tt class="py-line"> </tt>
+<a name="L1238"></a><tt class="py-lineno">1238</tt> <tt class="py-line"> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt id="link-246" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-246', 'http', 'link-72');">http</a></tt><tt class="py-op">.</tt><tt id="link-247" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.http.HttpMockSequence.request
+apiclient.model.BaseModel.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-247', 'request', 'link-68');">request</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_batch_uri</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt><tt class="py-op">=</tt><tt class="py-string">'POST'</tt><tt class="py-op">,</tt> <tt id="link-248" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-248', 'body', 'link-58');">body</a></tt><tt class="py-op">=</tt><tt id="link-249" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-249', 'body', 'link-58');">body</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1239"></a><tt class="py-lineno">1239</tt> <tt class="py-line"> <tt class="py-name">headers</tt><tt class="py-op">=</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
<a name="L1240"></a><tt class="py-lineno">1240</tt> <tt class="py-line"> </tt>
-<a name="L1241"></a><tt class="py-lineno">1241</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">request_id</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_order</tt><tt class="py-op">:</tt> </tt>
-<a name="L1242"></a><tt class="py-lineno">1242</tt> <tt class="py-line"> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_responses</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> </tt>
+<a name="L1241"></a><tt class="py-lineno">1241</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-op">>=</tt> <tt class="py-number">300</tt><tt class="py-op">:</tt> </tt>
+<a name="L1242"></a><tt class="py-lineno">1242</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-250" class="py-name"><a title="apiclient.errors.HttpError" class="py-name" href="#" onclick="return doclink('link-250', 'HttpError', 'link-4');">HttpError</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">,</tt> <tt class="py-name">uri</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_batch_uri</tt><tt class="py-op">)</tt> </tt>
<a name="L1243"></a><tt class="py-lineno">1243</tt> <tt class="py-line"> </tt>
-<a name="L1244"></a><tt class="py-lineno">1244</tt> <tt class="py-line"> <tt id="link-244" class="py-name"><a title="apiclient.http.HttpMock.request
-apiclient.http.HttpMockSequence.request
-apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-244', 'request', 'link-67');">request</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requests</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> </tt>
-<a name="L1245"></a><tt class="py-lineno">1245</tt> <tt class="py-line"> <tt class="py-name">callback</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_callbacks</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> </tt>
+<a name="L1244"></a><tt class="py-lineno">1244</tt> <tt class="py-line"> <tt class="py-comment"># Now break out the individual responses and store each one.</tt> </tt>
+<a name="L1245"></a><tt class="py-lineno">1245</tt> <tt class="py-line"> <tt class="py-name">boundary</tt><tt class="py-op">,</tt> <tt class="py-name">_</tt> <tt class="py-op">=</tt> <tt class="py-name">content</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
<a name="L1246"></a><tt class="py-lineno">1246</tt> <tt class="py-line"> </tt>
-<a name="L1247"></a><tt class="py-lineno">1247</tt> <tt class="py-line"> <tt id="link-245" class="py-name"><a title="apiclient.model.BaseModel.response
-apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-245', 'response', 'link-224');">response</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L1248"></a><tt class="py-lineno">1248</tt> <tt class="py-line"> <tt class="py-name">exception</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L1249"></a><tt class="py-lineno">1249</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L1250"></a><tt class="py-lineno">1250</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-op">>=</tt> <tt class="py-number">300</tt><tt class="py-op">:</tt> </tt>
-<a name="L1251"></a><tt class="py-lineno">1251</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-246" class="py-name"><a title="apiclient.errors.HttpError" class="py-name" href="#" onclick="return doclink('link-246', 'HttpError', 'link-4');">HttpError</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">,</tt> <tt class="py-name">uri</tt><tt class="py-op">=</tt><tt id="link-247" class="py-name"><a title="apiclient.http.HttpMock.request
+<a name="L1247"></a><tt class="py-lineno">1247</tt> <tt class="py-line"> <tt class="py-comment"># Prepend with a content-type header so FeedParser can handle it.</tt> </tt>
+<a name="L1248"></a><tt class="py-lineno">1248</tt> <tt class="py-line"> <tt class="py-name">header</tt> <tt class="py-op">=</tt> <tt class="py-string">'content-type: %s\r\n\r\n'</tt> <tt class="py-op">%</tt> <tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'content-type'</tt><tt class="py-op">]</tt> </tt>
+<a name="L1249"></a><tt class="py-lineno">1249</tt> <tt class="py-line"> <tt class="py-name">for_parser</tt> <tt class="py-op">=</tt> <tt class="py-name">header</tt> <tt class="py-op">+</tt> <tt class="py-name">content</tt> </tt>
+<a name="L1250"></a><tt class="py-lineno">1250</tt> <tt class="py-line"> </tt>
+<a name="L1251"></a><tt class="py-lineno">1251</tt> <tt class="py-line"> <tt class="py-name">parser</tt> <tt class="py-op">=</tt> <tt class="py-name">FeedParser</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1252"></a><tt class="py-lineno">1252</tt> <tt class="py-line"> <tt class="py-name">parser</tt><tt class="py-op">.</tt><tt class="py-name">feed</tt><tt class="py-op">(</tt><tt class="py-name">for_parser</tt><tt class="py-op">)</tt> </tt>
+<a name="L1253"></a><tt class="py-lineno">1253</tt> <tt class="py-line"> <tt class="py-name">mime_response</tt> <tt class="py-op">=</tt> <tt class="py-name">parser</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1254"></a><tt class="py-lineno">1254</tt> <tt class="py-line"> </tt>
+<a name="L1255"></a><tt class="py-lineno">1255</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">mime_response</tt><tt class="py-op">.</tt><tt class="py-name">is_multipart</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1256"></a><tt class="py-lineno">1256</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-251" class="py-name"><a title="apiclient.errors.BatchError" class="py-name" href="#" onclick="return doclink('link-251', 'BatchError', 'link-2');">BatchError</a></tt><tt class="py-op">(</tt><tt class="py-string">"Response not in multipart/mixed format."</tt><tt class="py-op">,</tt> <tt class="py-name">resp</tt><tt class="py-op">=</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> </tt>
+<a name="L1257"></a><tt class="py-lineno">1257</tt> <tt class="py-line"> <tt class="py-name">content</tt><tt class="py-op">=</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
+<a name="L1258"></a><tt class="py-lineno">1258</tt> <tt class="py-line"> </tt>
+<a name="L1259"></a><tt class="py-lineno">1259</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">part</tt> <tt class="py-keyword">in</tt> <tt class="py-name">mime_response</tt><tt class="py-op">.</tt><tt class="py-name">get_payload</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1260"></a><tt class="py-lineno">1260</tt> <tt class="py-line"> <tt class="py-name">request_id</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-252" class="py-name" targets="Method apiclient.http.BatchHttpRequest._header_to_id()=apiclient.http.BatchHttpRequest-class.html#_header_to_id"><a title="apiclient.http.BatchHttpRequest._header_to_id" class="py-name" href="#" onclick="return doclink('link-252', '_header_to_id', 'link-252');">_header_to_id</a></tt><tt class="py-op">(</tt><tt class="py-name">part</tt><tt class="py-op">[</tt><tt class="py-string">'Content-ID'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1261"></a><tt class="py-lineno">1261</tt> <tt class="py-line"> <tt id="link-253" class="py-name" targets="Method apiclient.model.BaseModel.response()=apiclient.model.BaseModel-class.html#response,Method apiclient.model.Model.response()=apiclient.model.Model-class.html#response"><a title="apiclient.model.BaseModel.response
+apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-253', 'response', 'link-253');">response</a></tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-254" class="py-name" targets="Method apiclient.http.BatchHttpRequest._deserialize_response()=apiclient.http.BatchHttpRequest-class.html#_deserialize_response"><a title="apiclient.http.BatchHttpRequest._deserialize_response" class="py-name" href="#" onclick="return doclink('link-254', '_deserialize_response', 'link-254');">_deserialize_response</a></tt><tt class="py-op">(</tt><tt class="py-name">part</tt><tt class="py-op">.</tt><tt class="py-name">get_payload</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1262"></a><tt class="py-lineno">1262</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_responses</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt id="link-255" class="py-name"><a title="apiclient.model.BaseModel.response
+apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-255', 'response', 'link-253');">response</a></tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1263"></a><tt class="py-lineno">1263</tt> <tt class="py-line"> </tt>
+<a name="L1264"></a><tt class="py-lineno">1264</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-256" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-256', 'positional', 'link-21');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="BatchHttpRequest.execute"></a><div id="BatchHttpRequest.execute-def"><a name="L1265"></a><tt class="py-lineno">1265</tt> <a class="py-toggle" href="#" id="BatchHttpRequest.execute-toggle" onclick="return toggle('BatchHttpRequest.execute');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.BatchHttpRequest-class.html#execute">execute</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BatchHttpRequest.execute-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="BatchHttpRequest.execute-expanded"><a name="L1266"></a><tt class="py-lineno">1266</tt> <tt class="py-line"> <tt class="py-docstring">"""Execute all the requests as a single batched HTTP request.</tt> </tt>
+<a name="L1267"></a><tt class="py-lineno">1267</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1268"></a><tt class="py-lineno">1268</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L1269"></a><tt class="py-lineno">1269</tt> <tt class="py-line"><tt class="py-docstring"> http: httplib2.Http, an http object to be used in place of the one the</tt> </tt>
+<a name="L1270"></a><tt class="py-lineno">1270</tt> <tt class="py-line"><tt class="py-docstring"> HttpRequest request object was constructed with. If one isn't supplied</tt> </tt>
+<a name="L1271"></a><tt class="py-lineno">1271</tt> <tt class="py-line"><tt class="py-docstring"> then use a http object from the requests in this batch.</tt> </tt>
+<a name="L1272"></a><tt class="py-lineno">1272</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1273"></a><tt class="py-lineno">1273</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L1274"></a><tt class="py-lineno">1274</tt> <tt class="py-line"><tt class="py-docstring"> None</tt> </tt>
+<a name="L1275"></a><tt class="py-lineno">1275</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1276"></a><tt class="py-lineno">1276</tt> <tt class="py-line"><tt class="py-docstring"> Raises:</tt> </tt>
+<a name="L1277"></a><tt class="py-lineno">1277</tt> <tt class="py-line"><tt class="py-docstring"> httplib2.HttpLib2Error if a transport error has occured.</tt> </tt>
+<a name="L1278"></a><tt class="py-lineno">1278</tt> <tt class="py-line"><tt class="py-docstring"> apiclient.errors.BatchError if the response is the wrong format.</tt> </tt>
+<a name="L1279"></a><tt class="py-lineno">1279</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1280"></a><tt class="py-lineno">1280</tt> <tt class="py-line"> </tt>
+<a name="L1281"></a><tt class="py-lineno">1281</tt> <tt class="py-line"> <tt class="py-comment"># If http is not supplied use the first valid one given in the requests.</tt> </tt>
+<a name="L1282"></a><tt class="py-lineno">1282</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-257" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-257', 'http', 'link-72');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1283"></a><tt class="py-lineno">1283</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">request_id</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_order</tt><tt class="py-op">:</tt> </tt>
+<a name="L1284"></a><tt class="py-lineno">1284</tt> <tt class="py-line"> <tt id="link-258" class="py-name"><a title="apiclient.http.HttpMock.request
apiclient.http.HttpMockSequence.request
apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-247', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt> </tt>
-<a name="L1252"></a><tt class="py-lineno">1252</tt> <tt class="py-line"> <tt id="link-248" class="py-name"><a title="apiclient.model.BaseModel.response
-apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-248', 'response', 'link-224');">response</a></tt> <tt class="py-op">=</tt> <tt id="link-249" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-258', 'request', 'link-68');">request</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requests</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> </tt>
+<a name="L1285"></a><tt class="py-lineno">1285</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-259" class="py-name"><a title="apiclient.http.HttpMock.request
apiclient.http.HttpMockSequence.request
apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-249', 'request', 'link-67');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">postproc</tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
-<a name="L1253"></a><tt class="py-lineno">1253</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-250" class="py-name"><a title="apiclient.errors.HttpError" class="py-name" href="#" onclick="return doclink('link-250', 'HttpError', 'link-4');">HttpError</a></tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
-<a name="L1254"></a><tt class="py-lineno">1254</tt> <tt class="py-line"> <tt class="py-name">exception</tt> <tt class="py-op">=</tt> <tt class="py-name">e</tt> </tt>
-<a name="L1255"></a><tt class="py-lineno">1255</tt> <tt class="py-line"> </tt>
-<a name="L1256"></a><tt class="py-lineno">1256</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">callback</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L1257"></a><tt class="py-lineno">1257</tt> <tt class="py-line"> <tt class="py-name">callback</tt><tt class="py-op">(</tt><tt class="py-name">request_id</tt><tt class="py-op">,</tt> <tt id="link-251" class="py-name"><a title="apiclient.model.BaseModel.response
-apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-251', 'response', 'link-224');">response</a></tt><tt class="py-op">,</tt> <tt class="py-name">exception</tt><tt class="py-op">)</tt> </tt>
-<a name="L1258"></a><tt class="py-lineno">1258</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_callback</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L1259"></a><tt class="py-lineno">1259</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_callback</tt><tt class="py-op">(</tt><tt class="py-name">request_id</tt><tt class="py-op">,</tt> <tt id="link-252" class="py-name"><a title="apiclient.model.BaseModel.response
-apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-252', 'response', 'link-224');">response</a></tt><tt class="py-op">,</tt> <tt class="py-name">exception</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L1260"></a><tt class="py-lineno">1260</tt> <tt class="py-line"> </tt>
-<a name="HttpRequestMock"></a><div id="HttpRequestMock-def"><a name="L1261"></a><tt class="py-lineno">1261</tt> <tt class="py-line"> </tt>
-<a name="L1262"></a><tt class="py-lineno">1262</tt> <a class="py-toggle" href="#" id="HttpRequestMock-toggle" onclick="return toggle('HttpRequestMock');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.http.HttpRequestMock-class.html">HttpRequestMock</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="HttpRequestMock-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="HttpRequestMock-expanded"><a name="L1263"></a><tt class="py-lineno">1263</tt> <tt class="py-line"> <tt class="py-docstring">"""Mock of HttpRequest.</tt> </tt>
-<a name="L1264"></a><tt class="py-lineno">1264</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1265"></a><tt class="py-lineno">1265</tt> <tt class="py-line"><tt class="py-docstring"> Do not construct directly, instead use RequestMockBuilder.</tt> </tt>
-<a name="L1266"></a><tt class="py-lineno">1266</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L1267"></a><tt class="py-lineno">1267</tt> <tt class="py-line"> </tt>
-<a name="HttpRequestMock.__init__"></a><div id="HttpRequestMock.__init__-def"><a name="L1268"></a><tt class="py-lineno">1268</tt> <a class="py-toggle" href="#" id="HttpRequestMock.__init__-toggle" onclick="return toggle('HttpRequestMock.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.HttpRequestMock-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">resp</tt><tt class="py-op">,</tt> <tt class="py-param">content</tt><tt class="py-op">,</tt> <tt class="py-param">postproc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="HttpRequestMock.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpRequestMock.__init__-expanded"><a name="L1269"></a><tt class="py-lineno">1269</tt> <tt class="py-line"> <tt class="py-docstring">"""Constructor for HttpRequestMock</tt> </tt>
-<a name="L1270"></a><tt class="py-lineno">1270</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1271"></a><tt class="py-lineno">1271</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L1272"></a><tt class="py-lineno">1272</tt> <tt class="py-line"><tt class="py-docstring"> resp: httplib2.Response, the response to emulate coming from the request</tt> </tt>
-<a name="L1273"></a><tt class="py-lineno">1273</tt> <tt class="py-line"><tt class="py-docstring"> content: string, the response body</tt> </tt>
-<a name="L1274"></a><tt class="py-lineno">1274</tt> <tt class="py-line"><tt class="py-docstring"> postproc: callable, the post processing function usually supplied by</tt> </tt>
-<a name="L1275"></a><tt class="py-lineno">1275</tt> <tt class="py-line"><tt class="py-docstring"> the model class. See model.JsonModel.response() as an example.</tt> </tt>
-<a name="L1276"></a><tt class="py-lineno">1276</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L1277"></a><tt class="py-lineno">1277</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt> <tt class="py-op">=</tt> <tt class="py-name">resp</tt> </tt>
-<a name="L1278"></a><tt class="py-lineno">1278</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">content</tt> </tt>
-<a name="L1279"></a><tt class="py-lineno">1279</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">postproc</tt> <tt class="py-op">=</tt> <tt class="py-name">postproc</tt> </tt>
-<a name="L1280"></a><tt class="py-lineno">1280</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L1281"></a><tt class="py-lineno">1281</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt> <tt class="py-op">=</tt> <tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">Response</tt><tt class="py-op">(</tt><tt class="py-op">{</tt><tt class="py-string">'status'</tt><tt class="py-op">:</tt> <tt class="py-number">200</tt><tt class="py-op">,</tt> <tt class="py-string">'reason'</tt><tt class="py-op">:</tt> <tt class="py-string">'OK'</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
-<a name="L1282"></a><tt class="py-lineno">1282</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'reason'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">:</tt> </tt>
-<a name="L1283"></a><tt class="py-lineno">1283</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">reason</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'reason'</tt><tt class="py-op">]</tt> </tt>
-</div><a name="L1284"></a><tt class="py-lineno">1284</tt> <tt class="py-line"> </tt>
-<a name="HttpRequestMock.execute"></a><div id="HttpRequestMock.execute-def"><a name="L1285"></a><tt class="py-lineno">1285</tt> <a class="py-toggle" href="#" id="HttpRequestMock.execute-toggle" onclick="return toggle('HttpRequestMock.execute');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.HttpRequestMock-class.html#execute">execute</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="HttpRequestMock.execute-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpRequestMock.execute-expanded"><a name="L1286"></a><tt class="py-lineno">1286</tt> <tt class="py-line"> <tt class="py-docstring">"""Execute the request.</tt> </tt>
-<a name="L1287"></a><tt class="py-lineno">1287</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1288"></a><tt class="py-lineno">1288</tt> <tt class="py-line"><tt class="py-docstring"> Same behavior as HttpRequest.execute(), but the response is</tt> </tt>
-<a name="L1289"></a><tt class="py-lineno">1289</tt> <tt class="py-line"><tt class="py-docstring"> mocked and not really from an HTTP request/response.</tt> </tt>
-<a name="L1290"></a><tt class="py-lineno">1290</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L1291"></a><tt class="py-lineno">1291</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">postproc</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L1292"></a><tt class="py-lineno">1292</tt> <tt class="py-line"> </tt>
-<a name="RequestMockBuilder"></a><div id="RequestMockBuilder-def"><a name="L1293"></a><tt class="py-lineno">1293</tt> <tt class="py-line"> </tt>
-<a name="L1294"></a><tt class="py-lineno">1294</tt> <a class="py-toggle" href="#" id="RequestMockBuilder-toggle" onclick="return toggle('RequestMockBuilder');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.http.RequestMockBuilder-class.html">RequestMockBuilder</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="RequestMockBuilder-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="RequestMockBuilder-expanded"><a name="L1295"></a><tt class="py-lineno">1295</tt> <tt class="py-line"> <tt class="py-docstring">"""A simple mock of HttpRequest</tt> </tt>
-<a name="L1296"></a><tt class="py-lineno">1296</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1297"></a><tt class="py-lineno">1297</tt> <tt class="py-line"><tt class="py-docstring"> Pass in a dictionary to the constructor that maps request methodIds to</tt> </tt>
-<a name="L1298"></a><tt class="py-lineno">1298</tt> <tt class="py-line"><tt class="py-docstring"> tuples of (httplib2.Response, content, opt_expected_body) that should be</tt> </tt>
-<a name="L1299"></a><tt class="py-lineno">1299</tt> <tt class="py-line"><tt class="py-docstring"> returned when that method is called. None may also be passed in for the</tt> </tt>
-<a name="L1300"></a><tt class="py-lineno">1300</tt> <tt class="py-line"><tt class="py-docstring"> httplib2.Response, in which case a 200 OK response will be generated.</tt> </tt>
-<a name="L1301"></a><tt class="py-lineno">1301</tt> <tt class="py-line"><tt class="py-docstring"> If an opt_expected_body (str or dict) is provided, it will be compared to</tt> </tt>
-<a name="L1302"></a><tt class="py-lineno">1302</tt> <tt class="py-line"><tt class="py-docstring"> the body and UnexpectedBodyError will be raised on inequality.</tt> </tt>
-<a name="L1303"></a><tt class="py-lineno">1303</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1304"></a><tt class="py-lineno">1304</tt> <tt class="py-line"><tt class="py-docstring"> Example:</tt> </tt>
-<a name="L1305"></a><tt class="py-lineno">1305</tt> <tt class="py-line"><tt class="py-docstring"> response = '{"data": {"id": "tag:google.c...'</tt> </tt>
-<a name="L1306"></a><tt class="py-lineno">1306</tt> <tt class="py-line"><tt class="py-docstring"> requestBuilder = RequestMockBuilder(</tt> </tt>
-<a name="L1307"></a><tt class="py-lineno">1307</tt> <tt class="py-line"><tt class="py-docstring"> {</tt> </tt>
-<a name="L1308"></a><tt class="py-lineno">1308</tt> <tt class="py-line"><tt class="py-docstring"> 'plus.activities.get': (None, response),</tt> </tt>
-<a name="L1309"></a><tt class="py-lineno">1309</tt> <tt class="py-line"><tt class="py-docstring"> }</tt> </tt>
-<a name="L1310"></a><tt class="py-lineno">1310</tt> <tt class="py-line"><tt class="py-docstring"> )</tt> </tt>
-<a name="L1311"></a><tt class="py-lineno">1311</tt> <tt class="py-line"><tt class="py-docstring"> apiclient.discovery.build("plus", "v1", requestBuilder=requestBuilder)</tt> </tt>
-<a name="L1312"></a><tt class="py-lineno">1312</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1313"></a><tt class="py-lineno">1313</tt> <tt class="py-line"><tt class="py-docstring"> Methods that you do not supply a response for will return a</tt> </tt>
-<a name="L1314"></a><tt class="py-lineno">1314</tt> <tt class="py-line"><tt class="py-docstring"> 200 OK with an empty string as the response content or raise an excpetion</tt> </tt>
-<a name="L1315"></a><tt class="py-lineno">1315</tt> <tt class="py-line"><tt class="py-docstring"> if check_unexpected is set to True. The methodId is taken from the rpcName</tt> </tt>
-<a name="L1316"></a><tt class="py-lineno">1316</tt> <tt class="py-line"><tt class="py-docstring"> in the discovery document.</tt> </tt>
-<a name="L1317"></a><tt class="py-lineno">1317</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1318"></a><tt class="py-lineno">1318</tt> <tt class="py-line"><tt class="py-docstring"> For more details see the project wiki.</tt> </tt>
-<a name="L1319"></a><tt class="py-lineno">1319</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L1320"></a><tt class="py-lineno">1320</tt> <tt class="py-line"> </tt>
-<a name="RequestMockBuilder.__init__"></a><div id="RequestMockBuilder.__init__-def"><a name="L1321"></a><tt class="py-lineno">1321</tt> <a class="py-toggle" href="#" id="RequestMockBuilder.__init__-toggle" onclick="return toggle('RequestMockBuilder.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.RequestMockBuilder-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">responses</tt><tt class="py-op">,</tt> <tt class="py-param">check_unexpected</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="RequestMockBuilder.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="RequestMockBuilder.__init__-expanded"><a name="L1322"></a><tt class="py-lineno">1322</tt> <tt class="py-line"> <tt class="py-docstring">"""Constructor for RequestMockBuilder</tt> </tt>
-<a name="L1323"></a><tt class="py-lineno">1323</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1324"></a><tt class="py-lineno">1324</tt> <tt class="py-line"><tt class="py-docstring"> The constructed object should be a callable object</tt> </tt>
-<a name="L1325"></a><tt class="py-lineno">1325</tt> <tt class="py-line"><tt class="py-docstring"> that can replace the class HttpResponse.</tt> </tt>
-<a name="L1326"></a><tt class="py-lineno">1326</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1327"></a><tt class="py-lineno">1327</tt> <tt class="py-line"><tt class="py-docstring"> responses - A dictionary that maps methodIds into tuples</tt> </tt>
-<a name="L1328"></a><tt class="py-lineno">1328</tt> <tt class="py-line"><tt class="py-docstring"> of (httplib2.Response, content). The methodId</tt> </tt>
-<a name="L1329"></a><tt class="py-lineno">1329</tt> <tt class="py-line"><tt class="py-docstring"> comes from the 'rpcName' field in the discovery</tt> </tt>
-<a name="L1330"></a><tt class="py-lineno">1330</tt> <tt class="py-line"><tt class="py-docstring"> document.</tt> </tt>
-<a name="L1331"></a><tt class="py-lineno">1331</tt> <tt class="py-line"><tt class="py-docstring"> check_unexpected - A boolean setting whether or not UnexpectedMethodError</tt> </tt>
-<a name="L1332"></a><tt class="py-lineno">1332</tt> <tt class="py-line"><tt class="py-docstring"> should be raised on unsupplied method.</tt> </tt>
-<a name="L1333"></a><tt class="py-lineno">1333</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L1334"></a><tt class="py-lineno">1334</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">responses</tt> <tt class="py-op">=</tt> <tt class="py-name">responses</tt> </tt>
-<a name="L1335"></a><tt class="py-lineno">1335</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">check_unexpected</tt> <tt class="py-op">=</tt> <tt class="py-name">check_unexpected</tt> </tt>
-</div><a name="L1336"></a><tt class="py-lineno">1336</tt> <tt class="py-line"> </tt>
-<a name="RequestMockBuilder.__call__"></a><div id="RequestMockBuilder.__call__-def"><a name="L1337"></a><tt class="py-lineno">1337</tt> <a class="py-toggle" href="#" id="RequestMockBuilder.__call__-toggle" onclick="return toggle('RequestMockBuilder.__call__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.RequestMockBuilder-class.html#__call__">__call__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">,</tt> <tt class="py-param">postproc</tt><tt class="py-op">,</tt> <tt class="py-param">uri</tt><tt class="py-op">,</tt> <tt class="py-param">method</tt><tt class="py-op">=</tt><tt class="py-string">'GET'</tt><tt class="py-op">,</tt> <tt class="py-param">body</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L1338"></a><tt class="py-lineno">1338</tt> <tt class="py-line"> <tt class="py-param">headers</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">methodId</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">resumable</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="RequestMockBuilder.__call__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="RequestMockBuilder.__call__-expanded"><a name="L1339"></a><tt class="py-lineno">1339</tt> <tt class="py-line"> <tt class="py-docstring">"""Implements the callable interface that discovery.build() expects</tt> </tt>
-<a name="L1340"></a><tt class="py-lineno">1340</tt> <tt class="py-line"><tt class="py-docstring"> of requestBuilder, which is to build an object compatible with</tt> </tt>
-<a name="L1341"></a><tt class="py-lineno">1341</tt> <tt class="py-line"><tt class="py-docstring"> HttpRequest.execute(). See that method for the description of the</tt> </tt>
-<a name="L1342"></a><tt class="py-lineno">1342</tt> <tt class="py-line"><tt class="py-docstring"> parameters and the expected response.</tt> </tt>
-<a name="L1343"></a><tt class="py-lineno">1343</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L1344"></a><tt class="py-lineno">1344</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">methodId</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">responses</tt><tt class="py-op">:</tt> </tt>
-<a name="L1345"></a><tt class="py-lineno">1345</tt> <tt class="py-line"> <tt id="link-253" class="py-name"><a title="apiclient.model.BaseModel.response
-apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-253', 'response', 'link-224');">response</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">responses</tt><tt class="py-op">[</tt><tt class="py-name">methodId</tt><tt class="py-op">]</tt> </tt>
-<a name="L1346"></a><tt class="py-lineno">1346</tt> <tt class="py-line"> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt id="link-254" class="py-name"><a title="apiclient.model.BaseModel.response
-apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-254', 'response', 'link-224');">response</a></tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> </tt>
-<a name="L1347"></a><tt class="py-lineno">1347</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-255" class="py-name"><a title="apiclient.model.BaseModel.response
-apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-255', 'response', 'link-224');">response</a></tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> </tt>
-<a name="L1348"></a><tt class="py-lineno">1348</tt> <tt class="py-line"> <tt class="py-comment"># Test the body against the supplied expected_body.</tt> </tt>
-<a name="L1349"></a><tt class="py-lineno">1349</tt> <tt class="py-line"> <tt class="py-name">expected_body</tt> <tt class="py-op">=</tt> <tt id="link-256" class="py-name"><a title="apiclient.model.BaseModel.response
-apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-256', 'response', 'link-224');">response</a></tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> </tt>
-<a name="L1350"></a><tt class="py-lineno">1350</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">bool</tt><tt class="py-op">(</tt><tt class="py-name">expected_body</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-name">bool</tt><tt class="py-op">(</tt><tt class="py-name">body</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1351"></a><tt class="py-lineno">1351</tt> <tt class="py-line"> <tt class="py-comment"># Not expecting a body and provided one</tt> </tt>
-<a name="L1352"></a><tt class="py-lineno">1352</tt> <tt class="py-line"> <tt class="py-comment"># or expecting a body and not provided one.</tt> </tt>
-<a name="L1353"></a><tt class="py-lineno">1353</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-257" class="py-name"><a title="apiclient.errors.UnexpectedBodyError" class="py-name" href="#" onclick="return doclink('link-257', 'UnexpectedBodyError', 'link-10');">UnexpectedBodyError</a></tt><tt class="py-op">(</tt><tt class="py-name">expected_body</tt><tt class="py-op">,</tt> <tt class="py-name">body</tt><tt class="py-op">)</tt> </tt>
-<a name="L1354"></a><tt class="py-lineno">1354</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">expected_body</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1355"></a><tt class="py-lineno">1355</tt> <tt class="py-line"> <tt class="py-name">expected_body</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-258" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-258', 'loads', 'link-23');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">expected_body</tt><tt class="py-op">)</tt> </tt>
-<a name="L1356"></a><tt class="py-lineno">1356</tt> <tt class="py-line"> <tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-259" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-259', 'loads', 'link-23');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">body</tt><tt class="py-op">)</tt> </tt>
-<a name="L1357"></a><tt class="py-lineno">1357</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">body</tt> <tt class="py-op">!=</tt> <tt class="py-name">expected_body</tt><tt class="py-op">:</tt> </tt>
-<a name="L1358"></a><tt class="py-lineno">1358</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-260" class="py-name"><a title="apiclient.errors.UnexpectedBodyError" class="py-name" href="#" onclick="return doclink('link-260', 'UnexpectedBodyError', 'link-10');">UnexpectedBodyError</a></tt><tt class="py-op">(</tt><tt class="py-name">expected_body</tt><tt class="py-op">,</tt> <tt class="py-name">body</tt><tt class="py-op">)</tt> </tt>
-<a name="L1359"></a><tt class="py-lineno">1359</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-261" class="py-name" targets="Class apiclient.http.HttpRequestMock=apiclient.http.HttpRequestMock-class.html"><a title="apiclient.http.HttpRequestMock" class="py-name" href="#" onclick="return doclink('link-261', 'HttpRequestMock', 'link-261');">HttpRequestMock</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">,</tt> <tt class="py-name">postproc</tt><tt class="py-op">)</tt> </tt>
-<a name="L1360"></a><tt class="py-lineno">1360</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">check_unexpected</tt><tt class="py-op">:</tt> </tt>
-<a name="L1361"></a><tt class="py-lineno">1361</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-262" class="py-name"><a title="apiclient.errors.UnexpectedMethodError" class="py-name" href="#" onclick="return doclink('link-262', 'UnexpectedMethodError', 'link-12');">UnexpectedMethodError</a></tt><tt class="py-op">(</tt><tt class="py-name">methodId</tt><tt class="py-op">=</tt><tt class="py-name">methodId</tt><tt class="py-op">)</tt> </tt>
-<a name="L1362"></a><tt class="py-lineno">1362</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L1363"></a><tt class="py-lineno">1363</tt> <tt class="py-line"> <tt id="link-263" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-263', 'model', 'link-13');">model</a></tt> <tt class="py-op">=</tt> <tt id="link-264" class="py-name"><a title="apiclient.model.JsonModel" class="py-name" href="#" onclick="return doclink('link-264', 'JsonModel', 'link-14');">JsonModel</a></tt><tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
-<a name="L1364"></a><tt class="py-lineno">1364</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-265" class="py-name"><a title="apiclient.http.HttpRequestMock" class="py-name" href="#" onclick="return doclink('link-265', 'HttpRequestMock', 'link-261');">HttpRequestMock</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-string">'{}'</tt><tt class="py-op">,</tt> <tt id="link-266" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-266', 'model', 'link-13');">model</a></tt><tt class="py-op">.</tt><tt id="link-267" class="py-name"><a title="apiclient.model.BaseModel.response
-apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-267', 'response', 'link-224');">response</a></tt><tt class="py-op">)</tt> </tt>
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-259', 'request', 'link-68');">request</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1286"></a><tt class="py-lineno">1286</tt> <tt class="py-line"> <tt id="link-260" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-260', 'http', 'link-72');">http</a></tt> <tt class="py-op">=</tt> <tt id="link-261" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.http.HttpMockSequence.request
+apiclient.model.BaseModel.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-261', 'request', 'link-68');">request</a></tt><tt class="py-op">.</tt><tt id="link-262" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-262', 'http', 'link-72');">http</a></tt> </tt>
+<a name="L1287"></a><tt class="py-lineno">1287</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt>
+<a name="L1288"></a><tt class="py-lineno">1288</tt> <tt class="py-line"> </tt>
+<a name="L1289"></a><tt class="py-lineno">1289</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-263" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-263', 'http', 'link-72');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1290"></a><tt class="py-lineno">1290</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"Missing a valid http object."</tt><tt class="py-op">)</tt> </tt>
+<a name="L1291"></a><tt class="py-lineno">1291</tt> <tt class="py-line"> </tt>
+<a name="L1292"></a><tt class="py-lineno">1292</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-264" class="py-name" targets="Method apiclient.http.BatchHttpRequest._execute()=apiclient.http.BatchHttpRequest-class.html#_execute"><a title="apiclient.http.BatchHttpRequest._execute" class="py-name" href="#" onclick="return doclink('link-264', '_execute', 'link-264');">_execute</a></tt><tt class="py-op">(</tt><tt id="link-265" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-265', 'http', 'link-72');">http</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_order</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requests</tt><tt class="py-op">)</tt> </tt>
+<a name="L1293"></a><tt class="py-lineno">1293</tt> <tt class="py-line"> </tt>
+<a name="L1294"></a><tt class="py-lineno">1294</tt> <tt class="py-line"> <tt class="py-comment"># Loop over all the requests and check for 401s. For each 401 request the</tt> </tt>
+<a name="L1295"></a><tt class="py-lineno">1295</tt> <tt class="py-line"> <tt class="py-comment"># credentials should be refreshed and then sent again in a separate batch.</tt> </tt>
+<a name="L1296"></a><tt class="py-lineno">1296</tt> <tt class="py-line"> <tt class="py-name">redo_requests</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L1297"></a><tt class="py-lineno">1297</tt> <tt class="py-line"> <tt class="py-name">redo_order</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L1298"></a><tt class="py-lineno">1298</tt> <tt class="py-line"> </tt>
+<a name="L1299"></a><tt class="py-lineno">1299</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">request_id</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_order</tt><tt class="py-op">:</tt> </tt>
+<a name="L1300"></a><tt class="py-lineno">1300</tt> <tt class="py-line"> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_responses</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> </tt>
+<a name="L1301"></a><tt class="py-lineno">1301</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'status'</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-string">'401'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1302"></a><tt class="py-lineno">1302</tt> <tt class="py-line"> <tt class="py-name">redo_order</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">request_id</tt><tt class="py-op">)</tt> </tt>
+<a name="L1303"></a><tt class="py-lineno">1303</tt> <tt class="py-line"> <tt id="link-266" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.http.HttpMockSequence.request
+apiclient.model.BaseModel.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-266', 'request', 'link-68');">request</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requests</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> </tt>
+<a name="L1304"></a><tt class="py-lineno">1304</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-267" class="py-name" targets="Method apiclient.http.BatchHttpRequest._refresh_and_apply_credentials()=apiclient.http.BatchHttpRequest-class.html#_refresh_and_apply_credentials"><a title="apiclient.http.BatchHttpRequest._refresh_and_apply_credentials" class="py-name" href="#" onclick="return doclink('link-267', '_refresh_and_apply_credentials', 'link-267');">_refresh_and_apply_credentials</a></tt><tt class="py-op">(</tt><tt id="link-268" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.http.HttpMockSequence.request
+apiclient.model.BaseModel.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-268', 'request', 'link-68');">request</a></tt><tt class="py-op">,</tt> <tt id="link-269" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-269', 'http', 'link-72');">http</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1305"></a><tt class="py-lineno">1305</tt> <tt class="py-line"> <tt class="py-name">redo_requests</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-270" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.http.HttpMockSequence.request
+apiclient.model.BaseModel.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-270', 'request', 'link-68');">request</a></tt> </tt>
+<a name="L1306"></a><tt class="py-lineno">1306</tt> <tt class="py-line"> </tt>
+<a name="L1307"></a><tt class="py-lineno">1307</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">redo_requests</tt><tt class="py-op">:</tt> </tt>
+<a name="L1308"></a><tt class="py-lineno">1308</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-271" class="py-name"><a title="apiclient.http.BatchHttpRequest._execute" class="py-name" href="#" onclick="return doclink('link-271', '_execute', 'link-264');">_execute</a></tt><tt class="py-op">(</tt><tt id="link-272" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-272', 'http', 'link-72');">http</a></tt><tt class="py-op">,</tt> <tt class="py-name">redo_order</tt><tt class="py-op">,</tt> <tt class="py-name">redo_requests</tt><tt class="py-op">)</tt> </tt>
+<a name="L1309"></a><tt class="py-lineno">1309</tt> <tt class="py-line"> </tt>
+<a name="L1310"></a><tt class="py-lineno">1310</tt> <tt class="py-line"> <tt class="py-comment"># Now process all callbacks that are erroring, and raise an exception for</tt> </tt>
+<a name="L1311"></a><tt class="py-lineno">1311</tt> <tt class="py-line"> <tt class="py-comment"># ones that return a non-2xx response? Or add extra parameter to callback</tt> </tt>
+<a name="L1312"></a><tt class="py-lineno">1312</tt> <tt class="py-line"> <tt class="py-comment"># that contains an HttpError?</tt> </tt>
+<a name="L1313"></a><tt class="py-lineno">1313</tt> <tt class="py-line"> </tt>
+<a name="L1314"></a><tt class="py-lineno">1314</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">request_id</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_order</tt><tt class="py-op">:</tt> </tt>
+<a name="L1315"></a><tt class="py-lineno">1315</tt> <tt class="py-line"> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_responses</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> </tt>
+<a name="L1316"></a><tt class="py-lineno">1316</tt> <tt class="py-line"> </tt>
+<a name="L1317"></a><tt class="py-lineno">1317</tt> <tt class="py-line"> <tt id="link-273" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.http.HttpMockSequence.request
+apiclient.model.BaseModel.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-273', 'request', 'link-68');">request</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_requests</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> </tt>
+<a name="L1318"></a><tt class="py-lineno">1318</tt> <tt class="py-line"> <tt class="py-name">callback</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_callbacks</tt><tt class="py-op">[</tt><tt class="py-name">request_id</tt><tt class="py-op">]</tt> </tt>
+<a name="L1319"></a><tt class="py-lineno">1319</tt> <tt class="py-line"> </tt>
+<a name="L1320"></a><tt class="py-lineno">1320</tt> <tt class="py-line"> <tt id="link-274" class="py-name"><a title="apiclient.model.BaseModel.response
+apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-274', 'response', 'link-253');">response</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1321"></a><tt class="py-lineno">1321</tt> <tt class="py-line"> <tt class="py-name">exception</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1322"></a><tt class="py-lineno">1322</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L1323"></a><tt class="py-lineno">1323</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-op">>=</tt> <tt class="py-number">300</tt><tt class="py-op">:</tt> </tt>
+<a name="L1324"></a><tt class="py-lineno">1324</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-275" class="py-name"><a title="apiclient.errors.HttpError" class="py-name" href="#" onclick="return doclink('link-275', 'HttpError', 'link-4');">HttpError</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">,</tt> <tt class="py-name">uri</tt><tt class="py-op">=</tt><tt id="link-276" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.http.HttpMockSequence.request
+apiclient.model.BaseModel.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-276', 'request', 'link-68');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt> </tt>
+<a name="L1325"></a><tt class="py-lineno">1325</tt> <tt class="py-line"> <tt id="link-277" class="py-name"><a title="apiclient.model.BaseModel.response
+apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-277', 'response', 'link-253');">response</a></tt> <tt class="py-op">=</tt> <tt id="link-278" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.http.HttpMockSequence.request
+apiclient.model.BaseModel.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-278', 'request', 'link-68');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">postproc</tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
+<a name="L1326"></a><tt class="py-lineno">1326</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-279" class="py-name"><a title="apiclient.errors.HttpError" class="py-name" href="#" onclick="return doclink('link-279', 'HttpError', 'link-4');">HttpError</a></tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L1327"></a><tt class="py-lineno">1327</tt> <tt class="py-line"> <tt class="py-name">exception</tt> <tt class="py-op">=</tt> <tt class="py-name">e</tt> </tt>
+<a name="L1328"></a><tt class="py-lineno">1328</tt> <tt class="py-line"> </tt>
+<a name="L1329"></a><tt class="py-lineno">1329</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">callback</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1330"></a><tt class="py-lineno">1330</tt> <tt class="py-line"> <tt class="py-name">callback</tt><tt class="py-op">(</tt><tt class="py-name">request_id</tt><tt class="py-op">,</tt> <tt id="link-280" class="py-name"><a title="apiclient.model.BaseModel.response
+apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-280', 'response', 'link-253');">response</a></tt><tt class="py-op">,</tt> <tt class="py-name">exception</tt><tt class="py-op">)</tt> </tt>
+<a name="L1331"></a><tt class="py-lineno">1331</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_callback</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1332"></a><tt class="py-lineno">1332</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_callback</tt><tt class="py-op">(</tt><tt class="py-name">request_id</tt><tt class="py-op">,</tt> <tt id="link-281" class="py-name"><a title="apiclient.model.BaseModel.response
+apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-281', 'response', 'link-253');">response</a></tt><tt class="py-op">,</tt> <tt class="py-name">exception</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1333"></a><tt class="py-lineno">1333</tt> <tt class="py-line"> </tt>
+<a name="HttpRequestMock"></a><div id="HttpRequestMock-def"><a name="L1334"></a><tt class="py-lineno">1334</tt> <tt class="py-line"> </tt>
+<a name="L1335"></a><tt class="py-lineno">1335</tt> <a class="py-toggle" href="#" id="HttpRequestMock-toggle" onclick="return toggle('HttpRequestMock');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.http.HttpRequestMock-class.html">HttpRequestMock</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="HttpRequestMock-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="HttpRequestMock-expanded"><a name="L1336"></a><tt class="py-lineno">1336</tt> <tt class="py-line"> <tt class="py-docstring">"""Mock of HttpRequest.</tt> </tt>
+<a name="L1337"></a><tt class="py-lineno">1337</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1338"></a><tt class="py-lineno">1338</tt> <tt class="py-line"><tt class="py-docstring"> Do not construct directly, instead use RequestMockBuilder.</tt> </tt>
+<a name="L1339"></a><tt class="py-lineno">1339</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1340"></a><tt class="py-lineno">1340</tt> <tt class="py-line"> </tt>
+<a name="HttpRequestMock.__init__"></a><div id="HttpRequestMock.__init__-def"><a name="L1341"></a><tt class="py-lineno">1341</tt> <a class="py-toggle" href="#" id="HttpRequestMock.__init__-toggle" onclick="return toggle('HttpRequestMock.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.HttpRequestMock-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">resp</tt><tt class="py-op">,</tt> <tt class="py-param">content</tt><tt class="py-op">,</tt> <tt class="py-param">postproc</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="HttpRequestMock.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpRequestMock.__init__-expanded"><a name="L1342"></a><tt class="py-lineno">1342</tt> <tt class="py-line"> <tt class="py-docstring">"""Constructor for HttpRequestMock</tt> </tt>
+<a name="L1343"></a><tt class="py-lineno">1343</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1344"></a><tt class="py-lineno">1344</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L1345"></a><tt class="py-lineno">1345</tt> <tt class="py-line"><tt class="py-docstring"> resp: httplib2.Response, the response to emulate coming from the request</tt> </tt>
+<a name="L1346"></a><tt class="py-lineno">1346</tt> <tt class="py-line"><tt class="py-docstring"> content: string, the response body</tt> </tt>
+<a name="L1347"></a><tt class="py-lineno">1347</tt> <tt class="py-line"><tt class="py-docstring"> postproc: callable, the post processing function usually supplied by</tt> </tt>
+<a name="L1348"></a><tt class="py-lineno">1348</tt> <tt class="py-line"><tt class="py-docstring"> the model class. See model.JsonModel.response() as an example.</tt> </tt>
+<a name="L1349"></a><tt class="py-lineno">1349</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1350"></a><tt class="py-lineno">1350</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt> <tt class="py-op">=</tt> <tt class="py-name">resp</tt> </tt>
+<a name="L1351"></a><tt class="py-lineno">1351</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">content</tt> </tt>
+<a name="L1352"></a><tt class="py-lineno">1352</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">postproc</tt> <tt class="py-op">=</tt> <tt class="py-name">postproc</tt> </tt>
+<a name="L1353"></a><tt class="py-lineno">1353</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1354"></a><tt class="py-lineno">1354</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt> <tt class="py-op">=</tt> <tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">Response</tt><tt class="py-op">(</tt><tt class="py-op">{</tt><tt class="py-string">'status'</tt><tt class="py-op">:</tt> <tt class="py-number">200</tt><tt class="py-op">,</tt> <tt class="py-string">'reason'</tt><tt class="py-op">:</tt> <tt class="py-string">'OK'</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L1355"></a><tt class="py-lineno">1355</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'reason'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">:</tt> </tt>
+<a name="L1356"></a><tt class="py-lineno">1356</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">reason</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'reason'</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L1357"></a><tt class="py-lineno">1357</tt> <tt class="py-line"> </tt>
+<a name="HttpRequestMock.execute"></a><div id="HttpRequestMock.execute-def"><a name="L1358"></a><tt class="py-lineno">1358</tt> <a class="py-toggle" href="#" id="HttpRequestMock.execute-toggle" onclick="return toggle('HttpRequestMock.execute');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.HttpRequestMock-class.html#execute">execute</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="HttpRequestMock.execute-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpRequestMock.execute-expanded"><a name="L1359"></a><tt class="py-lineno">1359</tt> <tt class="py-line"> <tt class="py-docstring">"""Execute the request.</tt> </tt>
+<a name="L1360"></a><tt class="py-lineno">1360</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1361"></a><tt class="py-lineno">1361</tt> <tt class="py-line"><tt class="py-docstring"> Same behavior as HttpRequest.execute(), but the response is</tt> </tt>
+<a name="L1362"></a><tt class="py-lineno">1362</tt> <tt class="py-line"><tt class="py-docstring"> mocked and not really from an HTTP request/response.</tt> </tt>
+<a name="L1363"></a><tt class="py-lineno">1363</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1364"></a><tt class="py-lineno">1364</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">postproc</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
</div></div><a name="L1365"></a><tt class="py-lineno">1365</tt> <tt class="py-line"> </tt>
-<a name="HttpMock"></a><div id="HttpMock-def"><a name="L1366"></a><tt class="py-lineno">1366</tt> <tt class="py-line"> </tt>
-<a name="L1367"></a><tt class="py-lineno">1367</tt> <a class="py-toggle" href="#" id="HttpMock-toggle" onclick="return toggle('HttpMock');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.http.HttpMock-class.html">HttpMock</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="HttpMock-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="HttpMock-expanded"><a name="L1368"></a><tt class="py-lineno">1368</tt> <tt class="py-line"> <tt class="py-docstring">"""Mock of httplib2.Http"""</tt> </tt>
-<a name="L1369"></a><tt class="py-lineno">1369</tt> <tt class="py-line"> </tt>
-<a name="HttpMock.__init__"></a><div id="HttpMock.__init__-def"><a name="L1370"></a><tt class="py-lineno">1370</tt> <a class="py-toggle" href="#" id="HttpMock.__init__-toggle" onclick="return toggle('HttpMock.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.HttpMock-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">filename</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">headers</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="HttpMock.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpMock.__init__-expanded"><a name="L1371"></a><tt class="py-lineno">1371</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
-<a name="L1372"></a><tt class="py-lineno">1372</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L1373"></a><tt class="py-lineno">1373</tt> <tt class="py-line"><tt class="py-docstring"> filename: string, absolute filename to read response from</tt> </tt>
-<a name="L1374"></a><tt class="py-lineno">1374</tt> <tt class="py-line"><tt class="py-docstring"> headers: dict, header to return with response</tt> </tt>
-<a name="L1375"></a><tt class="py-lineno">1375</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L1376"></a><tt class="py-lineno">1376</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">headers</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L1377"></a><tt class="py-lineno">1377</tt> <tt class="py-line"> <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'status'</tt><tt class="py-op">:</tt> <tt class="py-string">'200 OK'</tt><tt class="py-op">}</tt> </tt>
-<a name="L1378"></a><tt class="py-lineno">1378</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-268" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
-oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-268', 'filename', 'link-39');">filename</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L1379"></a><tt class="py-lineno">1379</tt> <tt class="py-line"> <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt id="link-269" class="py-name" targets="Module oauth2client.file=oauth2client.file-module.html"><a title="oauth2client.file" class="py-name" href="#" onclick="return doclink('link-269', 'file', 'link-269');">file</a></tt><tt class="py-op">(</tt><tt id="link-270" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
-oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-270', 'filename', 'link-39');">filename</a></tt><tt class="py-op">,</tt> <tt class="py-string">'r'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1380"></a><tt class="py-lineno">1380</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-271" class="py-name"><a title="apiclient.http._StreamSlice.read
-apiclient.push.Headers.read" class="py-name" href="#" onclick="return doclink('link-271', 'read', 'link-36');">read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1381"></a><tt class="py-lineno">1381</tt> <tt class="py-line"> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1382"></a><tt class="py-lineno">1382</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L1383"></a><tt class="py-lineno">1383</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L1384"></a><tt class="py-lineno">1384</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">response_headers</tt> <tt class="py-op">=</tt> <tt class="py-name">headers</tt> </tt>
-<a name="L1385"></a><tt class="py-lineno">1385</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L1386"></a><tt class="py-lineno">1386</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uri</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L1387"></a><tt class="py-lineno">1387</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L1388"></a><tt class="py-lineno">1388</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L1389"></a><tt class="py-lineno">1389</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-</div><a name="L1390"></a><tt class="py-lineno">1390</tt> <tt class="py-line"> </tt>
-<a name="L1391"></a><tt class="py-lineno">1391</tt> <tt class="py-line"> </tt>
-<a name="HttpMock.request"></a><div id="HttpMock.request-def"><a name="L1392"></a><tt class="py-lineno">1392</tt> <a class="py-toggle" href="#" id="HttpMock.request-toggle" onclick="return toggle('HttpMock.request');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.HttpMock-class.html#request">request</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">uri</tt><tt class="py-op">,</tt> </tt>
-<a name="L1393"></a><tt class="py-lineno">1393</tt> <tt class="py-line"> <tt class="py-param">method</tt><tt class="py-op">=</tt><tt class="py-string">'GET'</tt><tt class="py-op">,</tt> </tt>
-<a name="L1394"></a><tt class="py-lineno">1394</tt> <tt class="py-line"> <tt class="py-param">body</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L1395"></a><tt class="py-lineno">1395</tt> <tt class="py-line"> <tt class="py-param">headers</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L1396"></a><tt class="py-lineno">1396</tt> <tt class="py-line"> <tt class="py-param">redirections</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> </tt>
-<a name="L1397"></a><tt class="py-lineno">1397</tt> <tt class="py-line"> <tt class="py-param">connection_type</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="HttpMock.request-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpMock.request-expanded"><a name="L1398"></a><tt class="py-lineno">1398</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uri</tt> <tt class="py-op">=</tt> <tt class="py-name">uri</tt> </tt>
-<a name="L1399"></a><tt class="py-lineno">1399</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt class="py-name">method</tt> </tt>
-<a name="L1400"></a><tt class="py-lineno">1400</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">body</tt> </tt>
-<a name="L1401"></a><tt class="py-lineno">1401</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-name">headers</tt> </tt>
-<a name="L1402"></a><tt class="py-lineno">1402</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">Response</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">response_headers</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt> </tt>
-</div></div><a name="L1403"></a><tt class="py-lineno">1403</tt> <tt class="py-line"> </tt>
-<a name="HttpMockSequence"></a><div id="HttpMockSequence-def"><a name="L1404"></a><tt class="py-lineno">1404</tt> <tt class="py-line"> </tt>
-<a name="L1405"></a><tt class="py-lineno">1405</tt> <a class="py-toggle" href="#" id="HttpMockSequence-toggle" onclick="return toggle('HttpMockSequence');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.http.HttpMockSequence-class.html">HttpMockSequence</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="HttpMockSequence-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="HttpMockSequence-expanded"><a name="L1406"></a><tt class="py-lineno">1406</tt> <tt class="py-line"> <tt class="py-docstring">"""Mock of httplib2.Http</tt> </tt>
-<a name="L1407"></a><tt class="py-lineno">1407</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1408"></a><tt class="py-lineno">1408</tt> <tt class="py-line"><tt class="py-docstring"> Mocks a sequence of calls to request returning different responses for each</tt> </tt>
-<a name="L1409"></a><tt class="py-lineno">1409</tt> <tt class="py-line"><tt class="py-docstring"> call. Create an instance initialized with the desired response headers</tt> </tt>
-<a name="L1410"></a><tt class="py-lineno">1410</tt> <tt class="py-line"><tt class="py-docstring"> and content and then use as if an httplib2.Http instance.</tt> </tt>
-<a name="L1411"></a><tt class="py-lineno">1411</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1412"></a><tt class="py-lineno">1412</tt> <tt class="py-line"><tt class="py-docstring"> http = HttpMockSequence([</tt> </tt>
-<a name="L1413"></a><tt class="py-lineno">1413</tt> <tt class="py-line"><tt class="py-docstring"> ({'status': '401'}, ''),</tt> </tt>
-<a name="L1414"></a><tt class="py-lineno">1414</tt> <tt class="py-line"><tt class="py-docstring"> ({'status': '200'}, '{"access_token":"1/3w","expires_in":3600}'),</tt> </tt>
-<a name="L1415"></a><tt class="py-lineno">1415</tt> <tt class="py-line"><tt class="py-docstring"> ({'status': '200'}, 'echo_request_headers'),</tt> </tt>
-<a name="L1416"></a><tt class="py-lineno">1416</tt> <tt class="py-line"><tt class="py-docstring"> ])</tt> </tt>
-<a name="L1417"></a><tt class="py-lineno">1417</tt> <tt class="py-line"><tt class="py-docstring"> resp, content = http.request("http://examples.com")</tt> </tt>
-<a name="L1418"></a><tt class="py-lineno">1418</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1419"></a><tt class="py-lineno">1419</tt> <tt class="py-line"><tt class="py-docstring"> There are special values you can pass in for content to trigger</tt> </tt>
-<a name="L1420"></a><tt class="py-lineno">1420</tt> <tt class="py-line"><tt class="py-docstring"> behavours that are helpful in testing.</tt> </tt>
-<a name="L1421"></a><tt class="py-lineno">1421</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1422"></a><tt class="py-lineno">1422</tt> <tt class="py-line"><tt class="py-docstring"> 'echo_request_headers' means return the request headers in the response body</tt> </tt>
-<a name="L1423"></a><tt class="py-lineno">1423</tt> <tt class="py-line"><tt class="py-docstring"> 'echo_request_headers_as_json' means return the request headers in</tt> </tt>
-<a name="L1424"></a><tt class="py-lineno">1424</tt> <tt class="py-line"><tt class="py-docstring"> the response body</tt> </tt>
-<a name="L1425"></a><tt class="py-lineno">1425</tt> <tt class="py-line"><tt class="py-docstring"> 'echo_request_body' means return the request body in the response body</tt> </tt>
-<a name="L1426"></a><tt class="py-lineno">1426</tt> <tt class="py-line"><tt class="py-docstring"> 'echo_request_uri' means return the request uri in the response body</tt> </tt>
-<a name="L1427"></a><tt class="py-lineno">1427</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L1428"></a><tt class="py-lineno">1428</tt> <tt class="py-line"> </tt>
-<a name="HttpMockSequence.__init__"></a><div id="HttpMockSequence.__init__-def"><a name="L1429"></a><tt class="py-lineno">1429</tt> <a class="py-toggle" href="#" id="HttpMockSequence.__init__-toggle" onclick="return toggle('HttpMockSequence.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.HttpMockSequence-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">iterable</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="HttpMockSequence.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpMockSequence.__init__-expanded"><a name="L1430"></a><tt class="py-lineno">1430</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
-<a name="L1431"></a><tt class="py-lineno">1431</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L1432"></a><tt class="py-lineno">1432</tt> <tt class="py-line"><tt class="py-docstring"> iterable: iterable, a sequence of pairs of (headers, body)</tt> </tt>
-<a name="L1433"></a><tt class="py-lineno">1433</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L1434"></a><tt class="py-lineno">1434</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_iterable</tt> <tt class="py-op">=</tt> <tt class="py-name">iterable</tt> </tt>
-<a name="L1435"></a><tt class="py-lineno">1435</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">follow_redirects</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
-</div><a name="L1436"></a><tt class="py-lineno">1436</tt> <tt class="py-line"> </tt>
-<a name="HttpMockSequence.request"></a><div id="HttpMockSequence.request-def"><a name="L1437"></a><tt class="py-lineno">1437</tt> <a class="py-toggle" href="#" id="HttpMockSequence.request-toggle" onclick="return toggle('HttpMockSequence.request');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.HttpMockSequence-class.html#request">request</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">uri</tt><tt class="py-op">,</tt> </tt>
-<a name="L1438"></a><tt class="py-lineno">1438</tt> <tt class="py-line"> <tt class="py-param">method</tt><tt class="py-op">=</tt><tt class="py-string">'GET'</tt><tt class="py-op">,</tt> </tt>
-<a name="L1439"></a><tt class="py-lineno">1439</tt> <tt class="py-line"> <tt class="py-param">body</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L1440"></a><tt class="py-lineno">1440</tt> <tt class="py-line"> <tt class="py-param">headers</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L1441"></a><tt class="py-lineno">1441</tt> <tt class="py-line"> <tt class="py-param">redirections</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> </tt>
-<a name="L1442"></a><tt class="py-lineno">1442</tt> <tt class="py-line"> <tt class="py-param">connection_type</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="HttpMockSequence.request-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpMockSequence.request-expanded"><a name="L1443"></a><tt class="py-lineno">1443</tt> <tt class="py-line"> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_iterable</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
-<a name="L1444"></a><tt class="py-lineno">1444</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">content</tt> <tt class="py-op">==</tt> <tt class="py-string">'echo_request_headers'</tt><tt class="py-op">:</tt> </tt>
-<a name="L1445"></a><tt class="py-lineno">1445</tt> <tt class="py-line"> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">headers</tt> </tt>
-<a name="L1446"></a><tt class="py-lineno">1446</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">content</tt> <tt class="py-op">==</tt> <tt class="py-string">'echo_request_headers_as_json'</tt><tt class="py-op">:</tt> </tt>
-<a name="L1447"></a><tt class="py-lineno">1447</tt> <tt class="py-line"> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt class="py-name">dumps</tt><tt class="py-op">(</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
-<a name="L1448"></a><tt class="py-lineno">1448</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">content</tt> <tt class="py-op">==</tt> <tt class="py-string">'echo_request_body'</tt><tt class="py-op">:</tt> </tt>
-<a name="L1449"></a><tt class="py-lineno">1449</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt class="py-name">body</tt><tt class="py-op">,</tt> <tt class="py-string">'read'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1450"></a><tt class="py-lineno">1450</tt> <tt class="py-line"> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">body</tt><tt class="py-op">.</tt><tt id="link-272" class="py-name"><a title="apiclient.http._StreamSlice.read
-apiclient.push.Headers.read" class="py-name" href="#" onclick="return doclink('link-272', 'read', 'link-36');">read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1451"></a><tt class="py-lineno">1451</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L1452"></a><tt class="py-lineno">1452</tt> <tt class="py-line"> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">body</tt> </tt>
-<a name="L1453"></a><tt class="py-lineno">1453</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">content</tt> <tt class="py-op">==</tt> <tt class="py-string">'echo_request_uri'</tt><tt class="py-op">:</tt> </tt>
-<a name="L1454"></a><tt class="py-lineno">1454</tt> <tt class="py-line"> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">uri</tt> </tt>
-<a name="L1455"></a><tt class="py-lineno">1455</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">Response</tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> </tt>
-</div></div><a name="L1456"></a><tt class="py-lineno">1456</tt> <tt class="py-line"> </tt>
-<a name="set_user_agent"></a><div id="set_user_agent-def"><a name="L1457"></a><tt class="py-lineno">1457</tt> <tt class="py-line"> </tt>
-<a name="L1458"></a><tt class="py-lineno">1458</tt> <a class="py-toggle" href="#" id="set_user_agent-toggle" onclick="return toggle('set_user_agent');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http-module.html#set_user_agent">set_user_agent</a><tt class="py-op">(</tt><tt class="py-param">http</tt><tt class="py-op">,</tt> <tt class="py-param">user_agent</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="set_user_agent-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="set_user_agent-expanded"><a name="L1459"></a><tt class="py-lineno">1459</tt> <tt class="py-line"> <tt class="py-docstring">"""Set the user-agent on every request.</tt> </tt>
-<a name="L1460"></a><tt class="py-lineno">1460</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1461"></a><tt class="py-lineno">1461</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L1462"></a><tt class="py-lineno">1462</tt> <tt class="py-line"><tt class="py-docstring"> http - An instance of httplib2.Http</tt> </tt>
-<a name="L1463"></a><tt class="py-lineno">1463</tt> <tt class="py-line"><tt class="py-docstring"> or something that acts like it.</tt> </tt>
-<a name="L1464"></a><tt class="py-lineno">1464</tt> <tt class="py-line"><tt class="py-docstring"> user_agent: string, the value for the user-agent header.</tt> </tt>
-<a name="L1465"></a><tt class="py-lineno">1465</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1466"></a><tt class="py-lineno">1466</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L1467"></a><tt class="py-lineno">1467</tt> <tt class="py-line"><tt class="py-docstring"> A modified instance of http that was passed in.</tt> </tt>
-<a name="L1468"></a><tt class="py-lineno">1468</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1469"></a><tt class="py-lineno">1469</tt> <tt class="py-line"><tt class="py-docstring"> Example:</tt> </tt>
-<a name="L1470"></a><tt class="py-lineno">1470</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1471"></a><tt class="py-lineno">1471</tt> <tt class="py-line"><tt class="py-docstring"> h = httplib2.Http()</tt> </tt>
-<a name="L1472"></a><tt class="py-lineno">1472</tt> <tt class="py-line"><tt class="py-docstring"> h = set_user_agent(h, "my-app-name/6.0")</tt> </tt>
-<a name="L1473"></a><tt class="py-lineno">1473</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1474"></a><tt class="py-lineno">1474</tt> <tt class="py-line"><tt class="py-docstring"> Most of the time the user-agent will be set doing auth, this is for the rare</tt> </tt>
-<a name="L1475"></a><tt class="py-lineno">1475</tt> <tt class="py-line"><tt class="py-docstring"> cases where you are accessing an unauthenticated endpoint.</tt> </tt>
-<a name="L1476"></a><tt class="py-lineno">1476</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L1477"></a><tt class="py-lineno">1477</tt> <tt class="py-line"> <tt class="py-name">request_orig</tt> <tt class="py-op">=</tt> <tt id="link-273" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-273', 'http', 'link-70');">http</a></tt><tt class="py-op">.</tt><tt id="link-274" class="py-name"><a title="apiclient.http.HttpMock.request
+<a name="RequestMockBuilder"></a><div id="RequestMockBuilder-def"><a name="L1366"></a><tt class="py-lineno">1366</tt> <tt class="py-line"> </tt>
+<a name="L1367"></a><tt class="py-lineno">1367</tt> <a class="py-toggle" href="#" id="RequestMockBuilder-toggle" onclick="return toggle('RequestMockBuilder');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.http.RequestMockBuilder-class.html">RequestMockBuilder</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="RequestMockBuilder-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="RequestMockBuilder-expanded"><a name="L1368"></a><tt class="py-lineno">1368</tt> <tt class="py-line"> <tt class="py-docstring">"""A simple mock of HttpRequest</tt> </tt>
+<a name="L1369"></a><tt class="py-lineno">1369</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1370"></a><tt class="py-lineno">1370</tt> <tt class="py-line"><tt class="py-docstring"> Pass in a dictionary to the constructor that maps request methodIds to</tt> </tt>
+<a name="L1371"></a><tt class="py-lineno">1371</tt> <tt class="py-line"><tt class="py-docstring"> tuples of (httplib2.Response, content, opt_expected_body) that should be</tt> </tt>
+<a name="L1372"></a><tt class="py-lineno">1372</tt> <tt class="py-line"><tt class="py-docstring"> returned when that method is called. None may also be passed in for the</tt> </tt>
+<a name="L1373"></a><tt class="py-lineno">1373</tt> <tt class="py-line"><tt class="py-docstring"> httplib2.Response, in which case a 200 OK response will be generated.</tt> </tt>
+<a name="L1374"></a><tt class="py-lineno">1374</tt> <tt class="py-line"><tt class="py-docstring"> If an opt_expected_body (str or dict) is provided, it will be compared to</tt> </tt>
+<a name="L1375"></a><tt class="py-lineno">1375</tt> <tt class="py-line"><tt class="py-docstring"> the body and UnexpectedBodyError will be raised on inequality.</tt> </tt>
+<a name="L1376"></a><tt class="py-lineno">1376</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1377"></a><tt class="py-lineno">1377</tt> <tt class="py-line"><tt class="py-docstring"> Example:</tt> </tt>
+<a name="L1378"></a><tt class="py-lineno">1378</tt> <tt class="py-line"><tt class="py-docstring"> response = '{"data": {"id": "tag:google.c...'</tt> </tt>
+<a name="L1379"></a><tt class="py-lineno">1379</tt> <tt class="py-line"><tt class="py-docstring"> requestBuilder = RequestMockBuilder(</tt> </tt>
+<a name="L1380"></a><tt class="py-lineno">1380</tt> <tt class="py-line"><tt class="py-docstring"> {</tt> </tt>
+<a name="L1381"></a><tt class="py-lineno">1381</tt> <tt class="py-line"><tt class="py-docstring"> 'plus.activities.get': (None, response),</tt> </tt>
+<a name="L1382"></a><tt class="py-lineno">1382</tt> <tt class="py-line"><tt class="py-docstring"> }</tt> </tt>
+<a name="L1383"></a><tt class="py-lineno">1383</tt> <tt class="py-line"><tt class="py-docstring"> )</tt> </tt>
+<a name="L1384"></a><tt class="py-lineno">1384</tt> <tt class="py-line"><tt class="py-docstring"> apiclient.discovery.build("plus", "v1", requestBuilder=requestBuilder)</tt> </tt>
+<a name="L1385"></a><tt class="py-lineno">1385</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1386"></a><tt class="py-lineno">1386</tt> <tt class="py-line"><tt class="py-docstring"> Methods that you do not supply a response for will return a</tt> </tt>
+<a name="L1387"></a><tt class="py-lineno">1387</tt> <tt class="py-line"><tt class="py-docstring"> 200 OK with an empty string as the response content or raise an excpetion</tt> </tt>
+<a name="L1388"></a><tt class="py-lineno">1388</tt> <tt class="py-line"><tt class="py-docstring"> if check_unexpected is set to True. The methodId is taken from the rpcName</tt> </tt>
+<a name="L1389"></a><tt class="py-lineno">1389</tt> <tt class="py-line"><tt class="py-docstring"> in the discovery document.</tt> </tt>
+<a name="L1390"></a><tt class="py-lineno">1390</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1391"></a><tt class="py-lineno">1391</tt> <tt class="py-line"><tt class="py-docstring"> For more details see the project wiki.</tt> </tt>
+<a name="L1392"></a><tt class="py-lineno">1392</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1393"></a><tt class="py-lineno">1393</tt> <tt class="py-line"> </tt>
+<a name="RequestMockBuilder.__init__"></a><div id="RequestMockBuilder.__init__-def"><a name="L1394"></a><tt class="py-lineno">1394</tt> <a class="py-toggle" href="#" id="RequestMockBuilder.__init__-toggle" onclick="return toggle('RequestMockBuilder.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.RequestMockBuilder-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">responses</tt><tt class="py-op">,</tt> <tt class="py-param">check_unexpected</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="RequestMockBuilder.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="RequestMockBuilder.__init__-expanded"><a name="L1395"></a><tt class="py-lineno">1395</tt> <tt class="py-line"> <tt class="py-docstring">"""Constructor for RequestMockBuilder</tt> </tt>
+<a name="L1396"></a><tt class="py-lineno">1396</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1397"></a><tt class="py-lineno">1397</tt> <tt class="py-line"><tt class="py-docstring"> The constructed object should be a callable object</tt> </tt>
+<a name="L1398"></a><tt class="py-lineno">1398</tt> <tt class="py-line"><tt class="py-docstring"> that can replace the class HttpResponse.</tt> </tt>
+<a name="L1399"></a><tt class="py-lineno">1399</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1400"></a><tt class="py-lineno">1400</tt> <tt class="py-line"><tt class="py-docstring"> responses - A dictionary that maps methodIds into tuples</tt> </tt>
+<a name="L1401"></a><tt class="py-lineno">1401</tt> <tt class="py-line"><tt class="py-docstring"> of (httplib2.Response, content). The methodId</tt> </tt>
+<a name="L1402"></a><tt class="py-lineno">1402</tt> <tt class="py-line"><tt class="py-docstring"> comes from the 'rpcName' field in the discovery</tt> </tt>
+<a name="L1403"></a><tt class="py-lineno">1403</tt> <tt class="py-line"><tt class="py-docstring"> document.</tt> </tt>
+<a name="L1404"></a><tt class="py-lineno">1404</tt> <tt class="py-line"><tt class="py-docstring"> check_unexpected - A boolean setting whether or not UnexpectedMethodError</tt> </tt>
+<a name="L1405"></a><tt class="py-lineno">1405</tt> <tt class="py-line"><tt class="py-docstring"> should be raised on unsupplied method.</tt> </tt>
+<a name="L1406"></a><tt class="py-lineno">1406</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1407"></a><tt class="py-lineno">1407</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">responses</tt> <tt class="py-op">=</tt> <tt class="py-name">responses</tt> </tt>
+<a name="L1408"></a><tt class="py-lineno">1408</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">check_unexpected</tt> <tt class="py-op">=</tt> <tt class="py-name">check_unexpected</tt> </tt>
+</div><a name="L1409"></a><tt class="py-lineno">1409</tt> <tt class="py-line"> </tt>
+<a name="RequestMockBuilder.__call__"></a><div id="RequestMockBuilder.__call__-def"><a name="L1410"></a><tt class="py-lineno">1410</tt> <a class="py-toggle" href="#" id="RequestMockBuilder.__call__-toggle" onclick="return toggle('RequestMockBuilder.__call__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.RequestMockBuilder-class.html#__call__">__call__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">,</tt> <tt class="py-param">postproc</tt><tt class="py-op">,</tt> <tt class="py-param">uri</tt><tt class="py-op">,</tt> <tt class="py-param">method</tt><tt class="py-op">=</tt><tt class="py-string">'GET'</tt><tt class="py-op">,</tt> <tt class="py-param">body</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L1411"></a><tt class="py-lineno">1411</tt> <tt class="py-line"> <tt class="py-param">headers</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">methodId</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">resumable</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="RequestMockBuilder.__call__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="RequestMockBuilder.__call__-expanded"><a name="L1412"></a><tt class="py-lineno">1412</tt> <tt class="py-line"> <tt class="py-docstring">"""Implements the callable interface that discovery.build() expects</tt> </tt>
+<a name="L1413"></a><tt class="py-lineno">1413</tt> <tt class="py-line"><tt class="py-docstring"> of requestBuilder, which is to build an object compatible with</tt> </tt>
+<a name="L1414"></a><tt class="py-lineno">1414</tt> <tt class="py-line"><tt class="py-docstring"> HttpRequest.execute(). See that method for the description of the</tt> </tt>
+<a name="L1415"></a><tt class="py-lineno">1415</tt> <tt class="py-line"><tt class="py-docstring"> parameters and the expected response.</tt> </tt>
+<a name="L1416"></a><tt class="py-lineno">1416</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1417"></a><tt class="py-lineno">1417</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">methodId</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">responses</tt><tt class="py-op">:</tt> </tt>
+<a name="L1418"></a><tt class="py-lineno">1418</tt> <tt class="py-line"> <tt id="link-282" class="py-name"><a title="apiclient.model.BaseModel.response
+apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-282', 'response', 'link-253');">response</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">responses</tt><tt class="py-op">[</tt><tt class="py-name">methodId</tt><tt class="py-op">]</tt> </tt>
+<a name="L1419"></a><tt class="py-lineno">1419</tt> <tt class="py-line"> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt id="link-283" class="py-name"><a title="apiclient.model.BaseModel.response
+apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-283', 'response', 'link-253');">response</a></tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> </tt>
+<a name="L1420"></a><tt class="py-lineno">1420</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-284" class="py-name"><a title="apiclient.model.BaseModel.response
+apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-284', 'response', 'link-253');">response</a></tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-number">2</tt><tt class="py-op">:</tt> </tt>
+<a name="L1421"></a><tt class="py-lineno">1421</tt> <tt class="py-line"> <tt class="py-comment"># Test the body against the supplied expected_body.</tt> </tt>
+<a name="L1422"></a><tt class="py-lineno">1422</tt> <tt class="py-line"> <tt class="py-name">expected_body</tt> <tt class="py-op">=</tt> <tt id="link-285" class="py-name"><a title="apiclient.model.BaseModel.response
+apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-285', 'response', 'link-253');">response</a></tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> </tt>
+<a name="L1423"></a><tt class="py-lineno">1423</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">bool</tt><tt class="py-op">(</tt><tt class="py-name">expected_body</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-name">bool</tt><tt class="py-op">(</tt><tt id="link-286" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-286', 'body', 'link-58');">body</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1424"></a><tt class="py-lineno">1424</tt> <tt class="py-line"> <tt class="py-comment"># Not expecting a body and provided one</tt> </tt>
+<a name="L1425"></a><tt class="py-lineno">1425</tt> <tt class="py-line"> <tt class="py-comment"># or expecting a body and not provided one.</tt> </tt>
+<a name="L1426"></a><tt class="py-lineno">1426</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-287" class="py-name"><a title="apiclient.errors.UnexpectedBodyError" class="py-name" href="#" onclick="return doclink('link-287', 'UnexpectedBodyError', 'link-10');">UnexpectedBodyError</a></tt><tt class="py-op">(</tt><tt class="py-name">expected_body</tt><tt class="py-op">,</tt> <tt id="link-288" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-288', 'body', 'link-58');">body</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1427"></a><tt class="py-lineno">1427</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">expected_body</tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1428"></a><tt class="py-lineno">1428</tt> <tt class="py-line"> <tt class="py-name">expected_body</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-289" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-289', 'loads', 'link-23');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">expected_body</tt><tt class="py-op">)</tt> </tt>
+<a name="L1429"></a><tt class="py-lineno">1429</tt> <tt class="py-line"> <tt id="link-290" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-290', 'body', 'link-58');">body</a></tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-291" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-291', 'loads', 'link-23');">loads</a></tt><tt class="py-op">(</tt><tt id="link-292" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-292', 'body', 'link-58');">body</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1430"></a><tt class="py-lineno">1430</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-293" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-293', 'body', 'link-58');">body</a></tt> <tt class="py-op">!=</tt> <tt class="py-name">expected_body</tt><tt class="py-op">:</tt> </tt>
+<a name="L1431"></a><tt class="py-lineno">1431</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-294" class="py-name"><a title="apiclient.errors.UnexpectedBodyError" class="py-name" href="#" onclick="return doclink('link-294', 'UnexpectedBodyError', 'link-10');">UnexpectedBodyError</a></tt><tt class="py-op">(</tt><tt class="py-name">expected_body</tt><tt class="py-op">,</tt> <tt id="link-295" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-295', 'body', 'link-58');">body</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1432"></a><tt class="py-lineno">1432</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-296" class="py-name" targets="Class apiclient.http.HttpRequestMock=apiclient.http.HttpRequestMock-class.html"><a title="apiclient.http.HttpRequestMock" class="py-name" href="#" onclick="return doclink('link-296', 'HttpRequestMock', 'link-296');">HttpRequestMock</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">,</tt> <tt class="py-name">postproc</tt><tt class="py-op">)</tt> </tt>
+<a name="L1433"></a><tt class="py-lineno">1433</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">check_unexpected</tt><tt class="py-op">:</tt> </tt>
+<a name="L1434"></a><tt class="py-lineno">1434</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-297" class="py-name"><a title="apiclient.errors.UnexpectedMethodError" class="py-name" href="#" onclick="return doclink('link-297', 'UnexpectedMethodError', 'link-12');">UnexpectedMethodError</a></tt><tt class="py-op">(</tt><tt class="py-name">methodId</tt><tt class="py-op">=</tt><tt class="py-name">methodId</tt><tt class="py-op">)</tt> </tt>
+<a name="L1435"></a><tt class="py-lineno">1435</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1436"></a><tt class="py-lineno">1436</tt> <tt class="py-line"> <tt id="link-298" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-298', 'model', 'link-13');">model</a></tt> <tt class="py-op">=</tt> <tt id="link-299" class="py-name"><a title="apiclient.model.JsonModel" class="py-name" href="#" onclick="return doclink('link-299', 'JsonModel', 'link-14');">JsonModel</a></tt><tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+<a name="L1437"></a><tt class="py-lineno">1437</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-300" class="py-name"><a title="apiclient.http.HttpRequestMock" class="py-name" href="#" onclick="return doclink('link-300', 'HttpRequestMock', 'link-296');">HttpRequestMock</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-string">'{}'</tt><tt class="py-op">,</tt> <tt id="link-301" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-301', 'model', 'link-13');">model</a></tt><tt class="py-op">.</tt><tt id="link-302" class="py-name"><a title="apiclient.model.BaseModel.response
+apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-302', 'response', 'link-253');">response</a></tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L1438"></a><tt class="py-lineno">1438</tt> <tt class="py-line"> </tt>
+<a name="HttpMock"></a><div id="HttpMock-def"><a name="L1439"></a><tt class="py-lineno">1439</tt> <tt class="py-line"> </tt>
+<a name="L1440"></a><tt class="py-lineno">1440</tt> <a class="py-toggle" href="#" id="HttpMock-toggle" onclick="return toggle('HttpMock');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.http.HttpMock-class.html">HttpMock</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="HttpMock-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="HttpMock-expanded"><a name="L1441"></a><tt class="py-lineno">1441</tt> <tt class="py-line"> <tt class="py-docstring">"""Mock of httplib2.Http"""</tt> </tt>
+<a name="L1442"></a><tt class="py-lineno">1442</tt> <tt class="py-line"> </tt>
+<a name="HttpMock.__init__"></a><div id="HttpMock.__init__-def"><a name="L1443"></a><tt class="py-lineno">1443</tt> <a class="py-toggle" href="#" id="HttpMock.__init__-toggle" onclick="return toggle('HttpMock.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.HttpMock-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">filename</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">headers</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="HttpMock.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpMock.__init__-expanded"><a name="L1444"></a><tt class="py-lineno">1444</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L1445"></a><tt class="py-lineno">1445</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L1446"></a><tt class="py-lineno">1446</tt> <tt class="py-line"><tt class="py-docstring"> filename: string, absolute filename to read response from</tt> </tt>
+<a name="L1447"></a><tt class="py-lineno">1447</tt> <tt class="py-line"><tt class="py-docstring"> headers: dict, header to return with response</tt> </tt>
+<a name="L1448"></a><tt class="py-lineno">1448</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1449"></a><tt class="py-lineno">1449</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">headers</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1450"></a><tt class="py-lineno">1450</tt> <tt class="py-line"> <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'status'</tt><tt class="py-op">:</tt> <tt class="py-string">'200 OK'</tt><tt class="py-op">}</tt> </tt>
+<a name="L1451"></a><tt class="py-lineno">1451</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-303" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
+oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-303', 'filename', 'link-39');">filename</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1452"></a><tt class="py-lineno">1452</tt> <tt class="py-line"> <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt id="link-304" class="py-name" targets="Module oauth2client.file=oauth2client.file-module.html"><a title="oauth2client.file" class="py-name" href="#" onclick="return doclink('link-304', 'file', 'link-304');">file</a></tt><tt class="py-op">(</tt><tt id="link-305" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
+oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-305', 'filename', 'link-39');">filename</a></tt><tt class="py-op">,</tt> <tt class="py-string">'r'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1453"></a><tt class="py-lineno">1453</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-306" class="py-name"><a title="apiclient.http._StreamSlice.read" class="py-name" href="#" onclick="return doclink('link-306', 'read', 'link-36');">read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1454"></a><tt class="py-lineno">1454</tt> <tt class="py-line"> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1455"></a><tt class="py-lineno">1455</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1456"></a><tt class="py-lineno">1456</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1457"></a><tt class="py-lineno">1457</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">response_headers</tt> <tt class="py-op">=</tt> <tt class="py-name">headers</tt> </tt>
+<a name="L1458"></a><tt class="py-lineno">1458</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1459"></a><tt class="py-lineno">1459</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uri</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1460"></a><tt class="py-lineno">1460</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1461"></a><tt class="py-lineno">1461</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-307" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-307', 'body', 'link-58');">body</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1462"></a><tt class="py-lineno">1462</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L1463"></a><tt class="py-lineno">1463</tt> <tt class="py-line"> </tt>
+<a name="L1464"></a><tt class="py-lineno">1464</tt> <tt class="py-line"> </tt>
+<a name="HttpMock.request"></a><div id="HttpMock.request-def"><a name="L1465"></a><tt class="py-lineno">1465</tt> <a class="py-toggle" href="#" id="HttpMock.request-toggle" onclick="return toggle('HttpMock.request');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.HttpMock-class.html#request">request</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">uri</tt><tt class="py-op">,</tt> </tt>
+<a name="L1466"></a><tt class="py-lineno">1466</tt> <tt class="py-line"> <tt class="py-param">method</tt><tt class="py-op">=</tt><tt class="py-string">'GET'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1467"></a><tt class="py-lineno">1467</tt> <tt class="py-line"> <tt class="py-param">body</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L1468"></a><tt class="py-lineno">1468</tt> <tt class="py-line"> <tt class="py-param">headers</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L1469"></a><tt class="py-lineno">1469</tt> <tt class="py-line"> <tt class="py-param">redirections</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> </tt>
+<a name="L1470"></a><tt class="py-lineno">1470</tt> <tt class="py-line"> <tt class="py-param">connection_type</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="HttpMock.request-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpMock.request-expanded"><a name="L1471"></a><tt class="py-lineno">1471</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">uri</tt> <tt class="py-op">=</tt> <tt class="py-name">uri</tt> </tt>
+<a name="L1472"></a><tt class="py-lineno">1472</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt class="py-name">method</tt> </tt>
+<a name="L1473"></a><tt class="py-lineno">1473</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-308" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-308', 'body', 'link-58');">body</a></tt> <tt class="py-op">=</tt> <tt id="link-309" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-309', 'body', 'link-58');">body</a></tt> </tt>
+<a name="L1474"></a><tt class="py-lineno">1474</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-name">headers</tt> </tt>
+<a name="L1475"></a><tt class="py-lineno">1475</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">Response</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">response_headers</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">data</tt> </tt>
+</div></div><a name="L1476"></a><tt class="py-lineno">1476</tt> <tt class="py-line"> </tt>
+<a name="HttpMockSequence"></a><div id="HttpMockSequence-def"><a name="L1477"></a><tt class="py-lineno">1477</tt> <tt class="py-line"> </tt>
+<a name="L1478"></a><tt class="py-lineno">1478</tt> <a class="py-toggle" href="#" id="HttpMockSequence-toggle" onclick="return toggle('HttpMockSequence');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.http.HttpMockSequence-class.html">HttpMockSequence</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="HttpMockSequence-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="HttpMockSequence-expanded"><a name="L1479"></a><tt class="py-lineno">1479</tt> <tt class="py-line"> <tt class="py-docstring">"""Mock of httplib2.Http</tt> </tt>
+<a name="L1480"></a><tt class="py-lineno">1480</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1481"></a><tt class="py-lineno">1481</tt> <tt class="py-line"><tt class="py-docstring"> Mocks a sequence of calls to request returning different responses for each</tt> </tt>
+<a name="L1482"></a><tt class="py-lineno">1482</tt> <tt class="py-line"><tt class="py-docstring"> call. Create an instance initialized with the desired response headers</tt> </tt>
+<a name="L1483"></a><tt class="py-lineno">1483</tt> <tt class="py-line"><tt class="py-docstring"> and content and then use as if an httplib2.Http instance.</tt> </tt>
+<a name="L1484"></a><tt class="py-lineno">1484</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1485"></a><tt class="py-lineno">1485</tt> <tt class="py-line"><tt class="py-docstring"> http = HttpMockSequence([</tt> </tt>
+<a name="L1486"></a><tt class="py-lineno">1486</tt> <tt class="py-line"><tt class="py-docstring"> ({'status': '401'}, ''),</tt> </tt>
+<a name="L1487"></a><tt class="py-lineno">1487</tt> <tt class="py-line"><tt class="py-docstring"> ({'status': '200'}, '{"access_token":"1/3w","expires_in":3600}'),</tt> </tt>
+<a name="L1488"></a><tt class="py-lineno">1488</tt> <tt class="py-line"><tt class="py-docstring"> ({'status': '200'}, 'echo_request_headers'),</tt> </tt>
+<a name="L1489"></a><tt class="py-lineno">1489</tt> <tt class="py-line"><tt class="py-docstring"> ])</tt> </tt>
+<a name="L1490"></a><tt class="py-lineno">1490</tt> <tt class="py-line"><tt class="py-docstring"> resp, content = http.request("http://examples.com")</tt> </tt>
+<a name="L1491"></a><tt class="py-lineno">1491</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1492"></a><tt class="py-lineno">1492</tt> <tt class="py-line"><tt class="py-docstring"> There are special values you can pass in for content to trigger</tt> </tt>
+<a name="L1493"></a><tt class="py-lineno">1493</tt> <tt class="py-line"><tt class="py-docstring"> behavours that are helpful in testing.</tt> </tt>
+<a name="L1494"></a><tt class="py-lineno">1494</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1495"></a><tt class="py-lineno">1495</tt> <tt class="py-line"><tt class="py-docstring"> 'echo_request_headers' means return the request headers in the response body</tt> </tt>
+<a name="L1496"></a><tt class="py-lineno">1496</tt> <tt class="py-line"><tt class="py-docstring"> 'echo_request_headers_as_json' means return the request headers in</tt> </tt>
+<a name="L1497"></a><tt class="py-lineno">1497</tt> <tt class="py-line"><tt class="py-docstring"> the response body</tt> </tt>
+<a name="L1498"></a><tt class="py-lineno">1498</tt> <tt class="py-line"><tt class="py-docstring"> 'echo_request_body' means return the request body in the response body</tt> </tt>
+<a name="L1499"></a><tt class="py-lineno">1499</tt> <tt class="py-line"><tt class="py-docstring"> 'echo_request_uri' means return the request uri in the response body</tt> </tt>
+<a name="L1500"></a><tt class="py-lineno">1500</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1501"></a><tt class="py-lineno">1501</tt> <tt class="py-line"> </tt>
+<a name="HttpMockSequence.__init__"></a><div id="HttpMockSequence.__init__-def"><a name="L1502"></a><tt class="py-lineno">1502</tt> <a class="py-toggle" href="#" id="HttpMockSequence.__init__-toggle" onclick="return toggle('HttpMockSequence.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.HttpMockSequence-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">iterable</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="HttpMockSequence.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpMockSequence.__init__-expanded"><a name="L1503"></a><tt class="py-lineno">1503</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L1504"></a><tt class="py-lineno">1504</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L1505"></a><tt class="py-lineno">1505</tt> <tt class="py-line"><tt class="py-docstring"> iterable: iterable, a sequence of pairs of (headers, body)</tt> </tt>
+<a name="L1506"></a><tt class="py-lineno">1506</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1507"></a><tt class="py-lineno">1507</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_iterable</tt> <tt class="py-op">=</tt> <tt class="py-name">iterable</tt> </tt>
+<a name="L1508"></a><tt class="py-lineno">1508</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">follow_redirects</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+</div><a name="L1509"></a><tt class="py-lineno">1509</tt> <tt class="py-line"> </tt>
+<a name="HttpMockSequence.request"></a><div id="HttpMockSequence.request-def"><a name="L1510"></a><tt class="py-lineno">1510</tt> <a class="py-toggle" href="#" id="HttpMockSequence.request-toggle" onclick="return toggle('HttpMockSequence.request');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http.HttpMockSequence-class.html#request">request</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">uri</tt><tt class="py-op">,</tt> </tt>
+<a name="L1511"></a><tt class="py-lineno">1511</tt> <tt class="py-line"> <tt class="py-param">method</tt><tt class="py-op">=</tt><tt class="py-string">'GET'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1512"></a><tt class="py-lineno">1512</tt> <tt class="py-line"> <tt class="py-param">body</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L1513"></a><tt class="py-lineno">1513</tt> <tt class="py-line"> <tt class="py-param">headers</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L1514"></a><tt class="py-lineno">1514</tt> <tt class="py-line"> <tt class="py-param">redirections</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> </tt>
+<a name="L1515"></a><tt class="py-lineno">1515</tt> <tt class="py-line"> <tt class="py-param">connection_type</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="HttpMockSequence.request-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="HttpMockSequence.request-expanded"><a name="L1516"></a><tt class="py-lineno">1516</tt> <tt class="py-line"> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_iterable</tt><tt class="py-op">.</tt><tt class="py-name">pop</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L1517"></a><tt class="py-lineno">1517</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">content</tt> <tt class="py-op">==</tt> <tt class="py-string">'echo_request_headers'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1518"></a><tt class="py-lineno">1518</tt> <tt class="py-line"> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">headers</tt> </tt>
+<a name="L1519"></a><tt class="py-lineno">1519</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">content</tt> <tt class="py-op">==</tt> <tt class="py-string">'echo_request_headers_as_json'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1520"></a><tt class="py-lineno">1520</tt> <tt class="py-line"> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt class="py-name">dumps</tt><tt class="py-op">(</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
+<a name="L1521"></a><tt class="py-lineno">1521</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">content</tt> <tt class="py-op">==</tt> <tt class="py-string">'echo_request_body'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1522"></a><tt class="py-lineno">1522</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt id="link-310" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-310', 'body', 'link-58');">body</a></tt><tt class="py-op">,</tt> <tt class="py-string">'read'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1523"></a><tt class="py-lineno">1523</tt> <tt class="py-line"> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt id="link-311" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-311', 'body', 'link-58');">body</a></tt><tt class="py-op">.</tt><tt id="link-312" class="py-name"><a title="apiclient.http._StreamSlice.read" class="py-name" href="#" onclick="return doclink('link-312', 'read', 'link-36');">read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1524"></a><tt class="py-lineno">1524</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1525"></a><tt class="py-lineno">1525</tt> <tt class="py-line"> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt id="link-313" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-313', 'body', 'link-58');">body</a></tt> </tt>
+<a name="L1526"></a><tt class="py-lineno">1526</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">content</tt> <tt class="py-op">==</tt> <tt class="py-string">'echo_request_uri'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1527"></a><tt class="py-lineno">1527</tt> <tt class="py-line"> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">uri</tt> </tt>
+<a name="L1528"></a><tt class="py-lineno">1528</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">Response</tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> </tt>
+</div></div><a name="L1529"></a><tt class="py-lineno">1529</tt> <tt class="py-line"> </tt>
+<a name="set_user_agent"></a><div id="set_user_agent-def"><a name="L1530"></a><tt class="py-lineno">1530</tt> <tt class="py-line"> </tt>
+<a name="L1531"></a><tt class="py-lineno">1531</tt> <a class="py-toggle" href="#" id="set_user_agent-toggle" onclick="return toggle('set_user_agent');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http-module.html#set_user_agent">set_user_agent</a><tt class="py-op">(</tt><tt class="py-param">http</tt><tt class="py-op">,</tt> <tt class="py-param">user_agent</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="set_user_agent-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="set_user_agent-expanded"><a name="L1532"></a><tt class="py-lineno">1532</tt> <tt class="py-line"> <tt class="py-docstring">"""Set the user-agent on every request.</tt> </tt>
+<a name="L1533"></a><tt class="py-lineno">1533</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1534"></a><tt class="py-lineno">1534</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L1535"></a><tt class="py-lineno">1535</tt> <tt class="py-line"><tt class="py-docstring"> http - An instance of httplib2.Http</tt> </tt>
+<a name="L1536"></a><tt class="py-lineno">1536</tt> <tt class="py-line"><tt class="py-docstring"> or something that acts like it.</tt> </tt>
+<a name="L1537"></a><tt class="py-lineno">1537</tt> <tt class="py-line"><tt class="py-docstring"> user_agent: string, the value for the user-agent header.</tt> </tt>
+<a name="L1538"></a><tt class="py-lineno">1538</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1539"></a><tt class="py-lineno">1539</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L1540"></a><tt class="py-lineno">1540</tt> <tt class="py-line"><tt class="py-docstring"> A modified instance of http that was passed in.</tt> </tt>
+<a name="L1541"></a><tt class="py-lineno">1541</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1542"></a><tt class="py-lineno">1542</tt> <tt class="py-line"><tt class="py-docstring"> Example:</tt> </tt>
+<a name="L1543"></a><tt class="py-lineno">1543</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1544"></a><tt class="py-lineno">1544</tt> <tt class="py-line"><tt class="py-docstring"> h = httplib2.Http()</tt> </tt>
+<a name="L1545"></a><tt class="py-lineno">1545</tt> <tt class="py-line"><tt class="py-docstring"> h = set_user_agent(h, "my-app-name/6.0")</tt> </tt>
+<a name="L1546"></a><tt class="py-lineno">1546</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1547"></a><tt class="py-lineno">1547</tt> <tt class="py-line"><tt class="py-docstring"> Most of the time the user-agent will be set doing auth, this is for the rare</tt> </tt>
+<a name="L1548"></a><tt class="py-lineno">1548</tt> <tt class="py-line"><tt class="py-docstring"> cases where you are accessing an unauthenticated endpoint.</tt> </tt>
+<a name="L1549"></a><tt class="py-lineno">1549</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1550"></a><tt class="py-lineno">1550</tt> <tt class="py-line"> <tt class="py-name">request_orig</tt> <tt class="py-op">=</tt> <tt id="link-314" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-314', 'http', 'link-72');">http</a></tt><tt class="py-op">.</tt><tt id="link-315" class="py-name"><a title="apiclient.http.HttpMock.request
apiclient.http.HttpMockSequence.request
apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-274', 'request', 'link-67');">request</a></tt> </tt>
-<a name="L1478"></a><tt class="py-lineno">1478</tt> <tt class="py-line"> </tt>
-<a name="L1479"></a><tt class="py-lineno">1479</tt> <tt class="py-line"> <tt class="py-comment"># The closure that will replace 'httplib2.Http.request'.</tt> </tt>
-<a name="L1480"></a><tt class="py-lineno">1480</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">new_request</tt><tt class="py-op">(</tt><tt class="py-param">uri</tt><tt class="py-op">,</tt> <tt class="py-param">method</tt><tt class="py-op">=</tt><tt class="py-string">'GET'</tt><tt class="py-op">,</tt> <tt class="py-param">body</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">headers</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L1481"></a><tt class="py-lineno">1481</tt> <tt class="py-line"> <tt class="py-param">redirections</tt><tt class="py-op">=</tt><tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">DEFAULT_MAX_REDIRECTS</tt><tt class="py-op">,</tt> </tt>
-<a name="L1482"></a><tt class="py-lineno">1482</tt> <tt class="py-line"> <tt class="py-param">connection_type</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1483"></a><tt class="py-lineno">1483</tt> <tt class="py-line"> <tt class="py-docstring">"""Modify the request headers to add the user-agent."""</tt> </tt>
-<a name="L1484"></a><tt class="py-lineno">1484</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">headers</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L1485"></a><tt class="py-lineno">1485</tt> <tt class="py-line"> <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-<a name="L1486"></a><tt class="py-lineno">1486</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'user-agent'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">headers</tt><tt class="py-op">:</tt> </tt>
-<a name="L1487"></a><tt class="py-lineno">1487</tt> <tt class="py-line"> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'user-agent'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">user_agent</tt> <tt class="py-op">+</tt> <tt class="py-string">' '</tt> <tt class="py-op">+</tt> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'user-agent'</tt><tt class="py-op">]</tt> </tt>
-<a name="L1488"></a><tt class="py-lineno">1488</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L1489"></a><tt class="py-lineno">1489</tt> <tt class="py-line"> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'user-agent'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">user_agent</tt> </tt>
-<a name="L1490"></a><tt class="py-lineno">1490</tt> <tt class="py-line"> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">request_orig</tt><tt class="py-op">(</tt><tt class="py-name">uri</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt><tt class="py-op">,</tt> <tt class="py-name">body</tt><tt class="py-op">,</tt> <tt class="py-name">headers</tt><tt class="py-op">,</tt> </tt>
-<a name="L1491"></a><tt class="py-lineno">1491</tt> <tt class="py-line"> <tt class="py-name">redirections</tt><tt class="py-op">,</tt> <tt class="py-name">connection_type</tt><tt class="py-op">)</tt> </tt>
-<a name="L1492"></a><tt class="py-lineno">1492</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> </tt>
-</div><a name="L1493"></a><tt class="py-lineno">1493</tt> <tt class="py-line"> </tt>
-<a name="L1494"></a><tt class="py-lineno">1494</tt> <tt class="py-line"> <tt id="link-275" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-275', 'http', 'link-70');">http</a></tt><tt class="py-op">.</tt><tt id="link-276" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-315', 'request', 'link-68');">request</a></tt> </tt>
+<a name="L1551"></a><tt class="py-lineno">1551</tt> <tt class="py-line"> </tt>
+<a name="L1552"></a><tt class="py-lineno">1552</tt> <tt class="py-line"> <tt class="py-comment"># The closure that will replace 'httplib2.Http.request'.</tt> </tt>
+<a name="L1553"></a><tt class="py-lineno">1553</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">new_request</tt><tt class="py-op">(</tt><tt class="py-param">uri</tt><tt class="py-op">,</tt> <tt class="py-param">method</tt><tt class="py-op">=</tt><tt class="py-string">'GET'</tt><tt class="py-op">,</tt> <tt class="py-param">body</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">headers</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L1554"></a><tt class="py-lineno">1554</tt> <tt class="py-line"> <tt class="py-param">redirections</tt><tt class="py-op">=</tt><tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">DEFAULT_MAX_REDIRECTS</tt><tt class="py-op">,</tt> </tt>
+<a name="L1555"></a><tt class="py-lineno">1555</tt> <tt class="py-line"> <tt class="py-param">connection_type</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1556"></a><tt class="py-lineno">1556</tt> <tt class="py-line"> <tt class="py-docstring">"""Modify the request headers to add the user-agent."""</tt> </tt>
+<a name="L1557"></a><tt class="py-lineno">1557</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">headers</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1558"></a><tt class="py-lineno">1558</tt> <tt class="py-line"> <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L1559"></a><tt class="py-lineno">1559</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'user-agent'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">headers</tt><tt class="py-op">:</tt> </tt>
+<a name="L1560"></a><tt class="py-lineno">1560</tt> <tt class="py-line"> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'user-agent'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">user_agent</tt> <tt class="py-op">+</tt> <tt class="py-string">' '</tt> <tt class="py-op">+</tt> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'user-agent'</tt><tt class="py-op">]</tt> </tt>
+<a name="L1561"></a><tt class="py-lineno">1561</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L1562"></a><tt class="py-lineno">1562</tt> <tt class="py-line"> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'user-agent'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">user_agent</tt> </tt>
+<a name="L1563"></a><tt class="py-lineno">1563</tt> <tt class="py-line"> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">request_orig</tt><tt class="py-op">(</tt><tt class="py-name">uri</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt><tt class="py-op">,</tt> <tt id="link-316" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-316', 'body', 'link-58');">body</a></tt><tt class="py-op">,</tt> <tt class="py-name">headers</tt><tt class="py-op">,</tt> </tt>
+<a name="L1564"></a><tt class="py-lineno">1564</tt> <tt class="py-line"> <tt class="py-name">redirections</tt><tt class="py-op">,</tt> <tt class="py-name">connection_type</tt><tt class="py-op">)</tt> </tt>
+<a name="L1565"></a><tt class="py-lineno">1565</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> </tt>
+</div><a name="L1566"></a><tt class="py-lineno">1566</tt> <tt class="py-line"> </tt>
+<a name="L1567"></a><tt class="py-lineno">1567</tt> <tt class="py-line"> <tt id="link-317" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-317', 'http', 'link-72');">http</a></tt><tt class="py-op">.</tt><tt id="link-318" class="py-name"><a title="apiclient.http.HttpMock.request
apiclient.http.HttpMockSequence.request
apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-276', 'request', 'link-67');">request</a></tt> <tt class="py-op">=</tt> <tt class="py-name">new_request</tt> </tt>
-<a name="L1495"></a><tt class="py-lineno">1495</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-277" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-277', 'http', 'link-70');">http</a></tt> </tt>
-</div><a name="L1496"></a><tt class="py-lineno">1496</tt> <tt class="py-line"> </tt>
-<a name="tunnel_patch"></a><div id="tunnel_patch-def"><a name="L1497"></a><tt class="py-lineno">1497</tt> <tt class="py-line"> </tt>
-<a name="L1498"></a><tt class="py-lineno">1498</tt> <a class="py-toggle" href="#" id="tunnel_patch-toggle" onclick="return toggle('tunnel_patch');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http-module.html#tunnel_patch">tunnel_patch</a><tt class="py-op">(</tt><tt class="py-param">http</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="tunnel_patch-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="tunnel_patch-expanded"><a name="L1499"></a><tt class="py-lineno">1499</tt> <tt class="py-line"> <tt class="py-docstring">"""Tunnel PATCH requests over POST.</tt> </tt>
-<a name="L1500"></a><tt class="py-lineno">1500</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L1501"></a><tt class="py-lineno">1501</tt> <tt class="py-line"><tt class="py-docstring"> http - An instance of httplib2.Http</tt> </tt>
-<a name="L1502"></a><tt class="py-lineno">1502</tt> <tt class="py-line"><tt class="py-docstring"> or something that acts like it.</tt> </tt>
-<a name="L1503"></a><tt class="py-lineno">1503</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1504"></a><tt class="py-lineno">1504</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L1505"></a><tt class="py-lineno">1505</tt> <tt class="py-line"><tt class="py-docstring"> A modified instance of http that was passed in.</tt> </tt>
-<a name="L1506"></a><tt class="py-lineno">1506</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1507"></a><tt class="py-lineno">1507</tt> <tt class="py-line"><tt class="py-docstring"> Example:</tt> </tt>
-<a name="L1508"></a><tt class="py-lineno">1508</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1509"></a><tt class="py-lineno">1509</tt> <tt class="py-line"><tt class="py-docstring"> h = httplib2.Http()</tt> </tt>
-<a name="L1510"></a><tt class="py-lineno">1510</tt> <tt class="py-line"><tt class="py-docstring"> h = tunnel_patch(h, "my-app-name/6.0")</tt> </tt>
-<a name="L1511"></a><tt class="py-lineno">1511</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L1512"></a><tt class="py-lineno">1512</tt> <tt class="py-line"><tt class="py-docstring"> Useful if you are running on a platform that doesn't support PATCH.</tt> </tt>
-<a name="L1513"></a><tt class="py-lineno">1513</tt> <tt class="py-line"><tt class="py-docstring"> Apply this last if you are using OAuth 1.0, as changing the method</tt> </tt>
-<a name="L1514"></a><tt class="py-lineno">1514</tt> <tt class="py-line"><tt class="py-docstring"> will result in a different signature.</tt> </tt>
-<a name="L1515"></a><tt class="py-lineno">1515</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L1516"></a><tt class="py-lineno">1516</tt> <tt class="py-line"> <tt class="py-name">request_orig</tt> <tt class="py-op">=</tt> <tt id="link-278" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-278', 'http', 'link-70');">http</a></tt><tt class="py-op">.</tt><tt id="link-279" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-318', 'request', 'link-68');">request</a></tt> <tt class="py-op">=</tt> <tt class="py-name">new_request</tt> </tt>
+<a name="L1568"></a><tt class="py-lineno">1568</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-319" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-319', 'http', 'link-72');">http</a></tt> </tt>
+</div><a name="L1569"></a><tt class="py-lineno">1569</tt> <tt class="py-line"> </tt>
+<a name="tunnel_patch"></a><div id="tunnel_patch-def"><a name="L1570"></a><tt class="py-lineno">1570</tt> <tt class="py-line"> </tt>
+<a name="L1571"></a><tt class="py-lineno">1571</tt> <a class="py-toggle" href="#" id="tunnel_patch-toggle" onclick="return toggle('tunnel_patch');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.http-module.html#tunnel_patch">tunnel_patch</a><tt class="py-op">(</tt><tt class="py-param">http</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="tunnel_patch-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="tunnel_patch-expanded"><a name="L1572"></a><tt class="py-lineno">1572</tt> <tt class="py-line"> <tt class="py-docstring">"""Tunnel PATCH requests over POST.</tt> </tt>
+<a name="L1573"></a><tt class="py-lineno">1573</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L1574"></a><tt class="py-lineno">1574</tt> <tt class="py-line"><tt class="py-docstring"> http - An instance of httplib2.Http</tt> </tt>
+<a name="L1575"></a><tt class="py-lineno">1575</tt> <tt class="py-line"><tt class="py-docstring"> or something that acts like it.</tt> </tt>
+<a name="L1576"></a><tt class="py-lineno">1576</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1577"></a><tt class="py-lineno">1577</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L1578"></a><tt class="py-lineno">1578</tt> <tt class="py-line"><tt class="py-docstring"> A modified instance of http that was passed in.</tt> </tt>
+<a name="L1579"></a><tt class="py-lineno">1579</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1580"></a><tt class="py-lineno">1580</tt> <tt class="py-line"><tt class="py-docstring"> Example:</tt> </tt>
+<a name="L1581"></a><tt class="py-lineno">1581</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1582"></a><tt class="py-lineno">1582</tt> <tt class="py-line"><tt class="py-docstring"> h = httplib2.Http()</tt> </tt>
+<a name="L1583"></a><tt class="py-lineno">1583</tt> <tt class="py-line"><tt class="py-docstring"> h = tunnel_patch(h, "my-app-name/6.0")</tt> </tt>
+<a name="L1584"></a><tt class="py-lineno">1584</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L1585"></a><tt class="py-lineno">1585</tt> <tt class="py-line"><tt class="py-docstring"> Useful if you are running on a platform that doesn't support PATCH.</tt> </tt>
+<a name="L1586"></a><tt class="py-lineno">1586</tt> <tt class="py-line"><tt class="py-docstring"> Apply this last if you are using OAuth 1.0, as changing the method</tt> </tt>
+<a name="L1587"></a><tt class="py-lineno">1587</tt> <tt class="py-line"><tt class="py-docstring"> will result in a different signature.</tt> </tt>
+<a name="L1588"></a><tt class="py-lineno">1588</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L1589"></a><tt class="py-lineno">1589</tt> <tt class="py-line"> <tt class="py-name">request_orig</tt> <tt class="py-op">=</tt> <tt id="link-320" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-320', 'http', 'link-72');">http</a></tt><tt class="py-op">.</tt><tt id="link-321" class="py-name"><a title="apiclient.http.HttpMock.request
apiclient.http.HttpMockSequence.request
apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-279', 'request', 'link-67');">request</a></tt> </tt>
-<a name="L1517"></a><tt class="py-lineno">1517</tt> <tt class="py-line"> </tt>
-<a name="L1518"></a><tt class="py-lineno">1518</tt> <tt class="py-line"> <tt class="py-comment"># The closure that will replace 'httplib2.Http.request'.</tt> </tt>
-<a name="L1519"></a><tt class="py-lineno">1519</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">new_request</tt><tt class="py-op">(</tt><tt class="py-param">uri</tt><tt class="py-op">,</tt> <tt class="py-param">method</tt><tt class="py-op">=</tt><tt class="py-string">'GET'</tt><tt class="py-op">,</tt> <tt class="py-param">body</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">headers</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L1520"></a><tt class="py-lineno">1520</tt> <tt class="py-line"> <tt class="py-param">redirections</tt><tt class="py-op">=</tt><tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">DEFAULT_MAX_REDIRECTS</tt><tt class="py-op">,</tt> </tt>
-<a name="L1521"></a><tt class="py-lineno">1521</tt> <tt class="py-line"> <tt class="py-param">connection_type</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1522"></a><tt class="py-lineno">1522</tt> <tt class="py-line"> <tt class="py-docstring">"""Modify the request headers to add the user-agent."""</tt> </tt>
-<a name="L1523"></a><tt class="py-lineno">1523</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">headers</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L1524"></a><tt class="py-lineno">1524</tt> <tt class="py-line"> <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-<a name="L1525"></a><tt class="py-lineno">1525</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">method</tt> <tt class="py-op">==</tt> <tt class="py-string">'PATCH'</tt><tt class="py-op">:</tt> </tt>
-<a name="L1526"></a><tt class="py-lineno">1526</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'oauth_token'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">headers</tt><tt class="py-op">.</tt><tt id="link-280" class="py-name"><a title="apiclient.schema.Schemas.get
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-321', 'request', 'link-68');">request</a></tt> </tt>
+<a name="L1590"></a><tt class="py-lineno">1590</tt> <tt class="py-line"> </tt>
+<a name="L1591"></a><tt class="py-lineno">1591</tt> <tt class="py-line"> <tt class="py-comment"># The closure that will replace 'httplib2.Http.request'.</tt> </tt>
+<a name="L1592"></a><tt class="py-lineno">1592</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">new_request</tt><tt class="py-op">(</tt><tt class="py-param">uri</tt><tt class="py-op">,</tt> <tt class="py-param">method</tt><tt class="py-op">=</tt><tt class="py-string">'GET'</tt><tt class="py-op">,</tt> <tt class="py-param">body</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">headers</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L1593"></a><tt class="py-lineno">1593</tt> <tt class="py-line"> <tt class="py-param">redirections</tt><tt class="py-op">=</tt><tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">DEFAULT_MAX_REDIRECTS</tt><tt class="py-op">,</tt> </tt>
+<a name="L1594"></a><tt class="py-lineno">1594</tt> <tt class="py-line"> <tt class="py-param">connection_type</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1595"></a><tt class="py-lineno">1595</tt> <tt class="py-line"> <tt class="py-docstring">"""Modify the request headers to add the user-agent."""</tt> </tt>
+<a name="L1596"></a><tt class="py-lineno">1596</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">headers</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1597"></a><tt class="py-lineno">1597</tt> <tt class="py-line"> <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L1598"></a><tt class="py-lineno">1598</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">method</tt> <tt class="py-op">==</tt> <tt class="py-string">'PATCH'</tt><tt class="py-op">:</tt> </tt>
+<a name="L1599"></a><tt class="py-lineno">1599</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'oauth_token'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">headers</tt><tt class="py-op">.</tt><tt id="link-322" class="py-name"><a title="apiclient.schema.Schemas.get
oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-280', 'get', 'link-90');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'authorization'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1527"></a><tt class="py-lineno">1527</tt> <tt class="py-line"> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt> </tt>
-<a name="L1528"></a><tt class="py-lineno">1528</tt> <tt class="py-line"> <tt class="py-string">'OAuth 1.0 request made with Credentials after tunnel_patch.'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1529"></a><tt class="py-lineno">1529</tt> <tt class="py-line"> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'x-http-method-override'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">"PATCH"</tt> </tt>
-<a name="L1530"></a><tt class="py-lineno">1530</tt> <tt class="py-line"> <tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt class="py-string">'POST'</tt> </tt>
-<a name="L1531"></a><tt class="py-lineno">1531</tt> <tt class="py-line"> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">request_orig</tt><tt class="py-op">(</tt><tt class="py-name">uri</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt><tt class="py-op">,</tt> <tt class="py-name">body</tt><tt class="py-op">,</tt> <tt class="py-name">headers</tt><tt class="py-op">,</tt> </tt>
-<a name="L1532"></a><tt class="py-lineno">1532</tt> <tt class="py-line"> <tt class="py-name">redirections</tt><tt class="py-op">,</tt> <tt class="py-name">connection_type</tt><tt class="py-op">)</tt> </tt>
-<a name="L1533"></a><tt class="py-lineno">1533</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> </tt>
-</div><a name="L1534"></a><tt class="py-lineno">1534</tt> <tt class="py-line"> </tt>
-<a name="L1535"></a><tt class="py-lineno">1535</tt> <tt class="py-line"> <tt id="link-281" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-281', 'http', 'link-70');">http</a></tt><tt class="py-op">.</tt><tt id="link-282" class="py-name"><a title="apiclient.http.HttpMock.request
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-322', 'get', 'link-90');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'authorization'</tt><tt class="py-op">,</tt> <tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1600"></a><tt class="py-lineno">1600</tt> <tt class="py-line"> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt> </tt>
+<a name="L1601"></a><tt class="py-lineno">1601</tt> <tt class="py-line"> <tt class="py-string">'OAuth 1.0 request made with Credentials after tunnel_patch.'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1602"></a><tt class="py-lineno">1602</tt> <tt class="py-line"> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'x-http-method-override'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">"PATCH"</tt> </tt>
+<a name="L1603"></a><tt class="py-lineno">1603</tt> <tt class="py-line"> <tt class="py-name">method</tt> <tt class="py-op">=</tt> <tt class="py-string">'POST'</tt> </tt>
+<a name="L1604"></a><tt class="py-lineno">1604</tt> <tt class="py-line"> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">request_orig</tt><tt class="py-op">(</tt><tt class="py-name">uri</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt><tt class="py-op">,</tt> <tt id="link-323" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-323', 'body', 'link-58');">body</a></tt><tt class="py-op">,</tt> <tt class="py-name">headers</tt><tt class="py-op">,</tt> </tt>
+<a name="L1605"></a><tt class="py-lineno">1605</tt> <tt class="py-line"> <tt class="py-name">redirections</tt><tt class="py-op">,</tt> <tt class="py-name">connection_type</tt><tt class="py-op">)</tt> </tt>
+<a name="L1606"></a><tt class="py-lineno">1606</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> </tt>
+</div><a name="L1607"></a><tt class="py-lineno">1607</tt> <tt class="py-line"> </tt>
+<a name="L1608"></a><tt class="py-lineno">1608</tt> <tt class="py-line"> <tt id="link-324" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-324', 'http', 'link-72');">http</a></tt><tt class="py-op">.</tt><tt id="link-325" class="py-name"><a title="apiclient.http.HttpMock.request
apiclient.http.HttpMockSequence.request
apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-282', 'request', 'link-67');">request</a></tt> <tt class="py-op">=</tt> <tt class="py-name">new_request</tt> </tt>
-<a name="L1536"></a><tt class="py-lineno">1536</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-283" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-283', 'http', 'link-70');">http</a></tt> </tt>
-</div><a name="L1537"></a><tt class="py-lineno">1537</tt> <tt class="py-line"> </tt><script type="text/javascript">
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-325', 'request', 'link-68');">request</a></tt> <tt class="py-op">=</tt> <tt class="py-name">new_request</tt> </tt>
+<a name="L1609"></a><tt class="py-lineno">1609</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-326" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-326', 'http', 'link-72');">http</a></tt> </tt>
+</div><a name="L1610"></a><tt class="py-lineno">1610</tt> <tt class="py-line"> </tt><script type="text/javascript">
<!--
expandto(location.href);
// -->
@@ -2071,7 +2132,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:26 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:47 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.http.BatchHttpRequest-class.html b/docs/epy/apiclient.http.BatchHttpRequest-class.html
index f1500f7..f7bcadd 100644
--- a/docs/epy/apiclient.http.BatchHttpRequest-class.html
+++ b/docs/epy/apiclient.http.BatchHttpRequest-class.html
@@ -55,10 +55,13 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class BatchHttpRequest</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.http-pysrc.html#BatchHttpRequest">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_batchhttpr" name="class_hierarchy_for_batchhttpr">
-<area shape="rect" id="node1" href="apiclient.http.BatchHttpRequest-class.html" title="BatchHttpRequest" alt="" coords="5,6,136,34"/>
+<center> <map id="uml_class_diagram_for_apiclien_19" name="uml_class_diagram_for_apiclien_19">
+<area shape="rect" id="node61" href="apiclient.http.BatchHttpRequest-class.html#__init__" title="Constructor for a BatchHttpRequest." alt="" coords="17,39,328,57"/>
+<area shape="rect" id="node61" href="apiclient.http.BatchHttpRequest-class.html#add" title="Add a new request." alt="" coords="17,57,328,76"/>
+<area shape="rect" id="node61" href="apiclient.http.BatchHttpRequest-class.html#execute" title="Execute all the requests as a single batched HTTP request." alt="" coords="17,76,328,95"/>
+<area shape="rect" id="node1" href="apiclient.http.BatchHttpRequest-class.html" title="Batches multiple HttpRequest objects into a single HTTP request." alt="" coords="5,6,339,101"/>
</map>
- <img src="class_hierarchy_for_batchhttpr.gif" alt='' usemap="#class_hierarchy_for_batchhttpr" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_apiclien_19.gif" alt='' usemap="#uml_class_diagram_for_apiclien_19" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -731,7 +734,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:23 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:43 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.http.HttpMock-class.html b/docs/epy/apiclient.http.HttpMock-class.html
index 8ccde33..d044b8b 100644
--- a/docs/epy/apiclient.http.HttpMock-class.html
+++ b/docs/epy/apiclient.http.HttpMock-class.html
@@ -55,10 +55,12 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class HttpMock</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.http-pysrc.html#HttpMock">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_httpmock" name="class_hierarchy_for_httpmock">
-<area shape="rect" id="node1" href="apiclient.http.HttpMock-class.html" title="HttpMock" alt="" coords="5,6,83,34"/>
+<center> <map id="uml_class_diagram_for_apiclien_20" name="uml_class_diagram_for_apiclien_20">
+<area shape="rect" id="node62" href="apiclient.http.HttpMock-class.html#__init__" title="Args:..." alt="" coords="17,39,611,57"/>
+<area shape="rect" id="node62" href="apiclient.http.HttpMock-class.html#request" title="apiclient.http.HttpMock.request" alt="" coords="17,57,611,76"/>
+<area shape="rect" id="node1" href="apiclient.http.HttpMock-class.html" title="Mock of httplib2.Http" alt="" coords="5,6,621,82"/>
</map>
- <img src="class_hierarchy_for_httpmock.gif" alt='' usemap="#class_hierarchy_for_httpmock" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_apiclien_20.gif" alt='' usemap="#uml_class_diagram_for_apiclien_20" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -242,7 +244,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:23 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:43 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.http.HttpMockSequence-class.html b/docs/epy/apiclient.http.HttpMockSequence-class.html
index bce8435..af2bdf3 100644
--- a/docs/epy/apiclient.http.HttpMockSequence-class.html
+++ b/docs/epy/apiclient.http.HttpMockSequence-class.html
@@ -55,10 +55,12 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class HttpMockSequence</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.http-pysrc.html#HttpMockSequence">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_httpmockse" name="class_hierarchy_for_httpmockse">
-<area shape="rect" id="node1" href="apiclient.http.HttpMockSequence-class.html" title="HttpMockSequence" alt="" coords="5,6,141,34"/>
+<center> <map id="uml_class_diagram_for_apiclien_21" name="uml_class_diagram_for_apiclien_21">
+<area shape="rect" id="node63" href="apiclient.http.HttpMockSequence-class.html#__init__" title="Args:..." alt="" coords="17,39,611,57"/>
+<area shape="rect" id="node63" href="apiclient.http.HttpMockSequence-class.html#request" title="apiclient.http.HttpMockSequence.request" alt="" coords="17,57,611,76"/>
+<area shape="rect" id="node1" href="apiclient.http.HttpMockSequence-class.html" title="Mock of httplib2.Http" alt="" coords="5,6,621,82"/>
</map>
- <img src="class_hierarchy_for_httpmockse.gif" alt='' usemap="#class_hierarchy_for_httpmockse" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_apiclien_21.gif" alt='' usemap="#uml_class_diagram_for_apiclien_21" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -259,7 +261,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:23 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:43 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.http.HttpRequest-class.html b/docs/epy/apiclient.http.HttpRequest-class.html
index 5f1d48a..ed0be6c 100644
--- a/docs/epy/apiclient.http.HttpRequest-class.html
+++ b/docs/epy/apiclient.http.HttpRequest-class.html
@@ -55,10 +55,16 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class HttpRequest</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.http-pysrc.html#HttpRequest">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_httpreques" name="class_hierarchy_for_httpreques">
-<area shape="rect" id="node1" href="apiclient.http.HttpRequest-class.html" title="HttpRequest" alt="" coords="5,6,101,34"/>
+<center> <map id="uml_class_diagram_for_apiclien_22" name="uml_class_diagram_for_apiclien_22">
+<area shape="rect" id="node64" href="apiclient.http.HttpRequest-class.html#__init__" title="Constructor for an HttpRequest." alt="" coords="17,39,677,57"/>
+<area shape="rect" id="node64" href="apiclient.http.HttpRequest-class.html#execute" title="Execute the request." alt="" coords="17,57,677,76"/>
+<area shape="rect" id="node64" href="apiclient.http.HttpRequest-class.html#add_response_callback" title="add_response_headers_callback" alt="" coords="17,76,677,95"/>
+<area shape="rect" id="node64" href="apiclient.http.HttpRequest-class.html#next_chunk" title="Execute the next step of a resumable upload." alt="" coords="17,95,677,113"/>
+<area shape="rect" id="node64" href="apiclient.http.HttpRequest-class.html#to_json" title="Returns a JSON representation of the HttpRequest." alt="" coords="17,113,677,132"/>
+<area shape="rect" id="node64" href="apiclient.http.HttpRequest-class.html#from_json" title="Returns an HttpRequest populated with info from a JSON object." alt="" coords="17,132,677,151"/>
+<area shape="rect" id="node1" href="apiclient.http.HttpRequest-class.html" title="Encapsulates a single HTTP request." alt="" coords="5,6,688,157"/>
</map>
- <img src="class_hierarchy_for_httpreques.gif" alt='' usemap="#class_hierarchy_for_httpreques" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_apiclien_22.gif" alt='' usemap="#uml_class_diagram_for_apiclien_22" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -116,7 +122,8 @@
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a href="apiclient.http.HttpRequest-class.html#execute" class="summary-sig-name">execute</a>(<span class="summary-sig-arg">self</span>,
- <span class="summary-sig-arg">http</span>=<span class="summary-sig-default">None</span>)</span><br />
+ <span class="summary-sig-arg">http</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">num_retries</span>=<span class="summary-sig-default">0</span>)</span><br />
Execute the request.</td>
<td align="right" valign="top">
<span class="codelink"><a href="apiclient.http-pysrc.html#HttpRequest.execute">source code</a></span>
@@ -152,7 +159,8 @@
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
<td><span class="summary-sig"><a href="apiclient.http.HttpRequest-class.html#next_chunk" class="summary-sig-name">next_chunk</a>(<span class="summary-sig-arg">self</span>,
- <span class="summary-sig-arg">http</span>=<span class="summary-sig-default">None</span>)</span><br />
+ <span class="summary-sig-arg">http</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">num_retries</span>=<span class="summary-sig-default">0</span>)</span><br />
Execute the next step of a resumable upload.</td>
<td align="right" valign="top">
<span class="codelink"><a href="apiclient.http-pysrc.html#HttpRequest.next_chunk">source code</a></span>
@@ -356,7 +364,8 @@
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td>
<h3 class="epydoc"><span class="sig"><span class="sig-name">execute</span>(<span class="sig-arg">self</span>,
- <span class="sig-arg">http</span>=<span class="sig-default">None</span>)</span>
+ <span class="sig-arg">http</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">num_retries</span>=<span class="sig-default">0</span>)</span>
</h3>
</td><td align="right" valign="top"
><span class="codelink"><a href="apiclient.http-pysrc.html#HttpRequest.execute">source code</a></span>
@@ -369,6 +378,10 @@
Args:
http: httplib2.Http, an http object to be used in place of the
one the HttpRequest request object was constructed with.
+ num_retries: Integer, number of times to retry 500's with randomized
+ exponential backoff. If all retries fail, the raised HttpError
+ represents the last request. If zero (default), we attempt the
+ request only once.
Returns:
A deserialized object model of the response body as determined
@@ -428,7 +441,8 @@
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td>
<h3 class="epydoc"><span class="sig"><span class="sig-name">next_chunk</span>(<span class="sig-arg">self</span>,
- <span class="sig-arg">http</span>=<span class="sig-default">None</span>)</span>
+ <span class="sig-arg">http</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">num_retries</span>=<span class="sig-default">0</span>)</span>
</h3>
</td><td align="right" valign="top"
><span class="codelink"><a href="apiclient.http-pysrc.html#HttpRequest.next_chunk">source code</a></span>
@@ -457,6 +471,14 @@
print "Upload %d%% complete." % int(status.progress() * 100)
+Args:
+ http: httplib2.Http, an http object to be used in place of the
+ one the HttpRequest request object was constructed with.
+ num_retries: Integer, number of times to retry 500's with randomized
+ exponential backoff. If all retries fail, the raised HttpError
+ represents the last request. If zero (default), we attempt the
+ request only once.
+
Returns:
(status, body): (ResumableMediaStatus, object)
The body will be None until the resumable media is fully uploaded.
@@ -533,7 +555,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:23 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:43 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.http.HttpRequestMock-class.html b/docs/epy/apiclient.http.HttpRequestMock-class.html
index 5248a2b..4798e43 100644
--- a/docs/epy/apiclient.http.HttpRequestMock-class.html
+++ b/docs/epy/apiclient.http.HttpRequestMock-class.html
@@ -55,10 +55,12 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class HttpRequestMock</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.http-pysrc.html#HttpRequestMock">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_httpreques_2" name="class_hierarchy_for_httpreques_2">
-<area shape="rect" id="node1" href="apiclient.http.HttpRequestMock-class.html" title="HttpRequestMock" alt="" coords="5,6,133,34"/>
+<center> <map id="uml_class_diagram_for_apiclien_23" name="uml_class_diagram_for_apiclien_23">
+<area shape="rect" id="node65" href="apiclient.http.HttpRequestMock-class.html#__init__" title="Constructor for HttpRequestMock" alt="" coords="17,39,241,57"/>
+<area shape="rect" id="node65" href="apiclient.http.HttpRequestMock-class.html#execute" title="Execute the request." alt="" coords="17,57,241,76"/>
+<area shape="rect" id="node1" href="apiclient.http.HttpRequestMock-class.html" title="Mock of HttpRequest." alt="" coords="5,6,253,82"/>
</map>
- <img src="class_hierarchy_for_httpreques_2.gif" alt='' usemap="#class_hierarchy_for_httpreques_2" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_apiclien_23.gif" alt='' usemap="#uml_class_diagram_for_apiclien_23" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -271,7 +273,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:23 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:43 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.http.MediaDownloadProgress-class.html b/docs/epy/apiclient.http.MediaDownloadProgress-class.html
index ad7eb67..3389700 100644
--- a/docs/epy/apiclient.http.MediaDownloadProgress-class.html
+++ b/docs/epy/apiclient.http.MediaDownloadProgress-class.html
@@ -55,10 +55,12 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class MediaDownloadProgress</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.http-pysrc.html#MediaDownloadProgress">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_mediadownl" name="class_hierarchy_for_mediadownl">
-<area shape="rect" id="node1" href="apiclient.http.MediaDownloadProgress-class.html" title="MediaDownloadProgress" alt="" coords="5,6,171,34"/>
+<center> <map id="uml_class_diagram_for_apiclien_24" name="uml_class_diagram_for_apiclien_24">
+<area shape="rect" id="node66" href="apiclient.http.MediaDownloadProgress-class.html#__init__" title="Constructor." alt="" coords="17,39,288,57"/>
+<area shape="rect" id="node66" href="apiclient.http.MediaDownloadProgress-class.html#progress" title="Percent of download completed, as a float." alt="" coords="17,57,288,76"/>
+<area shape="rect" id="node1" href="apiclient.http.MediaDownloadProgress-class.html" title="Status of a resumable download." alt="" coords="5,6,299,82"/>
</map>
- <img src="class_hierarchy_for_mediadownl.gif" alt='' usemap="#class_hierarchy_for_mediadownl" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_apiclien_24.gif" alt='' usemap="#uml_class_diagram_for_apiclien_24" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -264,7 +266,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:23 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:43 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.http.MediaFileUpload-class.html b/docs/epy/apiclient.http.MediaFileUpload-class.html
index f5171d1..9af3498 100644
--- a/docs/epy/apiclient.http.MediaFileUpload-class.html
+++ b/docs/epy/apiclient.http.MediaFileUpload-class.html
@@ -55,12 +55,23 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class MediaFileUpload</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.http-pysrc.html#MediaFileUpload">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_mediafileu" name="class_hierarchy_for_mediafileu">
-<area shape="rect" id="node1" href="apiclient.http.MediaFileUpload-class.html" title="MediaFileUpload" alt="" coords="5,6,123,34"/>
-<area shape="rect" id="node2" href="apiclient.http.MediaIoBaseUpload-class.html" title="MediaIoBaseUpload" alt="" coords="147,6,285,34"/>
-<area shape="rect" id="node3" href="apiclient.http.MediaUpload-class.html" title="MediaUpload" alt="" coords="309,6,408,34"/>
+<center> <map id="uml_class_diagram_for_apiclien_25" name="uml_class_diagram_for_apiclien_25">
+<area shape="rect" id="node67" href="apiclient.http.MediaFileUpload-class.html#__init__" title="Constructor." alt="" coords="17,305,597,324"/>
+<area shape="rect" id="node67" href="apiclient.http.MediaFileUpload-class.html#to_json" title="Creating a JSON representation of an instance of MediaFileUpload." alt="" coords="17,324,597,343"/>
+<area shape="rect" id="node67" href="apiclient.http.MediaFileUpload-class.html#from_json" title="apiclient.http.MediaFileUpload.from_json" alt="" coords="17,343,597,361"/>
+<area shape="rect" id="node1" href="apiclient.http.MediaFileUpload-class.html" title="A MediaUpload for a file." alt="" coords="5,273,608,367"/>
+<area shape="rect" id="node68" href="apiclient.http.MediaIoBaseUpload-class.html#chunksize" title="Chunk size for resumable uploads." alt="" coords="224,116,392,135"/>
+<area shape="rect" id="node68" href="apiclient.http.MediaIoBaseUpload-class.html#mimetype" title="Mime type of the body." alt="" coords="224,135,392,153"/>
+<area shape="rect" id="node68" href="apiclient.http.MediaIoBaseUpload-class.html#size" title="Size of upload." alt="" coords="224,153,392,172"/>
+<area shape="rect" id="node68" href="apiclient.http.MediaIoBaseUpload-class.html#resumable" title="Whether this upload is resumable." alt="" coords="224,172,392,191"/>
+<area shape="rect" id="node68" href="apiclient.http.MediaIoBaseUpload-class.html#getbytes" title="Get bytes from the media." alt="" coords="224,191,392,209"/>
+<area shape="rect" id="node68" href="apiclient.http.MediaIoBaseUpload-class.html#has_stream" title="Does the underlying upload support a streaming interface." alt="" coords="224,209,392,228"/>
+<area shape="rect" id="node68" href="apiclient.http.MediaIoBaseUpload-class.html#stream" title="A stream interface to the data being uploaded." alt="" coords="224,228,392,247"/>
+<area shape="rect" id="node2" href="apiclient.http.MediaIoBaseUpload-class.html" title="A MediaUpload for a io.Base objects." alt="" coords="212,83,404,253"/>
+<area shape="rect" id="node69" href="apiclient.http.MediaUpload-class.html#new_from_json" title="Utility class method to instantiate a MediaUpload subclass from a JSON representation produced by to_json()." alt="" coords="240,39,376,57"/>
+<area shape="rect" id="node3" href="apiclient.http.MediaUpload-class.html" title="Describes a media object to upload." alt="" coords="228,6,388,63"/>
</map>
- <img src="class_hierarchy_for_mediafileu.gif" alt='' usemap="#class_hierarchy_for_mediafileu" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_apiclien_25.gif" alt='' usemap="#uml_class_diagram_for_apiclien_25" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -375,7 +386,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:23 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:43 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.http.MediaInMemoryUpload-class.html b/docs/epy/apiclient.http.MediaInMemoryUpload-class.html
index 264313f..b0d5ecd 100644
--- a/docs/epy/apiclient.http.MediaInMemoryUpload-class.html
+++ b/docs/epy/apiclient.http.MediaInMemoryUpload-class.html
@@ -55,12 +55,22 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class MediaInMemoryUpload</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.http-pysrc.html#MediaInMemoryUpload">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_mediainmem" name="class_hierarchy_for_mediainmem">
-<area shape="rect" id="node1" href="apiclient.http.MediaInMemoryUpload-class.html" title="MediaInMemoryUpload" alt="" coords="5,6,160,34"/>
-<area shape="rect" id="node2" href="apiclient.http.MediaIoBaseUpload-class.html" title="MediaIoBaseUpload" alt="" coords="184,6,323,34"/>
-<area shape="rect" id="node3" href="apiclient.http.MediaUpload-class.html" title="MediaUpload" alt="" coords="347,6,445,34"/>
+<center> <map id="uml_class_diagram_for_apiclien_26" name="uml_class_diagram_for_apiclien_26">
+<area shape="rect" id="node70" href="apiclient.http.MediaInMemoryUpload-class.html#__init__" title="Create a new MediaInMemoryUpload." alt="" coords="17,324,689,343"/>
+<area shape="rect" id="node1" href="apiclient.http.MediaInMemoryUpload-class.html" title="MediaUpload for a chunk of bytes." alt="" coords="5,291,701,349"/>
+<area shape="rect" id="node71" href="apiclient.http.MediaIoBaseUpload-class.html#chunksize" title="Chunk size for resumable uploads." alt="" coords="269,116,437,135"/>
+<area shape="rect" id="node71" href="apiclient.http.MediaIoBaseUpload-class.html#mimetype" title="Mime type of the body." alt="" coords="269,135,437,153"/>
+<area shape="rect" id="node71" href="apiclient.http.MediaIoBaseUpload-class.html#size" title="Size of upload." alt="" coords="269,153,437,172"/>
+<area shape="rect" id="node71" href="apiclient.http.MediaIoBaseUpload-class.html#resumable" title="Whether this upload is resumable." alt="" coords="269,172,437,191"/>
+<area shape="rect" id="node71" href="apiclient.http.MediaIoBaseUpload-class.html#getbytes" title="Get bytes from the media." alt="" coords="269,191,437,209"/>
+<area shape="rect" id="node71" href="apiclient.http.MediaIoBaseUpload-class.html#has_stream" title="Does the underlying upload support a streaming interface." alt="" coords="269,209,437,228"/>
+<area shape="rect" id="node71" href="apiclient.http.MediaIoBaseUpload-class.html#stream" title="A stream interface to the data being uploaded." alt="" coords="269,228,437,247"/>
+<area shape="rect" id="node71" href="apiclient.http.MediaIoBaseUpload-class.html#to_json" title="This upload type is not serializable." alt="" coords="269,247,437,265"/>
+<area shape="rect" id="node2" href="apiclient.http.MediaIoBaseUpload-class.html" title="A MediaUpload for a io.Base objects." alt="" coords="257,83,449,271"/>
+<area shape="rect" id="node72" href="apiclient.http.MediaUpload-class.html#new_from_json" title="Utility class method to instantiate a MediaUpload subclass from a JSON representation produced by to_json()." alt="" coords="285,39,421,57"/>
+<area shape="rect" id="node3" href="apiclient.http.MediaUpload-class.html" title="Describes a media object to upload." alt="" coords="273,6,433,63"/>
</map>
- <img src="class_hierarchy_for_mediainmem.gif" alt='' usemap="#class_hierarchy_for_mediainmem" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_apiclien_26.gif" alt='' usemap="#uml_class_diagram_for_apiclien_26" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -281,7 +291,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:23 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:43 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.http.MediaIoBaseDownload-class.html b/docs/epy/apiclient.http.MediaIoBaseDownload-class.html
index eb6cc24..fb7662e 100644
--- a/docs/epy/apiclient.http.MediaIoBaseDownload-class.html
+++ b/docs/epy/apiclient.http.MediaIoBaseDownload-class.html
@@ -55,10 +55,12 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class MediaIoBaseDownload</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.http-pysrc.html#MediaIoBaseDownload">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_mediaiobas" name="class_hierarchy_for_mediaiobas">
-<area shape="rect" id="node1" href="apiclient.http.MediaIoBaseDownload-class.html" title="MediaIoBaseDownload" alt="" coords="5,6,160,34"/>
+<center> <map id="uml_class_diagram_for_apiclien_27" name="uml_class_diagram_for_apiclien_27">
+<area shape="rect" id="node73" href="apiclient.http.MediaIoBaseDownload-class.html#__init__" title="Constructor." alt="" coords="17,39,397,57"/>
+<area shape="rect" id="node73" href="apiclient.http.MediaIoBaseDownload-class.html#next_chunk" title="Get the next chunk of the download." alt="" coords="17,57,397,76"/>
+<area shape="rect" id="node1" href="apiclient.http.MediaIoBaseDownload-class.html" title=""Download media resources." alt="" coords="5,6,408,82"/>
</map>
- <img src="class_hierarchy_for_mediaiobas.gif" alt='' usemap="#class_hierarchy_for_mediaiobas" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_apiclien_27.gif" alt='' usemap="#uml_class_diagram_for_apiclien_27" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -126,7 +128,8 @@
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
- <td><span class="summary-sig"><a href="apiclient.http.MediaIoBaseDownload-class.html#next_chunk" class="summary-sig-name">next_chunk</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ <td><span class="summary-sig"><a href="apiclient.http.MediaIoBaseDownload-class.html#next_chunk" class="summary-sig-name">next_chunk</a>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">num_retries</span>=<span class="summary-sig-default">0</span>)</span><br />
Get the next chunk of the download.</td>
<td align="right" valign="top">
<span class="codelink"><a href="apiclient.http-pysrc.html#MediaIoBaseDownload.next_chunk">source code</a></span>
@@ -246,7 +249,8 @@
<tr><td>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td>
- <h3 class="epydoc"><span class="sig"><span class="sig-name">next_chunk</span>(<span class="sig-arg">self</span>)</span>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">next_chunk</span>(<span class="sig-arg">self</span>,
+ <span class="sig-arg">num_retries</span>=<span class="sig-default">0</span>)</span>
</h3>
</td><td align="right" valign="top"
><span class="codelink"><a href="apiclient.http-pysrc.html#MediaIoBaseDownload.next_chunk">source code</a></span>
@@ -256,6 +260,12 @@
<pre class="literalblock">
Get the next chunk of the download.
+Args:
+ num_retries: Integer, number of times to retry 500's with randomized
+ exponential backoff. If all retries fail, the raised HttpError
+ represents the last request. If zero (default), we attempt the
+ request only once.
+
Returns:
(status, done): (MediaDownloadStatus, boolean)
The value of 'done' will be True when the media has been fully
@@ -267,6 +277,10 @@
</pre>
<dl class="fields">
+ <dt>Decorators:</dt>
+ <dd><ul class="nomargin-top">
+ <li><code>@util.positional(1)</code></li>
+ </ul></dd>
</dl>
</td></tr></table>
</div>
@@ -294,7 +308,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:23 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:44 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.http.MediaIoBaseUpload-class.html b/docs/epy/apiclient.http.MediaIoBaseUpload-class.html
index 715c7d6..251672f 100644
--- a/docs/epy/apiclient.http.MediaIoBaseUpload-class.html
+++ b/docs/epy/apiclient.http.MediaIoBaseUpload-class.html
@@ -55,11 +55,21 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class MediaIoBaseUpload</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.http-pysrc.html#MediaIoBaseUpload">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_mediaiobas_2" name="class_hierarchy_for_mediaiobas_2">
-<area shape="rect" id="node1" href="apiclient.http.MediaIoBaseUpload-class.html" title="MediaIoBaseUpload" alt="" coords="5,6,144,34"/>
-<area shape="rect" id="node2" href="apiclient.http.MediaUpload-class.html" title="MediaUpload" alt="" coords="168,6,267,34"/>
+<center> <map id="uml_class_diagram_for_apiclien_28" name="uml_class_diagram_for_apiclien_28">
+<area shape="rect" id="node74" href="apiclient.http.MediaIoBaseUpload-class.html#__init__" title="Constructor." alt="" coords="17,116,520,135"/>
+<area shape="rect" id="node74" href="apiclient.http.MediaIoBaseUpload-class.html#chunksize" title="Chunk size for resumable uploads." alt="" coords="17,135,520,153"/>
+<area shape="rect" id="node74" href="apiclient.http.MediaIoBaseUpload-class.html#mimetype" title="Mime type of the body." alt="" coords="17,153,520,172"/>
+<area shape="rect" id="node74" href="apiclient.http.MediaIoBaseUpload-class.html#size" title="Size of upload." alt="" coords="17,172,520,191"/>
+<area shape="rect" id="node74" href="apiclient.http.MediaIoBaseUpload-class.html#resumable" title="Whether this upload is resumable." alt="" coords="17,191,520,209"/>
+<area shape="rect" id="node74" href="apiclient.http.MediaIoBaseUpload-class.html#getbytes" title="Get bytes from the media." alt="" coords="17,209,520,228"/>
+<area shape="rect" id="node74" href="apiclient.http.MediaIoBaseUpload-class.html#has_stream" title="Does the underlying upload support a streaming interface." alt="" coords="17,228,520,247"/>
+<area shape="rect" id="node74" href="apiclient.http.MediaIoBaseUpload-class.html#stream" title="A stream interface to the data being uploaded." alt="" coords="17,247,520,265"/>
+<area shape="rect" id="node74" href="apiclient.http.MediaIoBaseUpload-class.html#to_json" title="This upload type is not serializable." alt="" coords="17,265,520,284"/>
+<area shape="rect" id="node1" href="apiclient.http.MediaIoBaseUpload-class.html" title="A MediaUpload for a io.Base objects." alt="" coords="5,83,531,290"/>
+<area shape="rect" id="node75" href="apiclient.http.MediaUpload-class.html#new_from_json" title="Utility class method to instantiate a MediaUpload subclass from a JSON representation produced by to_json()." alt="" coords="201,39,337,57"/>
+<area shape="rect" id="node2" href="apiclient.http.MediaUpload-class.html" title="Describes a media object to upload." alt="" coords="189,6,349,63"/>
</map>
- <img src="class_hierarchy_for_mediaiobas_2.gif" alt='' usemap="#class_hierarchy_for_mediaiobas_2" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_apiclien_28.gif" alt='' usemap="#uml_class_diagram_for_apiclien_28" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -658,7 +668,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:23 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:44 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.http.MediaUpload-class.html b/docs/epy/apiclient.http.MediaUpload-class.html
index 7860a1f..dac73b9 100644
--- a/docs/epy/apiclient.http.MediaUpload-class.html
+++ b/docs/epy/apiclient.http.MediaUpload-class.html
@@ -55,10 +55,19 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class MediaUpload</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.http-pysrc.html#MediaUpload">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_mediauploa_2" name="class_hierarchy_for_mediauploa_2">
-<area shape="rect" id="node1" href="apiclient.http.MediaUpload-class.html" title="MediaUpload" alt="" coords="5,6,104,34"/>
+<center> <map id="uml_class_diagram_for_apiclien_29" name="uml_class_diagram_for_apiclien_29">
+<area shape="rect" id="node76" href="apiclient.http.MediaUpload-class.html#chunksize" title="Chunk size for resumable uploads." alt="" coords="17,39,172,57"/>
+<area shape="rect" id="node76" href="apiclient.http.MediaUpload-class.html#mimetype" title="Mime type of the body." alt="" coords="17,57,172,76"/>
+<area shape="rect" id="node76" href="apiclient.http.MediaUpload-class.html#size" title="Size of upload." alt="" coords="17,76,172,95"/>
+<area shape="rect" id="node76" href="apiclient.http.MediaUpload-class.html#resumable" title="Whether this upload is resumable." alt="" coords="17,95,172,113"/>
+<area shape="rect" id="node76" href="apiclient.http.MediaUpload-class.html#getbytes" title="Get bytes from the media." alt="" coords="17,113,172,132"/>
+<area shape="rect" id="node76" href="apiclient.http.MediaUpload-class.html#has_stream" title="Does the underlying upload support a streaming interface." alt="" coords="17,132,172,151"/>
+<area shape="rect" id="node76" href="apiclient.http.MediaUpload-class.html#stream" title="A stream interface to the data being uploaded." alt="" coords="17,151,172,169"/>
+<area shape="rect" id="node76" href="apiclient.http.MediaUpload-class.html#to_json" title="Create a JSON representation of an instance of MediaUpload." alt="" coords="17,169,172,188"/>
+<area shape="rect" id="node76" href="apiclient.http.MediaUpload-class.html#new_from_json" title="Utility class method to instantiate a MediaUpload subclass from a JSON representation produced by to_json()." alt="" coords="17,188,172,207"/>
+<area shape="rect" id="node1" href="apiclient.http.MediaUpload-class.html" title="Describes a media object to upload." alt="" coords="5,6,184,213"/>
</map>
- <img src="class_hierarchy_for_mediauploa_2.gif" alt='' usemap="#class_hierarchy_for_mediauploa_2" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_apiclien_29.gif" alt='' usemap="#uml_class_diagram_for_apiclien_29" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -666,7 +675,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:23 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:44 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.http.MediaUploadProgress-class.html b/docs/epy/apiclient.http.MediaUploadProgress-class.html
index 32626c0..632b40d 100644
--- a/docs/epy/apiclient.http.MediaUploadProgress-class.html
+++ b/docs/epy/apiclient.http.MediaUploadProgress-class.html
@@ -55,10 +55,12 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class MediaUploadProgress</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.http-pysrc.html#MediaUploadProgress">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_mediauploa_3" name="class_hierarchy_for_mediauploa_3">
-<area shape="rect" id="node1" href="apiclient.http.MediaUploadProgress-class.html" title="MediaUploadProgress" alt="" coords="5,6,155,34"/>
+<center> <map id="uml_class_diagram_for_apiclien_30" name="uml_class_diagram_for_apiclien_30">
+<area shape="rect" id="node77" href="apiclient.http.MediaUploadProgress-class.html#__init__" title="Constructor." alt="" coords="17,39,288,57"/>
+<area shape="rect" id="node77" href="apiclient.http.MediaUploadProgress-class.html#progress" title="Percent of upload completed, as a float." alt="" coords="17,57,288,76"/>
+<area shape="rect" id="node1" href="apiclient.http.MediaUploadProgress-class.html" title="Status of a resumable upload." alt="" coords="5,6,299,82"/>
</map>
- <img src="class_hierarchy_for_mediauploa_3.gif" alt='' usemap="#class_hierarchy_for_mediauploa_3" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_apiclien_30.gif" alt='' usemap="#uml_class_diagram_for_apiclien_30" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -265,7 +267,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:23 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:44 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.http.RequestMockBuilder-class.html b/docs/epy/apiclient.http.RequestMockBuilder-class.html
index a641f15..ce0d5b5 100644
--- a/docs/epy/apiclient.http.RequestMockBuilder-class.html
+++ b/docs/epy/apiclient.http.RequestMockBuilder-class.html
@@ -55,10 +55,12 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class RequestMockBuilder</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.http-pysrc.html#RequestMockBuilder">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_requestmoc" name="class_hierarchy_for_requestmoc">
-<area shape="rect" id="node1" href="apiclient.http.RequestMockBuilder-class.html" title="RequestMockBuilder" alt="" coords="5,6,147,34"/>
+<center> <map id="uml_class_diagram_for_apiclien_31" name="uml_class_diagram_for_apiclien_31">
+<area shape="rect" id="node78" href="apiclient.http.RequestMockBuilder-class.html#__init__" title="Constructor for RequestMockBuilder" alt="" coords="17,39,680,57"/>
+<area shape="rect" id="node78" href="apiclient.http.RequestMockBuilder-class.html#__call__" title="Implements the callable interface that discovery.build() expects of requestBuilder, which is to build an object compatible with HttpRequest.execute()." alt="" coords="17,57,680,76"/>
+<area shape="rect" id="node1" href="apiclient.http.RequestMockBuilder-class.html" title="A simple mock of HttpRequest" alt="" coords="5,6,691,82"/>
</map>
- <img src="class_hierarchy_for_requestmoc.gif" alt='' usemap="#class_hierarchy_for_requestmoc" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_apiclien_31.gif" alt='' usemap="#uml_class_diagram_for_apiclien_31" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -311,7 +313,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:23 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:44 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.http._StreamSlice-class.html b/docs/epy/apiclient.http._StreamSlice-class.html
index 540dfdf..c8ff372 100644
--- a/docs/epy/apiclient.http._StreamSlice-class.html
+++ b/docs/epy/apiclient.http._StreamSlice-class.html
@@ -55,10 +55,12 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class _StreamSlice</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.http-pysrc.html#_StreamSlice">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for__streamsli" name="class_hierarchy_for__streamsli">
-<area shape="rect" id="node1" href="apiclient.http._StreamSlice-class.html" title="_StreamSlice" alt="" coords="5,6,104,34"/>
+<center> <map id="uml_class_diagram_for_apiclien_32" name="uml_class_diagram_for_apiclien_32">
+<area shape="rect" id="node79" href="apiclient.http._StreamSlice-class.html#__init__" title="Constructor." alt="" coords="17,39,253,57"/>
+<area shape="rect" id="node79" href="apiclient.http._StreamSlice-class.html#read" title="Read n bytes." alt="" coords="17,57,253,76"/>
+<area shape="rect" id="node1" href="apiclient.http._StreamSlice-class.html" title="Truncated stream." alt="" coords="5,6,264,82"/>
</map>
- <img src="class_hierarchy_for__streamsli.gif" alt='' usemap="#class_hierarchy_for__streamsli" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_apiclien_32.gif" alt='' usemap="#uml_class_diagram_for_apiclien_32" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -277,7 +279,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:23 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:44 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.mimeparse-module.html b/docs/epy/apiclient.mimeparse-module.html
index 1fe286d..07e4202 100644
--- a/docs/epy/apiclient.mimeparse-module.html
+++ b/docs/epy/apiclient.mimeparse-module.html
@@ -484,7 +484,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:23 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:42 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.mimeparse-pysrc.html b/docs/epy/apiclient.mimeparse-pysrc.html
index 471a2a1..dccb2a3 100644
--- a/docs/epy/apiclient.mimeparse-pysrc.html
+++ b/docs/epy/apiclient.mimeparse-pysrc.html
@@ -255,7 +255,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:26 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:47 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.model-module.html b/docs/epy/apiclient.model-module.html
index 290e0d2..ebd2664 100644
--- a/docs/epy/apiclient.model-module.html
+++ b/docs/epy/apiclient.model-module.html
@@ -206,7 +206,7 @@
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type"> </span>
</td><td class="summary">
- <a name="FLAGS"></a><span class="summary-name">FLAGS</span> = <code title="gflags.FLAGS">gflags.FLAGS</code>
+ <a name="dump_request_response"></a><span class="summary-name">dump_request_response</span> = <code title="False">False</code>
</td>
</tr>
</table>
@@ -293,7 +293,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:23 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:42 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.model-pysrc.html b/docs/epy/apiclient.model-pysrc.html
index c94eb82..bac3752 100644
--- a/docs/epy/apiclient.model-pysrc.html
+++ b/docs/epy/apiclient.model-pysrc.html
@@ -79,470 +79,460 @@
<a name="L24"></a><tt class="py-lineno"> 24</tt> <tt class="py-line"> </tt>
<a name="L25"></a><tt class="py-lineno"> 25</tt> <tt class="py-line"><tt class="py-name">__author__</tt> <tt class="py-op">=</tt> <tt class="py-string">'jcgregorio@google.com (Joe Gregorio)'</tt> </tt>
<a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"> </tt>
-<a name="L27"></a><tt class="py-lineno"> 27</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">gflags</tt> </tt>
-<a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt> </tt>
-<a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">urllib</tt> </tt>
-<a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"> </tt>
-<a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-0" class="py-name" targets="Module apiclient.errors=apiclient.errors-module.html"><a title="apiclient.errors" class="py-name" href="#" onclick="return doclink('link-0', 'errors', 'link-0');">errors</a></tt> <tt class="py-keyword">import</tt> <tt id="link-1" class="py-name" targets="Class apiclient.errors.HttpError=apiclient.errors.HttpError-class.html"><a title="apiclient.errors.HttpError" class="py-name" href="#" onclick="return doclink('link-1', 'HttpError', 'link-1');">HttpError</a></tt> </tt>
-<a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-2" class="py-name" targets="Package oauth2client=oauth2client-module.html"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-2', 'oauth2client', 'link-2');">oauth2client</a></tt><tt class="py-op">.</tt><tt id="link-3" class="py-name" targets="Module oauth2client.anyjson=oauth2client.anyjson-module.html"><a title="oauth2client.anyjson" class="py-name" href="#" onclick="return doclink('link-3', 'anyjson', 'link-3');">anyjson</a></tt> <tt class="py-keyword">import</tt> <tt class="py-name">simplejson</tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">urllib</tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-0" class="py-name" targets="Package apiclient=apiclient-module.html"><a title="apiclient" class="py-name" href="#" onclick="return doclink('link-0', 'apiclient', 'link-0');">apiclient</a></tt> <tt class="py-keyword">import</tt> <tt class="py-name">__version__</tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-1" class="py-name" targets="Module apiclient.errors=apiclient.errors-module.html"><a title="apiclient.errors" class="py-name" href="#" onclick="return doclink('link-1', 'errors', 'link-1');">errors</a></tt> <tt class="py-keyword">import</tt> <tt id="link-2" class="py-name" targets="Class apiclient.errors.HttpError=apiclient.errors.HttpError-class.html"><a title="apiclient.errors.HttpError" class="py-name" href="#" onclick="return doclink('link-2', 'HttpError', 'link-2');">HttpError</a></tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-3" class="py-name" targets="Package oauth2client=oauth2client-module.html"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-3', 'oauth2client', 'link-3');">oauth2client</a></tt><tt class="py-op">.</tt><tt id="link-4" class="py-name" targets="Module oauth2client.anyjson=oauth2client.anyjson-module.html"><a title="oauth2client.anyjson" class="py-name" href="#" onclick="return doclink('link-4', 'anyjson', 'link-4');">anyjson</a></tt> <tt class="py-keyword">import</tt> <tt class="py-name">simplejson</tt> </tt>
<a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"> </tt>
-<a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"><tt id="link-4" class="py-name" targets="Variable apiclient.model.FLAGS=apiclient.model-module.html#FLAGS,Variable oauth2client.tools.FLAGS=oauth2client.tools-module.html#FLAGS,Variable oauth2client.util.FLAGS=oauth2client.util-module.html#FLAGS"><a title="apiclient.model.FLAGS
-oauth2client.tools.FLAGS
-oauth2client.util.FLAGS" class="py-name" href="#" onclick="return doclink('link-4', 'FLAGS', 'link-4');">FLAGS</a></tt> <tt class="py-op">=</tt> <tt class="py-name">gflags</tt><tt class="py-op">.</tt><tt id="link-5" class="py-name"><a title="apiclient.model.FLAGS
-oauth2client.tools.FLAGS
-oauth2client.util.FLAGS" class="py-name" href="#" onclick="return doclink('link-5', 'FLAGS', 'link-4');">FLAGS</a></tt> </tt>
-<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"> </tt>
-<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"><tt class="py-name">gflags</tt><tt class="py-op">.</tt><tt class="py-name">DEFINE_boolean</tt><tt class="py-op">(</tt><tt class="py-string">'dump_request_response'</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt><tt class="py-op">,</tt> </tt>
-<a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"> <tt class="py-string">'Dump all http server requests and responses. '</tt> </tt>
-<a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"> <tt class="py-op">)</tt> </tt>
-<a name="_abstract"></a><div id="_abstract-def"><a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"> </tt>
-<a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"> </tt>
-<a name="L41"></a><tt class="py-lineno"> 41</tt> <a class="py-toggle" href="#" id="_abstract-toggle" onclick="return toggle('_abstract');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.model-module.html#_abstract">_abstract</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_abstract-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_abstract-expanded"><a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">NotImplementedError</tt><tt class="py-op">(</tt><tt class="py-string">'You need to override this function'</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"> </tt>
-<a name="Model"></a><div id="Model-def"><a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"> </tt>
-<a name="L45"></a><tt class="py-lineno"> 45</tt> <a class="py-toggle" href="#" id="Model-toggle" onclick="return toggle('Model');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.model.Model-class.html">Model</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Model-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Model-expanded"><a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"> <tt class="py-docstring">"""Model base class.</tt> </tt>
-<a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"><tt class="py-docstring"> All Model classes should implement this interface.</tt> </tt>
-<a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"><tt class="py-docstring"> The Model serializes and de-serializes between a wire</tt> </tt>
-<a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"><tt class="py-docstring"> format such as JSON and a Python object representation.</tt> </tt>
-<a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"> </tt>
-<a name="Model.request"></a><div id="Model.request-def"><a name="L53"></a><tt class="py-lineno"> 53</tt> <a class="py-toggle" href="#" id="Model.request-toggle" onclick="return toggle('Model.request');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.model.Model-class.html#request">request</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">headers</tt><tt class="py-op">,</tt> <tt class="py-param">path_params</tt><tt class="py-op">,</tt> <tt class="py-param">query_params</tt><tt class="py-op">,</tt> <tt class="py-param">body_value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Model.request-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="Model.request-expanded"><a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"> <tt class="py-docstring">"""Updates outgoing requests with a serialized body.</tt> </tt>
-<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"><tt class="py-docstring"> headers: dict, request headers</tt> </tt>
-<a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"><tt class="py-docstring"> path_params: dict, parameters that appear in the request path</tt> </tt>
-<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"><tt class="py-docstring"> query_params: dict, parameters that appear in the query</tt> </tt>
-<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"><tt class="py-docstring"> body_value: object, the request body as a Python object, which must be</tt> </tt>
-<a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"><tt class="py-docstring"> serializable.</tt> </tt>
-<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"><tt class="py-docstring"> A tuple of (headers, path_params, query, body)</tt> </tt>
-<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"><tt class="py-docstring"> headers: dict, request headers</tt> </tt>
-<a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"><tt class="py-docstring"> path_params: dict, parameters that appear in the request path</tt> </tt>
-<a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"><tt class="py-docstring"> query: string, query part of the request URI</tt> </tt>
-<a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"><tt class="py-docstring"> body: string, the body serialized in the desired wire format.</tt> </tt>
-<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"> <tt id="link-6" class="py-name" targets="Function apiclient.model._abstract()=apiclient.model-module.html#_abstract,Function oauth2client.client._abstract()=oauth2client.client-module.html#_abstract"><a title="apiclient.model._abstract
+<a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"><tt id="link-5" class="py-name" targets="Variable apiclient.model.dump_request_response=apiclient.model-module.html#dump_request_response"><a title="apiclient.model.dump_request_response" class="py-name" href="#" onclick="return doclink('link-5', 'dump_request_response', 'link-5');">dump_request_response</a></tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="_abstract"></a><div id="_abstract-def"><a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt> <a class="py-toggle" href="#" id="_abstract-toggle" onclick="return toggle('_abstract');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.model-module.html#_abstract">_abstract</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_abstract-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_abstract-expanded"><a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">NotImplementedError</tt><tt class="py-op">(</tt><tt class="py-string">'You need to override this function'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"> </tt>
+<a name="Model"></a><div id="Model-def"><a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt> <a class="py-toggle" href="#" id="Model-toggle" onclick="return toggle('Model');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.model.Model-class.html">Model</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Model-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Model-expanded"><a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"> <tt class="py-docstring">"""Model base class.</tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"><tt class="py-docstring"> All Model classes should implement this interface.</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"><tt class="py-docstring"> The Model serializes and de-serializes between a wire</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"><tt class="py-docstring"> format such as JSON and a Python object representation.</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"> </tt>
+<a name="Model.request"></a><div id="Model.request-def"><a name="L50"></a><tt class="py-lineno"> 50</tt> <a class="py-toggle" href="#" id="Model.request-toggle" onclick="return toggle('Model.request');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.model.Model-class.html#request">request</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">headers</tt><tt class="py-op">,</tt> <tt class="py-param">path_params</tt><tt class="py-op">,</tt> <tt class="py-param">query_params</tt><tt class="py-op">,</tt> <tt class="py-param">body_value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Model.request-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="Model.request-expanded"><a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"> <tt class="py-docstring">"""Updates outgoing requests with a serialized body.</tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"><tt class="py-docstring"> headers: dict, request headers</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"><tt class="py-docstring"> path_params: dict, parameters that appear in the request path</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"><tt class="py-docstring"> query_params: dict, parameters that appear in the query</tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"><tt class="py-docstring"> body_value: object, the request body as a Python object, which must be</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"><tt class="py-docstring"> serializable.</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"><tt class="py-docstring"> A tuple of (headers, path_params, query, body)</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"><tt class="py-docstring"> headers: dict, request headers</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"><tt class="py-docstring"> path_params: dict, parameters that appear in the request path</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"><tt class="py-docstring"> query: string, query part of the request URI</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"><tt class="py-docstring"> body: string, the body serialized in the desired wire format.</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"> <tt id="link-6" class="py-name" targets="Function apiclient.model._abstract()=apiclient.model-module.html#_abstract,Function oauth2client.client._abstract()=oauth2client.client-module.html#_abstract"><a title="apiclient.model._abstract
oauth2client.client._abstract" class="py-name" href="#" onclick="return doclink('link-6', '_abstract', 'link-6');">_abstract</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"> </tt>
-<a name="Model.response"></a><div id="Model.response-def"><a name="L72"></a><tt class="py-lineno"> 72</tt> <a class="py-toggle" href="#" id="Model.response-toggle" onclick="return toggle('Model.response');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.model.Model-class.html#response">response</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">resp</tt><tt class="py-op">,</tt> <tt class="py-param">content</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Model.response-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="Model.response-expanded"><a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"> <tt class="py-docstring">"""Convert the response wire format into a Python object.</tt> </tt>
-<a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"><tt class="py-docstring"> resp: httplib2.Response, the HTTP response headers and status</tt> </tt>
-<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"><tt class="py-docstring"> content: string, the body of the HTTP response</tt> </tt>
+</div><a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"> </tt>
+<a name="Model.response"></a><div id="Model.response-def"><a name="L69"></a><tt class="py-lineno"> 69</tt> <a class="py-toggle" href="#" id="Model.response-toggle" onclick="return toggle('Model.response');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.model.Model-class.html#response">response</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">resp</tt><tt class="py-op">,</tt> <tt class="py-param">content</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Model.response-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="Model.response-expanded"><a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"> <tt class="py-docstring">"""Convert the response wire format into a Python object.</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"><tt class="py-docstring"> resp: httplib2.Response, the HTTP response headers and status</tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"><tt class="py-docstring"> content: string, the body of the HTTP response</tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"><tt class="py-docstring"> The body de-serialized as a Python object.</tt> </tt>
<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"><tt class="py-docstring"> The body de-serialized as a Python object.</tt> </tt>
-<a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"><tt class="py-docstring"> Raises:</tt> </tt>
-<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"><tt class="py-docstring"> apiclient.errors.HttpError if a non 2xx response is received.</tt> </tt>
-<a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"> <tt id="link-7" class="py-name"><a title="apiclient.model._abstract
+<a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"><tt class="py-docstring"> Raises:</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"><tt class="py-docstring"> apiclient.errors.HttpError if a non 2xx response is received.</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"> <tt id="link-7" class="py-name"><a title="apiclient.model._abstract
oauth2client.client._abstract" class="py-name" href="#" onclick="return doclink('link-7', '_abstract', 'link-6');">_abstract</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> </tt>
-<a name="BaseModel"></a><div id="BaseModel-def"><a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"> </tt>
-<a name="L88"></a><tt class="py-lineno"> 88</tt> <a class="py-toggle" href="#" id="BaseModel-toggle" onclick="return toggle('BaseModel');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.model.BaseModel-class.html">BaseModel</a><tt class="py-op">(</tt><tt class="py-base-class">Model</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="BaseModel-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="BaseModel-expanded"><a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> <tt class="py-docstring">"""Base model class.</tt> </tt>
+</div></div><a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"> </tt>
+<a name="BaseModel"></a><div id="BaseModel-def"><a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt> <a class="py-toggle" href="#" id="BaseModel-toggle" onclick="return toggle('BaseModel');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.model.BaseModel-class.html">BaseModel</a><tt class="py-op">(</tt><tt class="py-base-class">Model</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BaseModel-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="BaseModel-expanded"><a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> <tt class="py-docstring">"""Base model class.</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"><tt class="py-docstring"> Subclasses should provide implementations for the "serialize" and</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"><tt class="py-docstring"> "deserialize" methods, as well as values for the following class attributes.</tt> </tt>
<a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"><tt class="py-docstring"> Subclasses should provide implementations for the "serialize" and</tt> </tt>
-<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"><tt class="py-docstring"> "deserialize" methods, as well as values for the following class attributes.</tt> </tt>
-<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"><tt class="py-docstring"> Attributes:</tt> </tt>
-<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"><tt class="py-docstring"> accept: The value to use for the HTTP Accept header.</tt> </tt>
-<a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"><tt class="py-docstring"> content_type: The value to use for the HTTP Content-type header.</tt> </tt>
-<a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"><tt class="py-docstring"> no_content_response: The value to return when deserializing a 204 "No</tt> </tt>
-<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"><tt class="py-docstring"> Content" response.</tt> </tt>
-<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"><tt class="py-docstring"> alt_param: The value to supply as the "alt" query parameter for requests.</tt> </tt>
-<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"> </tt>
-<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"> <tt id="link-8" class="py-name" targets="Variable apiclient.model.BaseModel.accept=apiclient.model.BaseModel-class.html#accept,Variable apiclient.model.JsonModel.accept=apiclient.model.JsonModel-class.html#accept,Variable apiclient.model.MediaModel.accept=apiclient.model.MediaModel-class.html#accept,Variable apiclient.model.ProtocolBufferModel.accept=apiclient.model.ProtocolBufferModel-class.html#accept,Variable apiclient.model.RawModel.accept=apiclient.model.RawModel-class.html#accept"><a title="apiclient.model.BaseModel.accept
+<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"><tt class="py-docstring"> Attributes:</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"><tt class="py-docstring"> accept: The value to use for the HTTP Accept header.</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"><tt class="py-docstring"> content_type: The value to use for the HTTP Content-type header.</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"><tt class="py-docstring"> no_content_response: The value to return when deserializing a 204 "No</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"><tt class="py-docstring"> Content" response.</tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"><tt class="py-docstring"> alt_param: The value to supply as the "alt" query parameter for requests.</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"> <tt id="link-8" class="py-name" targets="Variable apiclient.model.BaseModel.accept=apiclient.model.BaseModel-class.html#accept,Variable apiclient.model.JsonModel.accept=apiclient.model.JsonModel-class.html#accept,Variable apiclient.model.MediaModel.accept=apiclient.model.MediaModel-class.html#accept,Variable apiclient.model.ProtocolBufferModel.accept=apiclient.model.ProtocolBufferModel-class.html#accept,Variable apiclient.model.RawModel.accept=apiclient.model.RawModel-class.html#accept"><a title="apiclient.model.BaseModel.accept
apiclient.model.JsonModel.accept
apiclient.model.MediaModel.accept
apiclient.model.ProtocolBufferModel.accept
apiclient.model.RawModel.accept" class="py-name" href="#" onclick="return doclink('link-8', 'accept', 'link-8');">accept</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"> <tt id="link-9" class="py-name" targets="Variable apiclient.model.BaseModel.content_type=apiclient.model.BaseModel-class.html#content_type,Variable apiclient.model.JsonModel.content_type=apiclient.model.JsonModel-class.html#content_type,Variable apiclient.model.MediaModel.content_type=apiclient.model.MediaModel-class.html#content_type,Variable apiclient.model.ProtocolBufferModel.content_type=apiclient.model.ProtocolBufferModel-class.html#content_type,Variable apiclient.model.RawModel.content_type=apiclient.model.RawModel-class.html#content_type"><a title="apiclient.model.BaseModel.content_type
+<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"> <tt id="link-9" class="py-name" targets="Variable apiclient.model.BaseModel.content_type=apiclient.model.BaseModel-class.html#content_type,Variable apiclient.model.JsonModel.content_type=apiclient.model.JsonModel-class.html#content_type,Variable apiclient.model.MediaModel.content_type=apiclient.model.MediaModel-class.html#content_type,Variable apiclient.model.ProtocolBufferModel.content_type=apiclient.model.ProtocolBufferModel-class.html#content_type,Variable apiclient.model.RawModel.content_type=apiclient.model.RawModel-class.html#content_type"><a title="apiclient.model.BaseModel.content_type
apiclient.model.JsonModel.content_type
apiclient.model.MediaModel.content_type
apiclient.model.ProtocolBufferModel.content_type
apiclient.model.RawModel.content_type" class="py-name" href="#" onclick="return doclink('link-9', 'content_type', 'link-9');">content_type</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"> <tt id="link-10" class="py-name" targets="Variable apiclient.model.BaseModel.no_content_response=apiclient.model.BaseModel-class.html#no_content_response,Method apiclient.model.JsonModel.no_content_response()=apiclient.model.JsonModel-class.html#no_content_response,Method apiclient.model.MediaModel.no_content_response()=apiclient.model.MediaModel-class.html#no_content_response,Method apiclient.model.ProtocolBufferModel.no_content_response()=apiclient.model.ProtocolBufferModel-class.html#no_content_response,Method apiclient.model.RawModel.no_content_response()=apiclient.model.RawModel-class.html#no_content_response"><a title="apiclient.model.BaseModel.no_content_response
+<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"> <tt id="link-10" class="py-name" targets="Variable apiclient.model.BaseModel.no_content_response=apiclient.model.BaseModel-class.html#no_content_response,Method apiclient.model.JsonModel.no_content_response()=apiclient.model.JsonModel-class.html#no_content_response,Method apiclient.model.MediaModel.no_content_response()=apiclient.model.MediaModel-class.html#no_content_response,Method apiclient.model.ProtocolBufferModel.no_content_response()=apiclient.model.ProtocolBufferModel-class.html#no_content_response,Method apiclient.model.RawModel.no_content_response()=apiclient.model.RawModel-class.html#no_content_response"><a title="apiclient.model.BaseModel.no_content_response
apiclient.model.JsonModel.no_content_response
apiclient.model.MediaModel.no_content_response
apiclient.model.ProtocolBufferModel.no_content_response
apiclient.model.RawModel.no_content_response" class="py-name" href="#" onclick="return doclink('link-10', 'no_content_response', 'link-10');">no_content_response</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"> <tt id="link-11" class="py-name" targets="Variable apiclient.model.BaseModel.alt_param=apiclient.model.BaseModel-class.html#alt_param,Variable apiclient.model.JsonModel.alt_param=apiclient.model.JsonModel-class.html#alt_param,Variable apiclient.model.MediaModel.alt_param=apiclient.model.MediaModel-class.html#alt_param,Variable apiclient.model.ProtocolBufferModel.alt_param=apiclient.model.ProtocolBufferModel-class.html#alt_param,Variable apiclient.model.RawModel.alt_param=apiclient.model.RawModel-class.html#alt_param"><a title="apiclient.model.BaseModel.alt_param
+<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"> <tt id="link-11" class="py-name" targets="Variable apiclient.model.BaseModel.alt_param=apiclient.model.BaseModel-class.html#alt_param,Variable apiclient.model.JsonModel.alt_param=apiclient.model.JsonModel-class.html#alt_param,Variable apiclient.model.MediaModel.alt_param=apiclient.model.MediaModel-class.html#alt_param,Variable apiclient.model.ProtocolBufferModel.alt_param=apiclient.model.ProtocolBufferModel-class.html#alt_param,Variable apiclient.model.RawModel.alt_param=apiclient.model.RawModel-class.html#alt_param"><a title="apiclient.model.BaseModel.alt_param
apiclient.model.JsonModel.alt_param
apiclient.model.MediaModel.alt_param
apiclient.model.ProtocolBufferModel.alt_param
apiclient.model.RawModel.alt_param" class="py-name" href="#" onclick="return doclink('link-11', 'alt_param', 'link-11');">alt_param</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"> </tt>
-<a name="BaseModel._log_request"></a><div id="BaseModel._log_request-def"><a name="L107"></a><tt class="py-lineno">107</tt> <a class="py-toggle" href="#" id="BaseModel._log_request-toggle" onclick="return toggle('BaseModel._log_request');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.model.BaseModel-class.html#_log_request">_log_request</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">headers</tt><tt class="py-op">,</tt> <tt class="py-param">path_params</tt><tt class="py-op">,</tt> <tt class="py-param">query</tt><tt class="py-op">,</tt> <tt class="py-param">body</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="BaseModel._log_request-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="BaseModel._log_request-expanded"><a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"> <tt class="py-docstring">"""Logs debugging information about the request if requested."""</tt> </tt>
-<a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-12" class="py-name"><a title="apiclient.model.FLAGS
-oauth2client.tools.FLAGS
-oauth2client.util.FLAGS" class="py-name" href="#" onclick="return doclink('link-12', 'FLAGS', 'link-4');">FLAGS</a></tt><tt class="py-op">.</tt><tt class="py-name">dump_request_response</tt><tt class="py-op">:</tt> </tt>
-<a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'--request-start--'</tt><tt class="py-op">)</tt> </tt>
-<a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'-headers-start-'</tt><tt class="py-op">)</tt> </tt>
-<a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">h</tt><tt class="py-op">,</tt> <tt class="py-name">v</tt> <tt class="py-keyword">in</tt> <tt class="py-name">headers</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'%s: %s'</tt><tt class="py-op">,</tt> <tt class="py-name">h</tt><tt class="py-op">,</tt> <tt class="py-name">v</tt><tt class="py-op">)</tt> </tt>
-<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'-headers-end-'</tt><tt class="py-op">)</tt> </tt>
-<a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'-path-parameters-start-'</tt><tt class="py-op">)</tt> </tt>
-<a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">h</tt><tt class="py-op">,</tt> <tt class="py-name">v</tt> <tt class="py-keyword">in</tt> <tt class="py-name">path_params</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'%s: %s'</tt><tt class="py-op">,</tt> <tt class="py-name">h</tt><tt class="py-op">,</tt> <tt class="py-name">v</tt><tt class="py-op">)</tt> </tt>
-<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'-path-parameters-end-'</tt><tt class="py-op">)</tt> </tt>
-<a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'body: %s'</tt><tt class="py-op">,</tt> <tt class="py-name">body</tt><tt class="py-op">)</tt> </tt>
-<a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'query: %s'</tt><tt class="py-op">,</tt> <tt class="py-name">query</tt><tt class="py-op">)</tt> </tt>
-<a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'--request-end--'</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"> </tt>
-<a name="BaseModel.request"></a><div id="BaseModel.request-def"><a name="L123"></a><tt class="py-lineno">123</tt> <a class="py-toggle" href="#" id="BaseModel.request-toggle" onclick="return toggle('BaseModel.request');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.model.BaseModel-class.html#request">request</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">headers</tt><tt class="py-op">,</tt> <tt class="py-param">path_params</tt><tt class="py-op">,</tt> <tt class="py-param">query_params</tt><tt class="py-op">,</tt> <tt class="py-param">body_value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="BaseModel.request-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="BaseModel.request-expanded"><a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"> <tt class="py-docstring">"""Updates outgoing requests with a serialized body.</tt> </tt>
-<a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"><tt class="py-docstring"> headers: dict, request headers</tt> </tt>
-<a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"><tt class="py-docstring"> path_params: dict, parameters that appear in the request path</tt> </tt>
-<a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"><tt class="py-docstring"> query_params: dict, parameters that appear in the query</tt> </tt>
-<a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"><tt class="py-docstring"> body_value: object, the request body as a Python object, which must be</tt> </tt>
-<a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"><tt class="py-docstring"> serializable by simplejson.</tt> </tt>
-<a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"><tt class="py-docstring"> A tuple of (headers, path_params, query, body)</tt> </tt>
-<a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"><tt class="py-docstring"> headers: dict, request headers</tt> </tt>
-<a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"><tt class="py-docstring"> path_params: dict, parameters that appear in the request path</tt> </tt>
-<a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"><tt class="py-docstring"> query: string, query part of the request URI</tt> </tt>
-<a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"><tt class="py-docstring"> body: string, the body serialized as JSON</tt> </tt>
-<a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"> <tt class="py-name">query</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name" targets="Method apiclient.model.BaseModel._build_query()=apiclient.model.BaseModel-class.html#_build_query"><a title="apiclient.model.BaseModel._build_query" class="py-name" href="#" onclick="return doclink('link-13', '_build_query', 'link-13');">_build_query</a></tt><tt class="py-op">(</tt><tt id="link-14" class="py-name" targets="Variable oauth2client.tools.ClientRedirectServer.query_params=oauth2client.tools.ClientRedirectServer-class.html#query_params"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-14', 'query_params', 'link-14');">query_params</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'accept'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-15" class="py-name"><a title="apiclient.model.BaseModel.accept
+<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"> </tt>
+<a name="BaseModel._log_request"></a><div id="BaseModel._log_request-def"><a name="L104"></a><tt class="py-lineno">104</tt> <a class="py-toggle" href="#" id="BaseModel._log_request-toggle" onclick="return toggle('BaseModel._log_request');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.model.BaseModel-class.html#_log_request">_log_request</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">headers</tt><tt class="py-op">,</tt> <tt class="py-param">path_params</tt><tt class="py-op">,</tt> <tt class="py-param">query</tt><tt class="py-op">,</tt> <tt class="py-param">body</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BaseModel._log_request-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="BaseModel._log_request-expanded"><a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"> <tt class="py-docstring">"""Logs debugging information about the request if requested."""</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-12" class="py-name"><a title="apiclient.model.dump_request_response" class="py-name" href="#" onclick="return doclink('link-12', 'dump_request_response', 'link-5');">dump_request_response</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'--request-start--'</tt><tt class="py-op">)</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'-headers-start-'</tt><tt class="py-op">)</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">h</tt><tt class="py-op">,</tt> <tt class="py-name">v</tt> <tt class="py-keyword">in</tt> <tt class="py-name">headers</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'%s: %s'</tt><tt class="py-op">,</tt> <tt class="py-name">h</tt><tt class="py-op">,</tt> <tt class="py-name">v</tt><tt class="py-op">)</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'-headers-end-'</tt><tt class="py-op">)</tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'-path-parameters-start-'</tt><tt class="py-op">)</tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">h</tt><tt class="py-op">,</tt> <tt class="py-name">v</tt> <tt class="py-keyword">in</tt> <tt class="py-name">path_params</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'%s: %s'</tt><tt class="py-op">,</tt> <tt class="py-name">h</tt><tt class="py-op">,</tt> <tt class="py-name">v</tt><tt class="py-op">)</tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'-path-parameters-end-'</tt><tt class="py-op">)</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'body: %s'</tt><tt class="py-op">,</tt> <tt id="link-13" class="py-name" targets="Method apiclient.channel.Channel.body()=apiclient.channel.Channel-class.html#body"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-13', 'body', 'link-13');">body</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'query: %s'</tt><tt class="py-op">,</tt> <tt class="py-name">query</tt><tt class="py-op">)</tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'--request-end--'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"> </tt>
+<a name="BaseModel.request"></a><div id="BaseModel.request-def"><a name="L120"></a><tt class="py-lineno">120</tt> <a class="py-toggle" href="#" id="BaseModel.request-toggle" onclick="return toggle('BaseModel.request');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.model.BaseModel-class.html#request">request</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">headers</tt><tt class="py-op">,</tt> <tt class="py-param">path_params</tt><tt class="py-op">,</tt> <tt class="py-param">query_params</tt><tt class="py-op">,</tt> <tt class="py-param">body_value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BaseModel.request-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="BaseModel.request-expanded"><a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"> <tt class="py-docstring">"""Updates outgoing requests with a serialized body.</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"><tt class="py-docstring"> headers: dict, request headers</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"><tt class="py-docstring"> path_params: dict, parameters that appear in the request path</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"><tt class="py-docstring"> query_params: dict, parameters that appear in the query</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"><tt class="py-docstring"> body_value: object, the request body as a Python object, which must be</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"><tt class="py-docstring"> serializable by simplejson.</tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"><tt class="py-docstring"> A tuple of (headers, path_params, query, body)</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"><tt class="py-docstring"> headers: dict, request headers</tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"><tt class="py-docstring"> path_params: dict, parameters that appear in the request path</tt> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"><tt class="py-docstring"> query: string, query part of the request URI</tt> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"><tt class="py-docstring"> body: string, the body serialized as JSON</tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"> <tt class="py-name">query</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-14" class="py-name" targets="Method apiclient.model.BaseModel._build_query()=apiclient.model.BaseModel-class.html#_build_query"><a title="apiclient.model.BaseModel._build_query" class="py-name" href="#" onclick="return doclink('link-14', '_build_query', 'link-14');">_build_query</a></tt><tt class="py-op">(</tt><tt id="link-15" class="py-name" targets="Variable oauth2client.tools.ClientRedirectServer.query_params=oauth2client.tools.ClientRedirectServer-class.html#query_params"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-15', 'query_params', 'link-15');">query_params</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'accept'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-16" class="py-name"><a title="apiclient.model.BaseModel.accept
apiclient.model.JsonModel.accept
apiclient.model.MediaModel.accept
apiclient.model.ProtocolBufferModel.accept
-apiclient.model.RawModel.accept" class="py-name" href="#" onclick="return doclink('link-15', 'accept', 'link-8');">accept</a></tt> </tt>
-<a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'accept-encoding'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'gzip, deflate'</tt> </tt>
-<a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'user-agent'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">headers</tt><tt class="py-op">:</tt> </tt>
-<a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'user-agent'</tt><tt class="py-op">]</tt> <tt class="py-op">+=</tt> <tt class="py-string">' '</tt> </tt>
-<a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'user-agent'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
-<a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'user-agent'</tt><tt class="py-op">]</tt> <tt class="py-op">+=</tt> <tt class="py-string">'google-api-python-client/1.0'</tt> </tt>
-<a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"> </tt>
-<a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">body_value</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'content-type'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-16" class="py-name"><a title="apiclient.model.BaseModel.content_type
+apiclient.model.RawModel.accept" class="py-name" href="#" onclick="return doclink('link-16', 'accept', 'link-8');">accept</a></tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'accept-encoding'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'gzip, deflate'</tt> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'user-agent'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">headers</tt><tt class="py-op">:</tt> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'user-agent'</tt><tt class="py-op">]</tt> <tt class="py-op">+=</tt> <tt class="py-string">' '</tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'user-agent'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'user-agent'</tt><tt class="py-op">]</tt> <tt class="py-op">+=</tt> <tt class="py-string">'google-api-python-client/%s (gzip)'</tt> <tt class="py-op">%</tt> <tt class="py-name">__version__</tt> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">body_value</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'content-type'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-17" class="py-name"><a title="apiclient.model.BaseModel.content_type
apiclient.model.JsonModel.content_type
apiclient.model.MediaModel.content_type
apiclient.model.ProtocolBufferModel.content_type
-apiclient.model.RawModel.content_type" class="py-name" href="#" onclick="return doclink('link-16', 'content_type', 'link-9');">content_type</a></tt> </tt>
-<a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"> <tt class="py-name">body_value</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-17" class="py-name" targets="Method apiclient.model.BaseModel.serialize()=apiclient.model.BaseModel-class.html#serialize,Method apiclient.model.JsonModel.serialize()=apiclient.model.JsonModel-class.html#serialize,Method apiclient.model.ProtocolBufferModel.serialize()=apiclient.model.ProtocolBufferModel-class.html#serialize"><a title="apiclient.model.BaseModel.serialize
+apiclient.model.RawModel.content_type" class="py-name" href="#" onclick="return doclink('link-17', 'content_type', 'link-9');">content_type</a></tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"> <tt class="py-name">body_value</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-18" class="py-name" targets="Method apiclient.model.BaseModel.serialize()=apiclient.model.BaseModel-class.html#serialize,Method apiclient.model.JsonModel.serialize()=apiclient.model.JsonModel-class.html#serialize,Method apiclient.model.ProtocolBufferModel.serialize()=apiclient.model.ProtocolBufferModel-class.html#serialize"><a title="apiclient.model.BaseModel.serialize
apiclient.model.JsonModel.serialize
-apiclient.model.ProtocolBufferModel.serialize" class="py-name" href="#" onclick="return doclink('link-17', 'serialize', 'link-17');">serialize</a></tt><tt class="py-op">(</tt><tt class="py-name">body_value</tt><tt class="py-op">)</tt> </tt>
-<a name="L152"></a><tt class="py-lineno">152</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-18" class="py-name" targets="Method apiclient.model.BaseModel._log_request()=apiclient.model.BaseModel-class.html#_log_request"><a title="apiclient.model.BaseModel._log_request" class="py-name" href="#" onclick="return doclink('link-18', '_log_request', 'link-18');">_log_request</a></tt><tt class="py-op">(</tt><tt class="py-name">headers</tt><tt class="py-op">,</tt> <tt class="py-name">path_params</tt><tt class="py-op">,</tt> <tt class="py-name">query</tt><tt class="py-op">,</tt> <tt class="py-name">body_value</tt><tt class="py-op">)</tt> </tt>
-<a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">headers</tt><tt class="py-op">,</tt> <tt class="py-name">path_params</tt><tt class="py-op">,</tt> <tt class="py-name">query</tt><tt class="py-op">,</tt> <tt class="py-name">body_value</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"> </tt>
-<a name="BaseModel._build_query"></a><div id="BaseModel._build_query-def"><a name="L155"></a><tt class="py-lineno">155</tt> <a class="py-toggle" href="#" id="BaseModel._build_query-toggle" onclick="return toggle('BaseModel._build_query');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.model.BaseModel-class.html#_build_query">_build_query</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">params</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="BaseModel._build_query-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="BaseModel._build_query-expanded"><a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"> <tt class="py-docstring">"""Builds a query string.</tt> </tt>
+apiclient.model.ProtocolBufferModel.serialize" class="py-name" href="#" onclick="return doclink('link-18', 'serialize', 'link-18');">serialize</a></tt><tt class="py-op">(</tt><tt class="py-name">body_value</tt><tt class="py-op">)</tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-19" class="py-name" targets="Method apiclient.model.BaseModel._log_request()=apiclient.model.BaseModel-class.html#_log_request"><a title="apiclient.model.BaseModel._log_request" class="py-name" href="#" onclick="return doclink('link-19', '_log_request', 'link-19');">_log_request</a></tt><tt class="py-op">(</tt><tt class="py-name">headers</tt><tt class="py-op">,</tt> <tt class="py-name">path_params</tt><tt class="py-op">,</tt> <tt class="py-name">query</tt><tt class="py-op">,</tt> <tt class="py-name">body_value</tt><tt class="py-op">)</tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">headers</tt><tt class="py-op">,</tt> <tt class="py-name">path_params</tt><tt class="py-op">,</tt> <tt class="py-name">query</tt><tt class="py-op">,</tt> <tt class="py-name">body_value</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"> </tt>
+<a name="BaseModel._build_query"></a><div id="BaseModel._build_query-def"><a name="L152"></a><tt class="py-lineno">152</tt> <a class="py-toggle" href="#" id="BaseModel._build_query-toggle" onclick="return toggle('BaseModel._build_query');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.model.BaseModel-class.html#_build_query">_build_query</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">params</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BaseModel._build_query-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="BaseModel._build_query-expanded"><a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"> <tt class="py-docstring">"""Builds a query string.</tt> </tt>
+<a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"><tt class="py-docstring"> params: dict, the query parameters</tt> </tt>
<a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L158"></a><tt class="py-lineno">158</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"><tt class="py-docstring"> params: dict, the query parameters</tt> </tt>
-<a name="L160"></a><tt class="py-lineno">160</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"><tt class="py-docstring"> The query parameters properly encoded into an HTTP URI query string.</tt> </tt>
-<a name="L163"></a><tt class="py-lineno">163</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-19" class="py-name"><a title="apiclient.model.BaseModel.alt_param
+<a name="L158"></a><tt class="py-lineno">158</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"><tt class="py-docstring"> The query parameters properly encoded into an HTTP URI query string.</tt> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-20" class="py-name"><a title="apiclient.model.BaseModel.alt_param
apiclient.model.JsonModel.alt_param
apiclient.model.MediaModel.alt_param
apiclient.model.ProtocolBufferModel.alt_param
-apiclient.model.RawModel.alt_param" class="py-name" href="#" onclick="return doclink('link-19', 'alt_param', 'link-11');">alt_param</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"> <tt class="py-name">params</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-op">{</tt><tt class="py-string">'alt'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-20" class="py-name"><a title="apiclient.model.BaseModel.alt_param
+apiclient.model.RawModel.alt_param" class="py-name" href="#" onclick="return doclink('link-20', 'alt_param', 'link-11');">alt_param</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"> <tt class="py-name">params</tt><tt class="py-op">.</tt><tt id="link-21" class="py-name" targets="Method apiclient.channel.Channel.update()=apiclient.channel.Channel-class.html#update"><a title="apiclient.channel.Channel.update" class="py-name" href="#" onclick="return doclink('link-21', 'update', 'link-21');">update</a></tt><tt class="py-op">(</tt><tt class="py-op">{</tt><tt class="py-string">'alt'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-22" class="py-name"><a title="apiclient.model.BaseModel.alt_param
apiclient.model.JsonModel.alt_param
apiclient.model.MediaModel.alt_param
apiclient.model.ProtocolBufferModel.alt_param
-apiclient.model.RawModel.alt_param" class="py-name" href="#" onclick="return doclink('link-20', 'alt_param', 'link-11');">alt_param</a></tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
-<a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"> <tt class="py-name">astuples</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L167"></a><tt class="py-lineno">167</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt> <tt class="py-keyword">in</tt> <tt class="py-name">params</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">x</tt> <tt class="py-keyword">in</tt> <tt class="py-name">value</tt><tt class="py-op">:</tt> </tt>
-<a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"> <tt class="py-name">x</tt> <tt class="py-op">=</tt> <tt class="py-name">x</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'utf-8'</tt><tt class="py-op">)</tt> </tt>
-<a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"> <tt class="py-name">astuples</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">x</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt class="py-string">'encode'</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">callable</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"> <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'utf-8'</tt><tt class="py-op">)</tt> </tt>
-<a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"> <tt class="py-name">astuples</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">'?'</tt> <tt class="py-op">+</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">urlencode</tt><tt class="py-op">(</tt><tt class="py-name">astuples</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"> </tt>
-<a name="BaseModel._log_response"></a><div id="BaseModel._log_response-def"><a name="L178"></a><tt class="py-lineno">178</tt> <a class="py-toggle" href="#" id="BaseModel._log_response-toggle" onclick="return toggle('BaseModel._log_response');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.model.BaseModel-class.html#_log_response">_log_response</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">resp</tt><tt class="py-op">,</tt> <tt class="py-param">content</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="BaseModel._log_response-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="BaseModel._log_response-expanded"><a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"> <tt class="py-docstring">"""Logs debugging information about the response if requested."""</tt> </tt>
-<a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-21" class="py-name"><a title="apiclient.model.FLAGS
-oauth2client.tools.FLAGS
-oauth2client.util.FLAGS" class="py-name" href="#" onclick="return doclink('link-21', 'FLAGS', 'link-4');">FLAGS</a></tt><tt class="py-op">.</tt><tt class="py-name">dump_request_response</tt><tt class="py-op">:</tt> </tt>
-<a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'--response-start--'</tt><tt class="py-op">)</tt> </tt>
-<a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">h</tt><tt class="py-op">,</tt> <tt class="py-name">v</tt> <tt class="py-keyword">in</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L183"></a><tt class="py-lineno">183</tt> <tt class="py-line"> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'%s: %s'</tt><tt class="py-op">,</tt> <tt class="py-name">h</tt><tt class="py-op">,</tt> <tt class="py-name">v</tt><tt class="py-op">)</tt> </tt>
-<a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">content</tt><tt class="py-op">:</tt> </tt>
-<a name="L185"></a><tt class="py-lineno">185</tt> <tt class="py-line"> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
-<a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'--response-end--'</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"> </tt>
-<a name="BaseModel.response"></a><div id="BaseModel.response-def"><a name="L188"></a><tt class="py-lineno">188</tt> <a class="py-toggle" href="#" id="BaseModel.response-toggle" onclick="return toggle('BaseModel.response');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.model.BaseModel-class.html#response">response</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">resp</tt><tt class="py-op">,</tt> <tt class="py-param">content</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="BaseModel.response-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="BaseModel.response-expanded"><a name="L189"></a><tt class="py-lineno">189</tt> <tt class="py-line"> <tt class="py-docstring">"""Convert the response wire format into a Python object.</tt> </tt>
-<a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L191"></a><tt class="py-lineno">191</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"><tt class="py-docstring"> resp: httplib2.Response, the HTTP response headers and status</tt> </tt>
-<a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"><tt class="py-docstring"> content: string, the body of the HTTP response</tt> </tt>
+apiclient.model.RawModel.alt_param" class="py-name" href="#" onclick="return doclink('link-22', 'alt_param', 'link-11');">alt_param</a></tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L163"></a><tt class="py-lineno">163</tt> <tt class="py-line"> <tt class="py-name">astuples</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt> <tt class="py-keyword">in</tt> <tt class="py-name">params</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">x</tt> <tt class="py-keyword">in</tt> <tt class="py-name">value</tt><tt class="py-op">:</tt> </tt>
+<a name="L167"></a><tt class="py-lineno">167</tt> <tt class="py-line"> <tt class="py-name">x</tt> <tt class="py-op">=</tt> <tt class="py-name">x</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'utf-8'</tt><tt class="py-op">)</tt> </tt>
+<a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"> <tt class="py-name">astuples</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">x</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt class="py-string">'encode'</tt><tt class="py-op">,</tt> <tt class="py-name">False</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-name">callable</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"> <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'utf-8'</tt><tt class="py-op">)</tt> </tt>
+<a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"> <tt class="py-name">astuples</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">'?'</tt> <tt class="py-op">+</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">urlencode</tt><tt class="py-op">(</tt><tt class="py-name">astuples</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"> </tt>
+<a name="BaseModel._log_response"></a><div id="BaseModel._log_response-def"><a name="L175"></a><tt class="py-lineno">175</tt> <a class="py-toggle" href="#" id="BaseModel._log_response-toggle" onclick="return toggle('BaseModel._log_response');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.model.BaseModel-class.html#_log_response">_log_response</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">resp</tt><tt class="py-op">,</tt> <tt class="py-param">content</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BaseModel._log_response-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="BaseModel._log_response-expanded"><a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"> <tt class="py-docstring">"""Logs debugging information about the response if requested."""</tt> </tt>
+<a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-23" class="py-name"><a title="apiclient.model.dump_request_response" class="py-name" href="#" onclick="return doclink('link-23', 'dump_request_response', 'link-5');">dump_request_response</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'--response-start--'</tt><tt class="py-op">)</tt> </tt>
+<a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">h</tt><tt class="py-op">,</tt> <tt class="py-name">v</tt> <tt class="py-keyword">in</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'%s: %s'</tt><tt class="py-op">,</tt> <tt class="py-name">h</tt><tt class="py-op">,</tt> <tt class="py-name">v</tt><tt class="py-op">)</tt> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">content</tt><tt class="py-op">:</tt> </tt>
+<a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
+<a name="L183"></a><tt class="py-lineno">183</tt> <tt class="py-line"> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'--response-end--'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"> </tt>
+<a name="BaseModel.response"></a><div id="BaseModel.response-def"><a name="L185"></a><tt class="py-lineno">185</tt> <a class="py-toggle" href="#" id="BaseModel.response-toggle" onclick="return toggle('BaseModel.response');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.model.BaseModel-class.html#response">response</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">resp</tt><tt class="py-op">,</tt> <tt class="py-param">content</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BaseModel.response-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="BaseModel.response-expanded"><a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"> <tt class="py-docstring">"""Convert the response wire format into a Python object.</tt> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L189"></a><tt class="py-lineno">189</tt> <tt class="py-line"><tt class="py-docstring"> resp: httplib2.Response, the HTTP response headers and status</tt> </tt>
+<a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"><tt class="py-docstring"> content: string, the body of the HTTP response</tt> </tt>
+<a name="L191"></a><tt class="py-lineno">191</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"><tt class="py-docstring"> The body de-serialized as a Python object.</tt> </tt>
<a name="L194"></a><tt class="py-lineno">194</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L195"></a><tt class="py-lineno">195</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"><tt class="py-docstring"> The body de-serialized as a Python object.</tt> </tt>
-<a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"><tt class="py-docstring"> Raises:</tt> </tt>
-<a name="L199"></a><tt class="py-lineno">199</tt> <tt class="py-line"><tt class="py-docstring"> apiclient.errors.HttpError if a non 2xx response is received.</tt> </tt>
-<a name="L200"></a><tt class="py-lineno">200</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L201"></a><tt class="py-lineno">201</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-22" class="py-name" targets="Method apiclient.model.BaseModel._log_response()=apiclient.model.BaseModel-class.html#_log_response"><a title="apiclient.model.BaseModel._log_response" class="py-name" href="#" onclick="return doclink('link-22', '_log_response', 'link-22');">_log_response</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
-<a name="L202"></a><tt class="py-lineno">202</tt> <tt class="py-line"> <tt class="py-comment"># Error handling is TBD, for example, do we retry</tt> </tt>
-<a name="L203"></a><tt class="py-lineno">203</tt> <tt class="py-line"> <tt class="py-comment"># for some operation/error combinations?</tt> </tt>
-<a name="L204"></a><tt class="py-lineno">204</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-op"><</tt> <tt class="py-number">300</tt><tt class="py-op">:</tt> </tt>
-<a name="L205"></a><tt class="py-lineno">205</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-op">==</tt> <tt class="py-number">204</tt><tt class="py-op">:</tt> </tt>
-<a name="L206"></a><tt class="py-lineno">206</tt> <tt class="py-line"> <tt class="py-comment"># A 204: No Content response should be treated differently</tt> </tt>
-<a name="L207"></a><tt class="py-lineno">207</tt> <tt class="py-line"> <tt class="py-comment"># to all the other success states</tt> </tt>
-<a name="L208"></a><tt class="py-lineno">208</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-23" class="py-name"><a title="apiclient.model.BaseModel.no_content_response
+<a name="L195"></a><tt class="py-lineno">195</tt> <tt class="py-line"><tt class="py-docstring"> Raises:</tt> </tt>
+<a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"><tt class="py-docstring"> apiclient.errors.HttpError if a non 2xx response is received.</tt> </tt>
+<a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-24" class="py-name" targets="Method apiclient.model.BaseModel._log_response()=apiclient.model.BaseModel-class.html#_log_response"><a title="apiclient.model.BaseModel._log_response" class="py-name" href="#" onclick="return doclink('link-24', '_log_response', 'link-24');">_log_response</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
+<a name="L199"></a><tt class="py-lineno">199</tt> <tt class="py-line"> <tt class="py-comment"># Error handling is TBD, for example, do we retry</tt> </tt>
+<a name="L200"></a><tt class="py-lineno">200</tt> <tt class="py-line"> <tt class="py-comment"># for some operation/error combinations?</tt> </tt>
+<a name="L201"></a><tt class="py-lineno">201</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-op"><</tt> <tt class="py-number">300</tt><tt class="py-op">:</tt> </tt>
+<a name="L202"></a><tt class="py-lineno">202</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-op">==</tt> <tt class="py-number">204</tt><tt class="py-op">:</tt> </tt>
+<a name="L203"></a><tt class="py-lineno">203</tt> <tt class="py-line"> <tt class="py-comment"># A 204: No Content response should be treated differently</tt> </tt>
+<a name="L204"></a><tt class="py-lineno">204</tt> <tt class="py-line"> <tt class="py-comment"># to all the other success states</tt> </tt>
+<a name="L205"></a><tt class="py-lineno">205</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-25" class="py-name"><a title="apiclient.model.BaseModel.no_content_response
apiclient.model.JsonModel.no_content_response
apiclient.model.MediaModel.no_content_response
apiclient.model.ProtocolBufferModel.no_content_response
-apiclient.model.RawModel.no_content_response" class="py-name" href="#" onclick="return doclink('link-23', 'no_content_response', 'link-10');">no_content_response</a></tt> </tt>
-<a name="L209"></a><tt class="py-lineno">209</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-24" class="py-name" targets="Method apiclient.model.BaseModel.deserialize()=apiclient.model.BaseModel-class.html#deserialize,Method apiclient.model.JsonModel.deserialize()=apiclient.model.JsonModel-class.html#deserialize,Method apiclient.model.MediaModel.deserialize()=apiclient.model.MediaModel-class.html#deserialize,Method apiclient.model.ProtocolBufferModel.deserialize()=apiclient.model.ProtocolBufferModel-class.html#deserialize,Method apiclient.model.RawModel.deserialize()=apiclient.model.RawModel-class.html#deserialize"><a title="apiclient.model.BaseModel.deserialize
+apiclient.model.RawModel.no_content_response" class="py-name" href="#" onclick="return doclink('link-25', 'no_content_response', 'link-10');">no_content_response</a></tt> </tt>
+<a name="L206"></a><tt class="py-lineno">206</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name" targets="Method apiclient.model.BaseModel.deserialize()=apiclient.model.BaseModel-class.html#deserialize,Method apiclient.model.JsonModel.deserialize()=apiclient.model.JsonModel-class.html#deserialize,Method apiclient.model.MediaModel.deserialize()=apiclient.model.MediaModel-class.html#deserialize,Method apiclient.model.ProtocolBufferModel.deserialize()=apiclient.model.ProtocolBufferModel-class.html#deserialize,Method apiclient.model.RawModel.deserialize()=apiclient.model.RawModel-class.html#deserialize"><a title="apiclient.model.BaseModel.deserialize
apiclient.model.JsonModel.deserialize
apiclient.model.MediaModel.deserialize
apiclient.model.ProtocolBufferModel.deserialize
-apiclient.model.RawModel.deserialize" class="py-name" href="#" onclick="return doclink('link-24', 'deserialize', 'link-24');">deserialize</a></tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
-<a name="L210"></a><tt class="py-lineno">210</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L211"></a><tt class="py-lineno">211</tt> <tt class="py-line"> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">'Content from bad request was: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
-<a name="L212"></a><tt class="py-lineno">212</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-25" class="py-name"><a title="apiclient.errors.HttpError" class="py-name" href="#" onclick="return doclink('link-25', 'HttpError', 'link-1');">HttpError</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L213"></a><tt class="py-lineno">213</tt> <tt class="py-line"> </tt>
-<a name="BaseModel.serialize"></a><div id="BaseModel.serialize-def"><a name="L214"></a><tt class="py-lineno">214</tt> <a class="py-toggle" href="#" id="BaseModel.serialize-toggle" onclick="return toggle('BaseModel.serialize');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.model.BaseModel-class.html#serialize">serialize</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">body_value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="BaseModel.serialize-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="BaseModel.serialize-expanded"><a name="L215"></a><tt class="py-lineno">215</tt> <tt class="py-line"> <tt class="py-docstring">"""Perform the actual Python object serialization.</tt> </tt>
+apiclient.model.RawModel.deserialize" class="py-name" href="#" onclick="return doclink('link-26', 'deserialize', 'link-26');">deserialize</a></tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
+<a name="L207"></a><tt class="py-lineno">207</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L208"></a><tt class="py-lineno">208</tt> <tt class="py-line"> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">'Content from bad request was: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
+<a name="L209"></a><tt class="py-lineno">209</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-27" class="py-name"><a title="apiclient.errors.HttpError" class="py-name" href="#" onclick="return doclink('link-27', 'HttpError', 'link-2');">HttpError</a></tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L210"></a><tt class="py-lineno">210</tt> <tt class="py-line"> </tt>
+<a name="BaseModel.serialize"></a><div id="BaseModel.serialize-def"><a name="L211"></a><tt class="py-lineno">211</tt> <a class="py-toggle" href="#" id="BaseModel.serialize-toggle" onclick="return toggle('BaseModel.serialize');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.model.BaseModel-class.html#serialize">serialize</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">body_value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BaseModel.serialize-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="BaseModel.serialize-expanded"><a name="L212"></a><tt class="py-lineno">212</tt> <tt class="py-line"> <tt class="py-docstring">"""Perform the actual Python object serialization.</tt> </tt>
+<a name="L213"></a><tt class="py-lineno">213</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L214"></a><tt class="py-lineno">214</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L215"></a><tt class="py-lineno">215</tt> <tt class="py-line"><tt class="py-docstring"> body_value: object, the request body as a Python object.</tt> </tt>
<a name="L216"></a><tt class="py-lineno">216</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L217"></a><tt class="py-lineno">217</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L218"></a><tt class="py-lineno">218</tt> <tt class="py-line"><tt class="py-docstring"> body_value: object, the request body as a Python object.</tt> </tt>
-<a name="L219"></a><tt class="py-lineno">219</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L220"></a><tt class="py-lineno">220</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L221"></a><tt class="py-lineno">221</tt> <tt class="py-line"><tt class="py-docstring"> string, the body in serialized form.</tt> </tt>
-<a name="L222"></a><tt class="py-lineno">222</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"> <tt id="link-26" class="py-name"><a title="apiclient.model._abstract
-oauth2client.client._abstract" class="py-name" href="#" onclick="return doclink('link-26', '_abstract', 'link-6');">_abstract</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L224"></a><tt class="py-lineno">224</tt> <tt class="py-line"> </tt>
-<a name="BaseModel.deserialize"></a><div id="BaseModel.deserialize-def"><a name="L225"></a><tt class="py-lineno">225</tt> <a class="py-toggle" href="#" id="BaseModel.deserialize-toggle" onclick="return toggle('BaseModel.deserialize');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.model.BaseModel-class.html#deserialize">deserialize</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">content</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="BaseModel.deserialize-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="BaseModel.deserialize-expanded"><a name="L226"></a><tt class="py-lineno">226</tt> <tt class="py-line"> <tt class="py-docstring">"""Perform the actual deserialization from response string to Python</tt> </tt>
-<a name="L227"></a><tt class="py-lineno">227</tt> <tt class="py-line"><tt class="py-docstring"> object.</tt> </tt>
+<a name="L217"></a><tt class="py-lineno">217</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L218"></a><tt class="py-lineno">218</tt> <tt class="py-line"><tt class="py-docstring"> string, the body in serialized form.</tt> </tt>
+<a name="L219"></a><tt class="py-lineno">219</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L220"></a><tt class="py-lineno">220</tt> <tt class="py-line"> <tt id="link-28" class="py-name"><a title="apiclient.model._abstract
+oauth2client.client._abstract" class="py-name" href="#" onclick="return doclink('link-28', '_abstract', 'link-6');">_abstract</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L221"></a><tt class="py-lineno">221</tt> <tt class="py-line"> </tt>
+<a name="BaseModel.deserialize"></a><div id="BaseModel.deserialize-def"><a name="L222"></a><tt class="py-lineno">222</tt> <a class="py-toggle" href="#" id="BaseModel.deserialize-toggle" onclick="return toggle('BaseModel.deserialize');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.model.BaseModel-class.html#deserialize">deserialize</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">content</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BaseModel.deserialize-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="BaseModel.deserialize-expanded"><a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"> <tt class="py-docstring">"""Perform the actual deserialization from response string to Python</tt> </tt>
+<a name="L224"></a><tt class="py-lineno">224</tt> <tt class="py-line"><tt class="py-docstring"> object.</tt> </tt>
+<a name="L225"></a><tt class="py-lineno">225</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L226"></a><tt class="py-lineno">226</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L227"></a><tt class="py-lineno">227</tt> <tt class="py-line"><tt class="py-docstring"> content: string, the body of the HTTP response</tt> </tt>
<a name="L228"></a><tt class="py-lineno">228</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L229"></a><tt class="py-lineno">229</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L230"></a><tt class="py-lineno">230</tt> <tt class="py-line"><tt class="py-docstring"> content: string, the body of the HTTP response</tt> </tt>
-<a name="L231"></a><tt class="py-lineno">231</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L232"></a><tt class="py-lineno">232</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L233"></a><tt class="py-lineno">233</tt> <tt class="py-line"><tt class="py-docstring"> The body de-serialized as a Python object.</tt> </tt>
-<a name="L234"></a><tt class="py-lineno">234</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L235"></a><tt class="py-lineno">235</tt> <tt class="py-line"> <tt id="link-27" class="py-name"><a title="apiclient.model._abstract
-oauth2client.client._abstract" class="py-name" href="#" onclick="return doclink('link-27', '_abstract', 'link-6');">_abstract</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L236"></a><tt class="py-lineno">236</tt> <tt class="py-line"> </tt>
-<a name="JsonModel"></a><div id="JsonModel-def"><a name="L237"></a><tt class="py-lineno">237</tt> <tt class="py-line"> </tt>
-<a name="L238"></a><tt class="py-lineno">238</tt> <a class="py-toggle" href="#" id="JsonModel-toggle" onclick="return toggle('JsonModel');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.model.JsonModel-class.html">JsonModel</a><tt class="py-op">(</tt><tt class="py-base-class">BaseModel</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="JsonModel-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="JsonModel-expanded"><a name="L239"></a><tt class="py-lineno">239</tt> <tt class="py-line"> <tt class="py-docstring">"""Model class for JSON.</tt> </tt>
-<a name="L240"></a><tt class="py-lineno">240</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L241"></a><tt class="py-lineno">241</tt> <tt class="py-line"><tt class="py-docstring"> Serializes and de-serializes between JSON and the Python</tt> </tt>
-<a name="L242"></a><tt class="py-lineno">242</tt> <tt class="py-line"><tt class="py-docstring"> object representation of HTTP request and response bodies.</tt> </tt>
-<a name="L243"></a><tt class="py-lineno">243</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L244"></a><tt class="py-lineno">244</tt> <tt class="py-line"> <tt id="link-28" class="py-name"><a title="apiclient.model.BaseModel.accept
+<a name="L229"></a><tt class="py-lineno">229</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L230"></a><tt class="py-lineno">230</tt> <tt class="py-line"><tt class="py-docstring"> The body de-serialized as a Python object.</tt> </tt>
+<a name="L231"></a><tt class="py-lineno">231</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L232"></a><tt class="py-lineno">232</tt> <tt class="py-line"> <tt id="link-29" class="py-name"><a title="apiclient.model._abstract
+oauth2client.client._abstract" class="py-name" href="#" onclick="return doclink('link-29', '_abstract', 'link-6');">_abstract</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L233"></a><tt class="py-lineno">233</tt> <tt class="py-line"> </tt>
+<a name="JsonModel"></a><div id="JsonModel-def"><a name="L234"></a><tt class="py-lineno">234</tt> <tt class="py-line"> </tt>
+<a name="L235"></a><tt class="py-lineno">235</tt> <a class="py-toggle" href="#" id="JsonModel-toggle" onclick="return toggle('JsonModel');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.model.JsonModel-class.html">JsonModel</a><tt class="py-op">(</tt><tt class="py-base-class">BaseModel</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="JsonModel-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="JsonModel-expanded"><a name="L236"></a><tt class="py-lineno">236</tt> <tt class="py-line"> <tt class="py-docstring">"""Model class for JSON.</tt> </tt>
+<a name="L237"></a><tt class="py-lineno">237</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L238"></a><tt class="py-lineno">238</tt> <tt class="py-line"><tt class="py-docstring"> Serializes and de-serializes between JSON and the Python</tt> </tt>
+<a name="L239"></a><tt class="py-lineno">239</tt> <tt class="py-line"><tt class="py-docstring"> object representation of HTTP request and response bodies.</tt> </tt>
+<a name="L240"></a><tt class="py-lineno">240</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L241"></a><tt class="py-lineno">241</tt> <tt class="py-line"> <tt id="link-30" class="py-name"><a title="apiclient.model.BaseModel.accept
apiclient.model.JsonModel.accept
apiclient.model.MediaModel.accept
apiclient.model.ProtocolBufferModel.accept
-apiclient.model.RawModel.accept" class="py-name" href="#" onclick="return doclink('link-28', 'accept', 'link-8');">accept</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'application/json'</tt> </tt>
-<a name="L245"></a><tt class="py-lineno">245</tt> <tt class="py-line"> <tt id="link-29" class="py-name"><a title="apiclient.model.BaseModel.content_type
+apiclient.model.RawModel.accept" class="py-name" href="#" onclick="return doclink('link-30', 'accept', 'link-8');">accept</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'application/json'</tt> </tt>
+<a name="L242"></a><tt class="py-lineno">242</tt> <tt class="py-line"> <tt id="link-31" class="py-name"><a title="apiclient.model.BaseModel.content_type
apiclient.model.JsonModel.content_type
apiclient.model.MediaModel.content_type
apiclient.model.ProtocolBufferModel.content_type
-apiclient.model.RawModel.content_type" class="py-name" href="#" onclick="return doclink('link-29', 'content_type', 'link-9');">content_type</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'application/json'</tt> </tt>
-<a name="L246"></a><tt class="py-lineno">246</tt> <tt class="py-line"> <tt id="link-30" class="py-name"><a title="apiclient.model.BaseModel.alt_param
+apiclient.model.RawModel.content_type" class="py-name" href="#" onclick="return doclink('link-31', 'content_type', 'link-9');">content_type</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'application/json'</tt> </tt>
+<a name="L243"></a><tt class="py-lineno">243</tt> <tt class="py-line"> <tt id="link-32" class="py-name"><a title="apiclient.model.BaseModel.alt_param
apiclient.model.JsonModel.alt_param
apiclient.model.MediaModel.alt_param
apiclient.model.ProtocolBufferModel.alt_param
-apiclient.model.RawModel.alt_param" class="py-name" href="#" onclick="return doclink('link-30', 'alt_param', 'link-11');">alt_param</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'json'</tt> </tt>
-<a name="L247"></a><tt class="py-lineno">247</tt> <tt class="py-line"> </tt>
-<a name="JsonModel.__init__"></a><div id="JsonModel.__init__-def"><a name="L248"></a><tt class="py-lineno">248</tt> <a class="py-toggle" href="#" id="JsonModel.__init__-toggle" onclick="return toggle('JsonModel.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.model.JsonModel-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data_wrapper</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="JsonModel.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="JsonModel.__init__-expanded"><a name="L249"></a><tt class="py-lineno">249</tt> <tt class="py-line"> <tt class="py-docstring">"""Construct a JsonModel.</tt> </tt>
-<a name="L250"></a><tt class="py-lineno">250</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L251"></a><tt class="py-lineno">251</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L252"></a><tt class="py-lineno">252</tt> <tt class="py-line"><tt class="py-docstring"> data_wrapper: boolean, wrap requests and responses in a data wrapper</tt> </tt>
-<a name="L253"></a><tt class="py-lineno">253</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L254"></a><tt class="py-lineno">254</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data_wrapper</tt> <tt class="py-op">=</tt> <tt class="py-name">data_wrapper</tt> </tt>
-</div><a name="L255"></a><tt class="py-lineno">255</tt> <tt class="py-line"> </tt>
-<a name="JsonModel.serialize"></a><div id="JsonModel.serialize-def"><a name="L256"></a><tt class="py-lineno">256</tt> <a class="py-toggle" href="#" id="JsonModel.serialize-toggle" onclick="return toggle('JsonModel.serialize');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.model.JsonModel-class.html#serialize">serialize</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">body_value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="JsonModel.serialize-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="JsonModel.serialize-expanded"><a name="L257"></a><tt class="py-lineno">257</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">body_value</tt><tt class="py-op">,</tt> <tt class="py-name">dict</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-string">'data'</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">body_value</tt> <tt class="py-keyword">and</tt> </tt>
-<a name="L258"></a><tt class="py-lineno">258</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data_wrapper</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L259"></a><tt class="py-lineno">259</tt> <tt class="py-line"> <tt class="py-name">body_value</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'data'</tt><tt class="py-op">:</tt> <tt class="py-name">body_value</tt><tt class="py-op">}</tt> </tt>
-<a name="L260"></a><tt class="py-lineno">260</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt class="py-name">dumps</tt><tt class="py-op">(</tt><tt class="py-name">body_value</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L261"></a><tt class="py-lineno">261</tt> <tt class="py-line"> </tt>
-<a name="JsonModel.deserialize"></a><div id="JsonModel.deserialize-def"><a name="L262"></a><tt class="py-lineno">262</tt> <a class="py-toggle" href="#" id="JsonModel.deserialize-toggle" onclick="return toggle('JsonModel.deserialize');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.model.JsonModel-class.html#deserialize">deserialize</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">content</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="JsonModel.deserialize-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="JsonModel.deserialize-expanded"><a name="L263"></a><tt class="py-lineno">263</tt> <tt class="py-line"> <tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-31" class="py-name" targets="Function oauth2client.clientsecrets.loads()=oauth2client.clientsecrets-module.html#loads"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-31', 'loads', 'link-31');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
-<a name="L264"></a><tt class="py-lineno">264</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data_wrapper</tt> <tt class="py-keyword">and</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">body</tt><tt class="py-op">,</tt> <tt class="py-name">dict</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-string">'data'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">body</tt><tt class="py-op">:</tt> </tt>
-<a name="L265"></a><tt class="py-lineno">265</tt> <tt class="py-line"> <tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">body</tt><tt class="py-op">[</tt><tt class="py-string">'data'</tt><tt class="py-op">]</tt> </tt>
-<a name="L266"></a><tt class="py-lineno">266</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">body</tt> </tt>
-</div><a name="L267"></a><tt class="py-lineno">267</tt> <tt class="py-line"> </tt>
-<a name="L268"></a><tt class="py-lineno">268</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">property</tt> </tt>
-<a name="JsonModel.no_content_response"></a><div id="JsonModel.no_content_response-def"><a name="L269"></a><tt class="py-lineno">269</tt> <a class="py-toggle" href="#" id="JsonModel.no_content_response-toggle" onclick="return toggle('JsonModel.no_content_response');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.model.JsonModel-class.html#no_content_response">no_content_response</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="JsonModel.no_content_response-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="JsonModel.no_content_response-expanded"><a name="L270"></a><tt class="py-lineno">270</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-</div></div><a name="L271"></a><tt class="py-lineno">271</tt> <tt class="py-line"> </tt>
-<a name="RawModel"></a><div id="RawModel-def"><a name="L272"></a><tt class="py-lineno">272</tt> <tt class="py-line"> </tt>
-<a name="L273"></a><tt class="py-lineno">273</tt> <a class="py-toggle" href="#" id="RawModel-toggle" onclick="return toggle('RawModel');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.model.RawModel-class.html">RawModel</a><tt class="py-op">(</tt><tt class="py-base-class">JsonModel</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="RawModel-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="RawModel-expanded"><a name="L274"></a><tt class="py-lineno">274</tt> <tt class="py-line"> <tt class="py-docstring">"""Model class for requests that don't return JSON.</tt> </tt>
-<a name="L275"></a><tt class="py-lineno">275</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L276"></a><tt class="py-lineno">276</tt> <tt class="py-line"><tt class="py-docstring"> Serializes and de-serializes between JSON and the Python</tt> </tt>
-<a name="L277"></a><tt class="py-lineno">277</tt> <tt class="py-line"><tt class="py-docstring"> object representation of HTTP request, and returns the raw bytes</tt> </tt>
-<a name="L278"></a><tt class="py-lineno">278</tt> <tt class="py-line"><tt class="py-docstring"> of the response body.</tt> </tt>
-<a name="L279"></a><tt class="py-lineno">279</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L280"></a><tt class="py-lineno">280</tt> <tt class="py-line"> <tt id="link-32" class="py-name"><a title="apiclient.model.BaseModel.accept
+apiclient.model.RawModel.alt_param" class="py-name" href="#" onclick="return doclink('link-32', 'alt_param', 'link-11');">alt_param</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'json'</tt> </tt>
+<a name="L244"></a><tt class="py-lineno">244</tt> <tt class="py-line"> </tt>
+<a name="JsonModel.__init__"></a><div id="JsonModel.__init__-def"><a name="L245"></a><tt class="py-lineno">245</tt> <a class="py-toggle" href="#" id="JsonModel.__init__-toggle" onclick="return toggle('JsonModel.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.model.JsonModel-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data_wrapper</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="JsonModel.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="JsonModel.__init__-expanded"><a name="L246"></a><tt class="py-lineno">246</tt> <tt class="py-line"> <tt class="py-docstring">"""Construct a JsonModel.</tt> </tt>
+<a name="L247"></a><tt class="py-lineno">247</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L248"></a><tt class="py-lineno">248</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L249"></a><tt class="py-lineno">249</tt> <tt class="py-line"><tt class="py-docstring"> data_wrapper: boolean, wrap requests and responses in a data wrapper</tt> </tt>
+<a name="L250"></a><tt class="py-lineno">250</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L251"></a><tt class="py-lineno">251</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data_wrapper</tt> <tt class="py-op">=</tt> <tt class="py-name">data_wrapper</tt> </tt>
+</div><a name="L252"></a><tt class="py-lineno">252</tt> <tt class="py-line"> </tt>
+<a name="JsonModel.serialize"></a><div id="JsonModel.serialize-def"><a name="L253"></a><tt class="py-lineno">253</tt> <a class="py-toggle" href="#" id="JsonModel.serialize-toggle" onclick="return toggle('JsonModel.serialize');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.model.JsonModel-class.html#serialize">serialize</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">body_value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="JsonModel.serialize-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="JsonModel.serialize-expanded"><a name="L254"></a><tt class="py-lineno">254</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">body_value</tt><tt class="py-op">,</tt> <tt class="py-name">dict</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-string">'data'</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">body_value</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L255"></a><tt class="py-lineno">255</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data_wrapper</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L256"></a><tt class="py-lineno">256</tt> <tt class="py-line"> <tt class="py-name">body_value</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'data'</tt><tt class="py-op">:</tt> <tt class="py-name">body_value</tt><tt class="py-op">}</tt> </tt>
+<a name="L257"></a><tt class="py-lineno">257</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt class="py-name">dumps</tt><tt class="py-op">(</tt><tt class="py-name">body_value</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L258"></a><tt class="py-lineno">258</tt> <tt class="py-line"> </tt>
+<a name="JsonModel.deserialize"></a><div id="JsonModel.deserialize-def"><a name="L259"></a><tt class="py-lineno">259</tt> <a class="py-toggle" href="#" id="JsonModel.deserialize-toggle" onclick="return toggle('JsonModel.deserialize');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.model.JsonModel-class.html#deserialize">deserialize</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">content</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="JsonModel.deserialize-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="JsonModel.deserialize-expanded"><a name="L260"></a><tt class="py-lineno">260</tt> <tt class="py-line"> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">content</tt><tt class="py-op">.</tt><tt class="py-name">decode</tt><tt class="py-op">(</tt><tt class="py-string">'utf-8'</tt><tt class="py-op">)</tt> </tt>
+<a name="L261"></a><tt class="py-lineno">261</tt> <tt class="py-line"> <tt id="link-33" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-33', 'body', 'link-13');">body</a></tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name" targets="Function oauth2client.clientsecrets.loads()=oauth2client.clientsecrets-module.html#loads"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-34', 'loads', 'link-34');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
+<a name="L262"></a><tt class="py-lineno">262</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data_wrapper</tt> <tt class="py-keyword">and</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt id="link-35" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-35', 'body', 'link-13');">body</a></tt><tt class="py-op">,</tt> <tt class="py-name">dict</tt><tt class="py-op">)</tt> <tt class="py-keyword">and</tt> <tt class="py-string">'data'</tt> <tt class="py-keyword">in</tt> <tt id="link-36" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-36', 'body', 'link-13');">body</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L263"></a><tt class="py-lineno">263</tt> <tt class="py-line"> <tt id="link-37" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-37', 'body', 'link-13');">body</a></tt> <tt class="py-op">=</tt> <tt id="link-38" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-38', 'body', 'link-13');">body</a></tt><tt class="py-op">[</tt><tt class="py-string">'data'</tt><tt class="py-op">]</tt> </tt>
+<a name="L264"></a><tt class="py-lineno">264</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-39" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-39', 'body', 'link-13');">body</a></tt> </tt>
+</div><a name="L265"></a><tt class="py-lineno">265</tt> <tt class="py-line"> </tt>
+<a name="L266"></a><tt class="py-lineno">266</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">property</tt> </tt>
+<a name="JsonModel.no_content_response"></a><div id="JsonModel.no_content_response-def"><a name="L267"></a><tt class="py-lineno">267</tt> <a class="py-toggle" href="#" id="JsonModel.no_content_response-toggle" onclick="return toggle('JsonModel.no_content_response');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.model.JsonModel-class.html#no_content_response">no_content_response</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="JsonModel.no_content_response-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="JsonModel.no_content_response-expanded"><a name="L268"></a><tt class="py-lineno">268</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+</div></div><a name="L269"></a><tt class="py-lineno">269</tt> <tt class="py-line"> </tt>
+<a name="RawModel"></a><div id="RawModel-def"><a name="L270"></a><tt class="py-lineno">270</tt> <tt class="py-line"> </tt>
+<a name="L271"></a><tt class="py-lineno">271</tt> <a class="py-toggle" href="#" id="RawModel-toggle" onclick="return toggle('RawModel');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.model.RawModel-class.html">RawModel</a><tt class="py-op">(</tt><tt class="py-base-class">JsonModel</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="RawModel-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="RawModel-expanded"><a name="L272"></a><tt class="py-lineno">272</tt> <tt class="py-line"> <tt class="py-docstring">"""Model class for requests that don't return JSON.</tt> </tt>
+<a name="L273"></a><tt class="py-lineno">273</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L274"></a><tt class="py-lineno">274</tt> <tt class="py-line"><tt class="py-docstring"> Serializes and de-serializes between JSON and the Python</tt> </tt>
+<a name="L275"></a><tt class="py-lineno">275</tt> <tt class="py-line"><tt class="py-docstring"> object representation of HTTP request, and returns the raw bytes</tt> </tt>
+<a name="L276"></a><tt class="py-lineno">276</tt> <tt class="py-line"><tt class="py-docstring"> of the response body.</tt> </tt>
+<a name="L277"></a><tt class="py-lineno">277</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L278"></a><tt class="py-lineno">278</tt> <tt class="py-line"> <tt id="link-40" class="py-name"><a title="apiclient.model.BaseModel.accept
apiclient.model.JsonModel.accept
apiclient.model.MediaModel.accept
apiclient.model.ProtocolBufferModel.accept
-apiclient.model.RawModel.accept" class="py-name" href="#" onclick="return doclink('link-32', 'accept', 'link-8');">accept</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'*/*'</tt> </tt>
-<a name="L281"></a><tt class="py-lineno">281</tt> <tt class="py-line"> <tt id="link-33" class="py-name"><a title="apiclient.model.BaseModel.content_type
+apiclient.model.RawModel.accept" class="py-name" href="#" onclick="return doclink('link-40', 'accept', 'link-8');">accept</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'*/*'</tt> </tt>
+<a name="L279"></a><tt class="py-lineno">279</tt> <tt class="py-line"> <tt id="link-41" class="py-name"><a title="apiclient.model.BaseModel.content_type
apiclient.model.JsonModel.content_type
apiclient.model.MediaModel.content_type
apiclient.model.ProtocolBufferModel.content_type
-apiclient.model.RawModel.content_type" class="py-name" href="#" onclick="return doclink('link-33', 'content_type', 'link-9');">content_type</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'application/json'</tt> </tt>
-<a name="L282"></a><tt class="py-lineno">282</tt> <tt class="py-line"> <tt id="link-34" class="py-name"><a title="apiclient.model.BaseModel.alt_param
+apiclient.model.RawModel.content_type" class="py-name" href="#" onclick="return doclink('link-41', 'content_type', 'link-9');">content_type</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'application/json'</tt> </tt>
+<a name="L280"></a><tt class="py-lineno">280</tt> <tt class="py-line"> <tt id="link-42" class="py-name"><a title="apiclient.model.BaseModel.alt_param
apiclient.model.JsonModel.alt_param
apiclient.model.MediaModel.alt_param
apiclient.model.ProtocolBufferModel.alt_param
-apiclient.model.RawModel.alt_param" class="py-name" href="#" onclick="return doclink('link-34', 'alt_param', 'link-11');">alt_param</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L283"></a><tt class="py-lineno">283</tt> <tt class="py-line"> </tt>
-<a name="RawModel.deserialize"></a><div id="RawModel.deserialize-def"><a name="L284"></a><tt class="py-lineno">284</tt> <a class="py-toggle" href="#" id="RawModel.deserialize-toggle" onclick="return toggle('RawModel.deserialize');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.model.RawModel-class.html#deserialize">deserialize</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">content</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="RawModel.deserialize-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="RawModel.deserialize-expanded"><a name="L285"></a><tt class="py-lineno">285</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">content</tt> </tt>
-</div><a name="L286"></a><tt class="py-lineno">286</tt> <tt class="py-line"> </tt>
-<a name="L287"></a><tt class="py-lineno">287</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">property</tt> </tt>
-<a name="RawModel.no_content_response"></a><div id="RawModel.no_content_response-def"><a name="L288"></a><tt class="py-lineno">288</tt> <a class="py-toggle" href="#" id="RawModel.no_content_response-toggle" onclick="return toggle('RawModel.no_content_response');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.model.RawModel-class.html#no_content_response">no_content_response</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="RawModel.no_content_response-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="RawModel.no_content_response-expanded"><a name="L289"></a><tt class="py-lineno">289</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">''</tt> </tt>
-</div></div><a name="L290"></a><tt class="py-lineno">290</tt> <tt class="py-line"> </tt>
-<a name="MediaModel"></a><div id="MediaModel-def"><a name="L291"></a><tt class="py-lineno">291</tt> <tt class="py-line"> </tt>
-<a name="L292"></a><tt class="py-lineno">292</tt> <a class="py-toggle" href="#" id="MediaModel-toggle" onclick="return toggle('MediaModel');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.model.MediaModel-class.html">MediaModel</a><tt class="py-op">(</tt><tt class="py-base-class">JsonModel</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="MediaModel-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="MediaModel-expanded"><a name="L293"></a><tt class="py-lineno">293</tt> <tt class="py-line"> <tt class="py-docstring">"""Model class for requests that return Media.</tt> </tt>
-<a name="L294"></a><tt class="py-lineno">294</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L295"></a><tt class="py-lineno">295</tt> <tt class="py-line"><tt class="py-docstring"> Serializes and de-serializes between JSON and the Python</tt> </tt>
-<a name="L296"></a><tt class="py-lineno">296</tt> <tt class="py-line"><tt class="py-docstring"> object representation of HTTP request, and returns the raw bytes</tt> </tt>
-<a name="L297"></a><tt class="py-lineno">297</tt> <tt class="py-line"><tt class="py-docstring"> of the response body.</tt> </tt>
-<a name="L298"></a><tt class="py-lineno">298</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L299"></a><tt class="py-lineno">299</tt> <tt class="py-line"> <tt id="link-35" class="py-name"><a title="apiclient.model.BaseModel.accept
+apiclient.model.RawModel.alt_param" class="py-name" href="#" onclick="return doclink('link-42', 'alt_param', 'link-11');">alt_param</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L281"></a><tt class="py-lineno">281</tt> <tt class="py-line"> </tt>
+<a name="RawModel.deserialize"></a><div id="RawModel.deserialize-def"><a name="L282"></a><tt class="py-lineno">282</tt> <a class="py-toggle" href="#" id="RawModel.deserialize-toggle" onclick="return toggle('RawModel.deserialize');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.model.RawModel-class.html#deserialize">deserialize</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">content</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="RawModel.deserialize-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="RawModel.deserialize-expanded"><a name="L283"></a><tt class="py-lineno">283</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">content</tt> </tt>
+</div><a name="L284"></a><tt class="py-lineno">284</tt> <tt class="py-line"> </tt>
+<a name="L285"></a><tt class="py-lineno">285</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">property</tt> </tt>
+<a name="RawModel.no_content_response"></a><div id="RawModel.no_content_response-def"><a name="L286"></a><tt class="py-lineno">286</tt> <a class="py-toggle" href="#" id="RawModel.no_content_response-toggle" onclick="return toggle('RawModel.no_content_response');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.model.RawModel-class.html#no_content_response">no_content_response</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="RawModel.no_content_response-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="RawModel.no_content_response-expanded"><a name="L287"></a><tt class="py-lineno">287</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">''</tt> </tt>
+</div></div><a name="L288"></a><tt class="py-lineno">288</tt> <tt class="py-line"> </tt>
+<a name="MediaModel"></a><div id="MediaModel-def"><a name="L289"></a><tt class="py-lineno">289</tt> <tt class="py-line"> </tt>
+<a name="L290"></a><tt class="py-lineno">290</tt> <a class="py-toggle" href="#" id="MediaModel-toggle" onclick="return toggle('MediaModel');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.model.MediaModel-class.html">MediaModel</a><tt class="py-op">(</tt><tt class="py-base-class">JsonModel</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="MediaModel-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="MediaModel-expanded"><a name="L291"></a><tt class="py-lineno">291</tt> <tt class="py-line"> <tt class="py-docstring">"""Model class for requests that return Media.</tt> </tt>
+<a name="L292"></a><tt class="py-lineno">292</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L293"></a><tt class="py-lineno">293</tt> <tt class="py-line"><tt class="py-docstring"> Serializes and de-serializes between JSON and the Python</tt> </tt>
+<a name="L294"></a><tt class="py-lineno">294</tt> <tt class="py-line"><tt class="py-docstring"> object representation of HTTP request, and returns the raw bytes</tt> </tt>
+<a name="L295"></a><tt class="py-lineno">295</tt> <tt class="py-line"><tt class="py-docstring"> of the response body.</tt> </tt>
+<a name="L296"></a><tt class="py-lineno">296</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L297"></a><tt class="py-lineno">297</tt> <tt class="py-line"> <tt id="link-43" class="py-name"><a title="apiclient.model.BaseModel.accept
apiclient.model.JsonModel.accept
apiclient.model.MediaModel.accept
apiclient.model.ProtocolBufferModel.accept
-apiclient.model.RawModel.accept" class="py-name" href="#" onclick="return doclink('link-35', 'accept', 'link-8');">accept</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'*/*'</tt> </tt>
-<a name="L300"></a><tt class="py-lineno">300</tt> <tt class="py-line"> <tt id="link-36" class="py-name"><a title="apiclient.model.BaseModel.content_type
+apiclient.model.RawModel.accept" class="py-name" href="#" onclick="return doclink('link-43', 'accept', 'link-8');">accept</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'*/*'</tt> </tt>
+<a name="L298"></a><tt class="py-lineno">298</tt> <tt class="py-line"> <tt id="link-44" class="py-name"><a title="apiclient.model.BaseModel.content_type
apiclient.model.JsonModel.content_type
apiclient.model.MediaModel.content_type
apiclient.model.ProtocolBufferModel.content_type
-apiclient.model.RawModel.content_type" class="py-name" href="#" onclick="return doclink('link-36', 'content_type', 'link-9');">content_type</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'application/json'</tt> </tt>
-<a name="L301"></a><tt class="py-lineno">301</tt> <tt class="py-line"> <tt id="link-37" class="py-name"><a title="apiclient.model.BaseModel.alt_param
+apiclient.model.RawModel.content_type" class="py-name" href="#" onclick="return doclink('link-44', 'content_type', 'link-9');">content_type</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'application/json'</tt> </tt>
+<a name="L299"></a><tt class="py-lineno">299</tt> <tt class="py-line"> <tt id="link-45" class="py-name"><a title="apiclient.model.BaseModel.alt_param
apiclient.model.JsonModel.alt_param
apiclient.model.MediaModel.alt_param
apiclient.model.ProtocolBufferModel.alt_param
-apiclient.model.RawModel.alt_param" class="py-name" href="#" onclick="return doclink('link-37', 'alt_param', 'link-11');">alt_param</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'media'</tt> </tt>
-<a name="L302"></a><tt class="py-lineno">302</tt> <tt class="py-line"> </tt>
-<a name="MediaModel.deserialize"></a><div id="MediaModel.deserialize-def"><a name="L303"></a><tt class="py-lineno">303</tt> <a class="py-toggle" href="#" id="MediaModel.deserialize-toggle" onclick="return toggle('MediaModel.deserialize');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.model.MediaModel-class.html#deserialize">deserialize</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">content</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="MediaModel.deserialize-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="MediaModel.deserialize-expanded"><a name="L304"></a><tt class="py-lineno">304</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">content</tt> </tt>
-</div><a name="L305"></a><tt class="py-lineno">305</tt> <tt class="py-line"> </tt>
-<a name="L306"></a><tt class="py-lineno">306</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">property</tt> </tt>
-<a name="MediaModel.no_content_response"></a><div id="MediaModel.no_content_response-def"><a name="L307"></a><tt class="py-lineno">307</tt> <a class="py-toggle" href="#" id="MediaModel.no_content_response-toggle" onclick="return toggle('MediaModel.no_content_response');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.model.MediaModel-class.html#no_content_response">no_content_response</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="MediaModel.no_content_response-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="MediaModel.no_content_response-expanded"><a name="L308"></a><tt class="py-lineno">308</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">''</tt> </tt>
-</div></div><a name="L309"></a><tt class="py-lineno">309</tt> <tt class="py-line"> </tt>
-<a name="ProtocolBufferModel"></a><div id="ProtocolBufferModel-def"><a name="L310"></a><tt class="py-lineno">310</tt> <tt class="py-line"> </tt>
-<a name="L311"></a><tt class="py-lineno">311</tt> <a class="py-toggle" href="#" id="ProtocolBufferModel-toggle" onclick="return toggle('ProtocolBufferModel');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.model.ProtocolBufferModel-class.html">ProtocolBufferModel</a><tt class="py-op">(</tt><tt class="py-base-class">BaseModel</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ProtocolBufferModel-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="ProtocolBufferModel-expanded"><a name="L312"></a><tt class="py-lineno">312</tt> <tt class="py-line"> <tt class="py-docstring">"""Model class for protocol buffers.</tt> </tt>
-<a name="L313"></a><tt class="py-lineno">313</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L314"></a><tt class="py-lineno">314</tt> <tt class="py-line"><tt class="py-docstring"> Serializes and de-serializes the binary protocol buffer sent in the HTTP</tt> </tt>
-<a name="L315"></a><tt class="py-lineno">315</tt> <tt class="py-line"><tt class="py-docstring"> request and response bodies.</tt> </tt>
-<a name="L316"></a><tt class="py-lineno">316</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L317"></a><tt class="py-lineno">317</tt> <tt class="py-line"> <tt id="link-38" class="py-name"><a title="apiclient.model.BaseModel.accept
+apiclient.model.RawModel.alt_param" class="py-name" href="#" onclick="return doclink('link-45', 'alt_param', 'link-11');">alt_param</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'media'</tt> </tt>
+<a name="L300"></a><tt class="py-lineno">300</tt> <tt class="py-line"> </tt>
+<a name="MediaModel.deserialize"></a><div id="MediaModel.deserialize-def"><a name="L301"></a><tt class="py-lineno">301</tt> <a class="py-toggle" href="#" id="MediaModel.deserialize-toggle" onclick="return toggle('MediaModel.deserialize');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.model.MediaModel-class.html#deserialize">deserialize</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">content</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="MediaModel.deserialize-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="MediaModel.deserialize-expanded"><a name="L302"></a><tt class="py-lineno">302</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">content</tt> </tt>
+</div><a name="L303"></a><tt class="py-lineno">303</tt> <tt class="py-line"> </tt>
+<a name="L304"></a><tt class="py-lineno">304</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">property</tt> </tt>
+<a name="MediaModel.no_content_response"></a><div id="MediaModel.no_content_response-def"><a name="L305"></a><tt class="py-lineno">305</tt> <a class="py-toggle" href="#" id="MediaModel.no_content_response-toggle" onclick="return toggle('MediaModel.no_content_response');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.model.MediaModel-class.html#no_content_response">no_content_response</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="MediaModel.no_content_response-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="MediaModel.no_content_response-expanded"><a name="L306"></a><tt class="py-lineno">306</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">''</tt> </tt>
+</div></div><a name="L307"></a><tt class="py-lineno">307</tt> <tt class="py-line"> </tt>
+<a name="ProtocolBufferModel"></a><div id="ProtocolBufferModel-def"><a name="L308"></a><tt class="py-lineno">308</tt> <tt class="py-line"> </tt>
+<a name="L309"></a><tt class="py-lineno">309</tt> <a class="py-toggle" href="#" id="ProtocolBufferModel-toggle" onclick="return toggle('ProtocolBufferModel');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="apiclient.model.ProtocolBufferModel-class.html">ProtocolBufferModel</a><tt class="py-op">(</tt><tt class="py-base-class">BaseModel</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ProtocolBufferModel-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="ProtocolBufferModel-expanded"><a name="L310"></a><tt class="py-lineno">310</tt> <tt class="py-line"> <tt class="py-docstring">"""Model class for protocol buffers.</tt> </tt>
+<a name="L311"></a><tt class="py-lineno">311</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L312"></a><tt class="py-lineno">312</tt> <tt class="py-line"><tt class="py-docstring"> Serializes and de-serializes the binary protocol buffer sent in the HTTP</tt> </tt>
+<a name="L313"></a><tt class="py-lineno">313</tt> <tt class="py-line"><tt class="py-docstring"> request and response bodies.</tt> </tt>
+<a name="L314"></a><tt class="py-lineno">314</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L315"></a><tt class="py-lineno">315</tt> <tt class="py-line"> <tt id="link-46" class="py-name"><a title="apiclient.model.BaseModel.accept
apiclient.model.JsonModel.accept
apiclient.model.MediaModel.accept
apiclient.model.ProtocolBufferModel.accept
-apiclient.model.RawModel.accept" class="py-name" href="#" onclick="return doclink('link-38', 'accept', 'link-8');">accept</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'application/x-protobuf'</tt> </tt>
-<a name="L318"></a><tt class="py-lineno">318</tt> <tt class="py-line"> <tt id="link-39" class="py-name"><a title="apiclient.model.BaseModel.content_type
+apiclient.model.RawModel.accept" class="py-name" href="#" onclick="return doclink('link-46', 'accept', 'link-8');">accept</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'application/x-protobuf'</tt> </tt>
+<a name="L316"></a><tt class="py-lineno">316</tt> <tt class="py-line"> <tt id="link-47" class="py-name"><a title="apiclient.model.BaseModel.content_type
apiclient.model.JsonModel.content_type
apiclient.model.MediaModel.content_type
apiclient.model.ProtocolBufferModel.content_type
-apiclient.model.RawModel.content_type" class="py-name" href="#" onclick="return doclink('link-39', 'content_type', 'link-9');">content_type</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'application/x-protobuf'</tt> </tt>
-<a name="L319"></a><tt class="py-lineno">319</tt> <tt class="py-line"> <tt id="link-40" class="py-name"><a title="apiclient.model.BaseModel.alt_param
+apiclient.model.RawModel.content_type" class="py-name" href="#" onclick="return doclink('link-47', 'content_type', 'link-9');">content_type</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'application/x-protobuf'</tt> </tt>
+<a name="L317"></a><tt class="py-lineno">317</tt> <tt class="py-line"> <tt id="link-48" class="py-name"><a title="apiclient.model.BaseModel.alt_param
apiclient.model.JsonModel.alt_param
apiclient.model.MediaModel.alt_param
apiclient.model.ProtocolBufferModel.alt_param
-apiclient.model.RawModel.alt_param" class="py-name" href="#" onclick="return doclink('link-40', 'alt_param', 'link-11');">alt_param</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'proto'</tt> </tt>
-<a name="L320"></a><tt class="py-lineno">320</tt> <tt class="py-line"> </tt>
-<a name="ProtocolBufferModel.__init__"></a><div id="ProtocolBufferModel.__init__-def"><a name="L321"></a><tt class="py-lineno">321</tt> <a class="py-toggle" href="#" id="ProtocolBufferModel.__init__-toggle" onclick="return toggle('ProtocolBufferModel.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.model.ProtocolBufferModel-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">protocol_buffer</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ProtocolBufferModel.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="ProtocolBufferModel.__init__-expanded"><a name="L322"></a><tt class="py-lineno">322</tt> <tt class="py-line"> <tt class="py-docstring">"""Constructs a ProtocolBufferModel.</tt> </tt>
-<a name="L323"></a><tt class="py-lineno">323</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L324"></a><tt class="py-lineno">324</tt> <tt class="py-line"><tt class="py-docstring"> The serialzed protocol buffer returned in an HTTP response will be</tt> </tt>
-<a name="L325"></a><tt class="py-lineno">325</tt> <tt class="py-line"><tt class="py-docstring"> de-serialized using the given protocol buffer class.</tt> </tt>
-<a name="L326"></a><tt class="py-lineno">326</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L327"></a><tt class="py-lineno">327</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L328"></a><tt class="py-lineno">328</tt> <tt class="py-line"><tt class="py-docstring"> protocol_buffer: The protocol buffer class used to de-serialize a</tt> </tt>
-<a name="L329"></a><tt class="py-lineno">329</tt> <tt class="py-line"><tt class="py-docstring"> response from the API.</tt> </tt>
-<a name="L330"></a><tt class="py-lineno">330</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L331"></a><tt class="py-lineno">331</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_protocol_buffer</tt> <tt class="py-op">=</tt> <tt class="py-name">protocol_buffer</tt> </tt>
-</div><a name="L332"></a><tt class="py-lineno">332</tt> <tt class="py-line"> </tt>
-<a name="ProtocolBufferModel.serialize"></a><div id="ProtocolBufferModel.serialize-def"><a name="L333"></a><tt class="py-lineno">333</tt> <a class="py-toggle" href="#" id="ProtocolBufferModel.serialize-toggle" onclick="return toggle('ProtocolBufferModel.serialize');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.model.ProtocolBufferModel-class.html#serialize">serialize</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">body_value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ProtocolBufferModel.serialize-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="ProtocolBufferModel.serialize-expanded"><a name="L334"></a><tt class="py-lineno">334</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">body_value</tt><tt class="py-op">.</tt><tt class="py-name">SerializeToString</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L335"></a><tt class="py-lineno">335</tt> <tt class="py-line"> </tt>
-<a name="ProtocolBufferModel.deserialize"></a><div id="ProtocolBufferModel.deserialize-def"><a name="L336"></a><tt class="py-lineno">336</tt> <a class="py-toggle" href="#" id="ProtocolBufferModel.deserialize-toggle" onclick="return toggle('ProtocolBufferModel.deserialize');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.model.ProtocolBufferModel-class.html#deserialize">deserialize</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">content</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ProtocolBufferModel.deserialize-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="ProtocolBufferModel.deserialize-expanded"><a name="L337"></a><tt class="py-lineno">337</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_protocol_buffer</tt><tt class="py-op">.</tt><tt class="py-name">FromString</tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L338"></a><tt class="py-lineno">338</tt> <tt class="py-line"> </tt>
-<a name="L339"></a><tt class="py-lineno">339</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">property</tt> </tt>
-<a name="ProtocolBufferModel.no_content_response"></a><div id="ProtocolBufferModel.no_content_response-def"><a name="L340"></a><tt class="py-lineno">340</tt> <a class="py-toggle" href="#" id="ProtocolBufferModel.no_content_response-toggle" onclick="return toggle('ProtocolBufferModel.no_content_response');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.model.ProtocolBufferModel-class.html#no_content_response">no_content_response</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ProtocolBufferModel.no_content_response-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="ProtocolBufferModel.no_content_response-expanded"><a name="L341"></a><tt class="py-lineno">341</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_protocol_buffer</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L342"></a><tt class="py-lineno">342</tt> <tt class="py-line"> </tt>
-<a name="makepatch"></a><div id="makepatch-def"><a name="L343"></a><tt class="py-lineno">343</tt> <tt class="py-line"> </tt>
-<a name="L344"></a><tt class="py-lineno">344</tt> <a class="py-toggle" href="#" id="makepatch-toggle" onclick="return toggle('makepatch');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.model-module.html#makepatch">makepatch</a><tt class="py-op">(</tt><tt class="py-param">original</tt><tt class="py-op">,</tt> <tt class="py-param">modified</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="makepatch-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="makepatch-expanded"><a name="L345"></a><tt class="py-lineno">345</tt> <tt class="py-line"> <tt class="py-docstring">"""Create a patch object.</tt> </tt>
-<a name="L346"></a><tt class="py-lineno">346</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L347"></a><tt class="py-lineno">347</tt> <tt class="py-line"><tt class="py-docstring"> Some methods support PATCH, an efficient way to send updates to a resource.</tt> </tt>
-<a name="L348"></a><tt class="py-lineno">348</tt> <tt class="py-line"><tt class="py-docstring"> This method allows the easy construction of patch bodies by looking at the</tt> </tt>
-<a name="L349"></a><tt class="py-lineno">349</tt> <tt class="py-line"><tt class="py-docstring"> differences between a resource before and after it was modified.</tt> </tt>
-<a name="L350"></a><tt class="py-lineno">350</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L351"></a><tt class="py-lineno">351</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L352"></a><tt class="py-lineno">352</tt> <tt class="py-line"><tt class="py-docstring"> original: object, the original deserialized resource</tt> </tt>
-<a name="L353"></a><tt class="py-lineno">353</tt> <tt class="py-line"><tt class="py-docstring"> modified: object, the modified deserialized resource</tt> </tt>
-<a name="L354"></a><tt class="py-lineno">354</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L355"></a><tt class="py-lineno">355</tt> <tt class="py-line"><tt class="py-docstring"> An object that contains only the changes from original to modified, in a</tt> </tt>
-<a name="L356"></a><tt class="py-lineno">356</tt> <tt class="py-line"><tt class="py-docstring"> form suitable to pass to a PATCH method.</tt> </tt>
-<a name="L357"></a><tt class="py-lineno">357</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L358"></a><tt class="py-lineno">358</tt> <tt class="py-line"><tt class="py-docstring"> Example usage:</tt> </tt>
-<a name="L359"></a><tt class="py-lineno">359</tt> <tt class="py-line"><tt class="py-docstring"> item = service.activities().get(postid=postid, userid=userid).execute()</tt> </tt>
-<a name="L360"></a><tt class="py-lineno">360</tt> <tt class="py-line"><tt class="py-docstring"> original = copy.deepcopy(item)</tt> </tt>
-<a name="L361"></a><tt class="py-lineno">361</tt> <tt class="py-line"><tt class="py-docstring"> item['object']['content'] = 'This is updated.'</tt> </tt>
-<a name="L362"></a><tt class="py-lineno">362</tt> <tt class="py-line"><tt class="py-docstring"> service.activities.patch(postid=postid, userid=userid,</tt> </tt>
-<a name="L363"></a><tt class="py-lineno">363</tt> <tt class="py-line"><tt class="py-docstring"> body=makepatch(original, item)).execute()</tt> </tt>
-<a name="L364"></a><tt class="py-lineno">364</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L365"></a><tt class="py-lineno">365</tt> <tt class="py-line"> <tt class="py-name">patch</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-<a name="L366"></a><tt class="py-lineno">366</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">original_value</tt> <tt class="py-keyword">in</tt> <tt class="py-name">original</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L367"></a><tt class="py-lineno">367</tt> <tt class="py-line"> <tt class="py-name">modified_value</tt> <tt class="py-op">=</tt> <tt class="py-name">modified</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name" targets="Method apiclient.schema.Schemas.get()=apiclient.schema.Schemas-class.html#get,Method oauth2client.client.MemoryCache.get()=oauth2client.client.MemoryCache-class.html#get,Method oauth2client.client.Storage.get()=oauth2client.client.Storage-class.html#get"><a title="apiclient.schema.Schemas.get
+apiclient.model.RawModel.alt_param" class="py-name" href="#" onclick="return doclink('link-48', 'alt_param', 'link-11');">alt_param</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'proto'</tt> </tt>
+<a name="L318"></a><tt class="py-lineno">318</tt> <tt class="py-line"> </tt>
+<a name="ProtocolBufferModel.__init__"></a><div id="ProtocolBufferModel.__init__-def"><a name="L319"></a><tt class="py-lineno">319</tt> <a class="py-toggle" href="#" id="ProtocolBufferModel.__init__-toggle" onclick="return toggle('ProtocolBufferModel.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.model.ProtocolBufferModel-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">protocol_buffer</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ProtocolBufferModel.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="ProtocolBufferModel.__init__-expanded"><a name="L320"></a><tt class="py-lineno">320</tt> <tt class="py-line"> <tt class="py-docstring">"""Constructs a ProtocolBufferModel.</tt> </tt>
+<a name="L321"></a><tt class="py-lineno">321</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L322"></a><tt class="py-lineno">322</tt> <tt class="py-line"><tt class="py-docstring"> The serialzed protocol buffer returned in an HTTP response will be</tt> </tt>
+<a name="L323"></a><tt class="py-lineno">323</tt> <tt class="py-line"><tt class="py-docstring"> de-serialized using the given protocol buffer class.</tt> </tt>
+<a name="L324"></a><tt class="py-lineno">324</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L325"></a><tt class="py-lineno">325</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L326"></a><tt class="py-lineno">326</tt> <tt class="py-line"><tt class="py-docstring"> protocol_buffer: The protocol buffer class used to de-serialize a</tt> </tt>
+<a name="L327"></a><tt class="py-lineno">327</tt> <tt class="py-line"><tt class="py-docstring"> response from the API.</tt> </tt>
+<a name="L328"></a><tt class="py-lineno">328</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L329"></a><tt class="py-lineno">329</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_protocol_buffer</tt> <tt class="py-op">=</tt> <tt class="py-name">protocol_buffer</tt> </tt>
+</div><a name="L330"></a><tt class="py-lineno">330</tt> <tt class="py-line"> </tt>
+<a name="ProtocolBufferModel.serialize"></a><div id="ProtocolBufferModel.serialize-def"><a name="L331"></a><tt class="py-lineno">331</tt> <a class="py-toggle" href="#" id="ProtocolBufferModel.serialize-toggle" onclick="return toggle('ProtocolBufferModel.serialize');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.model.ProtocolBufferModel-class.html#serialize">serialize</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">body_value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ProtocolBufferModel.serialize-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="ProtocolBufferModel.serialize-expanded"><a name="L332"></a><tt class="py-lineno">332</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">body_value</tt><tt class="py-op">.</tt><tt class="py-name">SerializeToString</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L333"></a><tt class="py-lineno">333</tt> <tt class="py-line"> </tt>
+<a name="ProtocolBufferModel.deserialize"></a><div id="ProtocolBufferModel.deserialize-def"><a name="L334"></a><tt class="py-lineno">334</tt> <a class="py-toggle" href="#" id="ProtocolBufferModel.deserialize-toggle" onclick="return toggle('ProtocolBufferModel.deserialize');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.model.ProtocolBufferModel-class.html#deserialize">deserialize</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">content</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ProtocolBufferModel.deserialize-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="ProtocolBufferModel.deserialize-expanded"><a name="L335"></a><tt class="py-lineno">335</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_protocol_buffer</tt><tt class="py-op">.</tt><tt class="py-name">FromString</tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L336"></a><tt class="py-lineno">336</tt> <tt class="py-line"> </tt>
+<a name="L337"></a><tt class="py-lineno">337</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">property</tt> </tt>
+<a name="ProtocolBufferModel.no_content_response"></a><div id="ProtocolBufferModel.no_content_response-def"><a name="L338"></a><tt class="py-lineno">338</tt> <a class="py-toggle" href="#" id="ProtocolBufferModel.no_content_response-toggle" onclick="return toggle('ProtocolBufferModel.no_content_response');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.model.ProtocolBufferModel-class.html#no_content_response">no_content_response</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ProtocolBufferModel.no_content_response-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="ProtocolBufferModel.no_content_response-expanded"><a name="L339"></a><tt class="py-lineno">339</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_protocol_buffer</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L340"></a><tt class="py-lineno">340</tt> <tt class="py-line"> </tt>
+<a name="makepatch"></a><div id="makepatch-def"><a name="L341"></a><tt class="py-lineno">341</tt> <tt class="py-line"> </tt>
+<a name="L342"></a><tt class="py-lineno">342</tt> <a class="py-toggle" href="#" id="makepatch-toggle" onclick="return toggle('makepatch');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.model-module.html#makepatch">makepatch</a><tt class="py-op">(</tt><tt class="py-param">original</tt><tt class="py-op">,</tt> <tt class="py-param">modified</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="makepatch-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="makepatch-expanded"><a name="L343"></a><tt class="py-lineno">343</tt> <tt class="py-line"> <tt class="py-docstring">"""Create a patch object.</tt> </tt>
+<a name="L344"></a><tt class="py-lineno">344</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L345"></a><tt class="py-lineno">345</tt> <tt class="py-line"><tt class="py-docstring"> Some methods support PATCH, an efficient way to send updates to a resource.</tt> </tt>
+<a name="L346"></a><tt class="py-lineno">346</tt> <tt class="py-line"><tt class="py-docstring"> This method allows the easy construction of patch bodies by looking at the</tt> </tt>
+<a name="L347"></a><tt class="py-lineno">347</tt> <tt class="py-line"><tt class="py-docstring"> differences between a resource before and after it was modified.</tt> </tt>
+<a name="L348"></a><tt class="py-lineno">348</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L349"></a><tt class="py-lineno">349</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L350"></a><tt class="py-lineno">350</tt> <tt class="py-line"><tt class="py-docstring"> original: object, the original deserialized resource</tt> </tt>
+<a name="L351"></a><tt class="py-lineno">351</tt> <tt class="py-line"><tt class="py-docstring"> modified: object, the modified deserialized resource</tt> </tt>
+<a name="L352"></a><tt class="py-lineno">352</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L353"></a><tt class="py-lineno">353</tt> <tt class="py-line"><tt class="py-docstring"> An object that contains only the changes from original to modified, in a</tt> </tt>
+<a name="L354"></a><tt class="py-lineno">354</tt> <tt class="py-line"><tt class="py-docstring"> form suitable to pass to a PATCH method.</tt> </tt>
+<a name="L355"></a><tt class="py-lineno">355</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L356"></a><tt class="py-lineno">356</tt> <tt class="py-line"><tt class="py-docstring"> Example usage:</tt> </tt>
+<a name="L357"></a><tt class="py-lineno">357</tt> <tt class="py-line"><tt class="py-docstring"> item = service.activities().get(postid=postid, userid=userid).execute()</tt> </tt>
+<a name="L358"></a><tt class="py-lineno">358</tt> <tt class="py-line"><tt class="py-docstring"> original = copy.deepcopy(item)</tt> </tt>
+<a name="L359"></a><tt class="py-lineno">359</tt> <tt class="py-line"><tt class="py-docstring"> item['object']['content'] = 'This is updated.'</tt> </tt>
+<a name="L360"></a><tt class="py-lineno">360</tt> <tt class="py-line"><tt class="py-docstring"> service.activities.patch(postid=postid, userid=userid,</tt> </tt>
+<a name="L361"></a><tt class="py-lineno">361</tt> <tt class="py-line"><tt class="py-docstring"> body=makepatch(original, item)).execute()</tt> </tt>
+<a name="L362"></a><tt class="py-lineno">362</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L363"></a><tt class="py-lineno">363</tt> <tt class="py-line"> <tt class="py-name">patch</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L364"></a><tt class="py-lineno">364</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">original_value</tt> <tt class="py-keyword">in</tt> <tt class="py-name">original</tt><tt class="py-op">.</tt><tt class="py-name">iteritems</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L365"></a><tt class="py-lineno">365</tt> <tt class="py-line"> <tt class="py-name">modified_value</tt> <tt class="py-op">=</tt> <tt class="py-name">modified</tt><tt class="py-op">.</tt><tt id="link-49" class="py-name" targets="Method apiclient.schema.Schemas.get()=apiclient.schema.Schemas-class.html#get,Method oauth2client.client.MemoryCache.get()=oauth2client.client.MemoryCache-class.html#get,Method oauth2client.client.Storage.get()=oauth2client.client.Storage-class.html#get"><a title="apiclient.schema.Schemas.get
oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-41', 'get', 'link-41');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
-<a name="L368"></a><tt class="py-lineno">368</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">modified_value</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L369"></a><tt class="py-lineno">369</tt> <tt class="py-line"> <tt class="py-comment"># Use None to signal that the element is deleted</tt> </tt>
-<a name="L370"></a><tt class="py-lineno">370</tt> <tt class="py-line"> <tt class="py-name">patch</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L371"></a><tt class="py-lineno">371</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">original_value</tt> <tt class="py-op">!=</tt> <tt class="py-name">modified_value</tt><tt class="py-op">:</tt> </tt>
-<a name="L372"></a><tt class="py-lineno">372</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">original_value</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L373"></a><tt class="py-lineno">373</tt> <tt class="py-line"> <tt class="py-comment"># Recursively descend objects</tt> </tt>
-<a name="L374"></a><tt class="py-lineno">374</tt> <tt class="py-line"> <tt class="py-name">patch</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-42" class="py-name" targets="Function apiclient.model.makepatch()=apiclient.model-module.html#makepatch"><a title="apiclient.model.makepatch" class="py-name" href="#" onclick="return doclink('link-42', 'makepatch', 'link-42');">makepatch</a></tt><tt class="py-op">(</tt><tt class="py-name">original_value</tt><tt class="py-op">,</tt> <tt class="py-name">modified_value</tt><tt class="py-op">)</tt> </tt>
-<a name="L375"></a><tt class="py-lineno">375</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L376"></a><tt class="py-lineno">376</tt> <tt class="py-line"> <tt class="py-comment"># In the case of simple types or arrays we just replace</tt> </tt>
-<a name="L377"></a><tt class="py-lineno">377</tt> <tt class="py-line"> <tt class="py-name">patch</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">modified_value</tt> </tt>
-<a name="L378"></a><tt class="py-lineno">378</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L379"></a><tt class="py-lineno">379</tt> <tt class="py-line"> <tt class="py-comment"># Don't add anything to patch if there's no change</tt> </tt>
-<a name="L380"></a><tt class="py-lineno">380</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
-<a name="L381"></a><tt class="py-lineno">381</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt class="py-name">modified</tt><tt class="py-op">:</tt> </tt>
-<a name="L382"></a><tt class="py-lineno">382</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">key</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">original</tt><tt class="py-op">:</tt> </tt>
-<a name="L383"></a><tt class="py-lineno">383</tt> <tt class="py-line"> <tt class="py-name">patch</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">modified</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> </tt>
-<a name="L384"></a><tt class="py-lineno">384</tt> <tt class="py-line"> </tt>
-<a name="L385"></a><tt class="py-lineno">385</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">patch</tt> </tt>
-</div><a name="L386"></a><tt class="py-lineno">386</tt> <tt class="py-line"> </tt><script type="text/javascript">
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-49', 'get', 'link-49');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L366"></a><tt class="py-lineno">366</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">modified_value</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L367"></a><tt class="py-lineno">367</tt> <tt class="py-line"> <tt class="py-comment"># Use None to signal that the element is deleted</tt> </tt>
+<a name="L368"></a><tt class="py-lineno">368</tt> <tt class="py-line"> <tt class="py-name">patch</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L369"></a><tt class="py-lineno">369</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">original_value</tt> <tt class="py-op">!=</tt> <tt class="py-name">modified_value</tt><tt class="py-op">:</tt> </tt>
+<a name="L370"></a><tt class="py-lineno">370</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">original_value</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L371"></a><tt class="py-lineno">371</tt> <tt class="py-line"> <tt class="py-comment"># Recursively descend objects</tt> </tt>
+<a name="L372"></a><tt class="py-lineno">372</tt> <tt class="py-line"> <tt class="py-name">patch</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-50" class="py-name" targets="Function apiclient.model.makepatch()=apiclient.model-module.html#makepatch"><a title="apiclient.model.makepatch" class="py-name" href="#" onclick="return doclink('link-50', 'makepatch', 'link-50');">makepatch</a></tt><tt class="py-op">(</tt><tt class="py-name">original_value</tt><tt class="py-op">,</tt> <tt class="py-name">modified_value</tt><tt class="py-op">)</tt> </tt>
+<a name="L373"></a><tt class="py-lineno">373</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L374"></a><tt class="py-lineno">374</tt> <tt class="py-line"> <tt class="py-comment"># In the case of simple types or arrays we just replace</tt> </tt>
+<a name="L375"></a><tt class="py-lineno">375</tt> <tt class="py-line"> <tt class="py-name">patch</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">modified_value</tt> </tt>
+<a name="L376"></a><tt class="py-lineno">376</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L377"></a><tt class="py-lineno">377</tt> <tt class="py-line"> <tt class="py-comment"># Don't add anything to patch if there's no change</tt> </tt>
+<a name="L378"></a><tt class="py-lineno">378</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+<a name="L379"></a><tt class="py-lineno">379</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt class="py-name">modified</tt><tt class="py-op">:</tt> </tt>
+<a name="L380"></a><tt class="py-lineno">380</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">key</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">original</tt><tt class="py-op">:</tt> </tt>
+<a name="L381"></a><tt class="py-lineno">381</tt> <tt class="py-line"> <tt class="py-name">patch</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">modified</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> </tt>
+<a name="L382"></a><tt class="py-lineno">382</tt> <tt class="py-line"> </tt>
+<a name="L383"></a><tt class="py-lineno">383</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">patch</tt> </tt>
+</div><a name="L384"></a><tt class="py-lineno">384</tt> <tt class="py-line"> </tt><script type="text/javascript">
<!--
expandto(location.href);
// -->
@@ -572,7 +562,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:26 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:46 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.model.BaseModel-class.html b/docs/epy/apiclient.model.BaseModel-class.html
index 98df4d2..c97396e 100644
--- a/docs/epy/apiclient.model.BaseModel-class.html
+++ b/docs/epy/apiclient.model.BaseModel-class.html
@@ -55,11 +55,19 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class BaseModel</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.model-pysrc.html#BaseModel">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_basemodel" name="class_hierarchy_for_basemodel">
-<area shape="rect" id="node1" href="apiclient.model.BaseModel-class.html" title="BaseModel" alt="" coords="5,6,91,34"/>
-<area shape="rect" id="node2" href="apiclient.model.Model-class.html" title="Model" alt="" coords="115,6,171,34"/>
+<center> <map id="uml_class_diagram_for_apiclien_33" name="uml_class_diagram_for_apiclien_33">
+<area shape="rect" id="node80" href="apiclient.model.BaseModel-class.html#accept" title="apiclient.model.BaseModel.accept" alt="" coords="17,95,397,113"/>
+<area shape="rect" id="node80" href="apiclient.model.BaseModel-class.html#content_type" title="apiclient.model.BaseModel.content_type" alt="" coords="17,113,397,132"/>
+<area shape="rect" id="node80" href="apiclient.model.BaseModel-class.html#no_content_response" title="apiclient.model.BaseModel.no_content_response" alt="" coords="17,132,397,151"/>
+<area shape="rect" id="node80" href="apiclient.model.BaseModel-class.html#alt_param" title="apiclient.model.BaseModel.alt_param" alt="" coords="17,151,397,169"/>
+<area shape="rect" id="node80" href="apiclient.model.BaseModel-class.html#request" title="Updates outgoing requests with a serialized body." alt="" coords="17,172,397,191"/>
+<area shape="rect" id="node80" href="apiclient.model.BaseModel-class.html#response" title="Convert the response wire format into a Python object." alt="" coords="17,191,397,209"/>
+<area shape="rect" id="node80" href="apiclient.model.BaseModel-class.html#serialize" title="Perform the actual Python object serialization." alt="" coords="17,209,397,228"/>
+<area shape="rect" id="node80" href="apiclient.model.BaseModel-class.html#deserialize" title="Perform the actual deserialization from response string to Python object." alt="" coords="17,228,397,247"/>
+<area shape="rect" id="node1" href="apiclient.model.BaseModel-class.html" title="Base model class." alt="" coords="5,70,408,253"/>
+<area shape="rect" id="node2" href="apiclient.model.Model-class.html" title="Model base class." alt="" coords="177,6,239,50"/>
</map>
- <img src="class_hierarchy_for_basemodel.gif" alt='' usemap="#class_hierarchy_for_basemodel" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_apiclien_33.gif" alt='' usemap="#uml_class_diagram_for_apiclien_33" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -531,7 +539,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:23 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:44 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.model.JsonModel-class.html b/docs/epy/apiclient.model.JsonModel-class.html
index 882dce2..a23a5c3 100644
--- a/docs/epy/apiclient.model.JsonModel-class.html
+++ b/docs/epy/apiclient.model.JsonModel-class.html
@@ -55,12 +55,21 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class JsonModel</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.model-pysrc.html#JsonModel">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_jsonmodel" name="class_hierarchy_for_jsonmodel">
-<area shape="rect" id="node1" href="apiclient.model.BaseModel-class.html" title="BaseModel" alt="" coords="5,6,91,34"/>
-<area shape="rect" id="node2" href="apiclient.model.JsonModel-class.html" title="JsonModel" alt="" coords="115,6,200,34"/>
-<area shape="rect" id="node3" href="apiclient.model.Model-class.html" title="Model" alt="" coords="224,6,280,34"/>
+<center> <map id="uml_class_diagram_for_apiclien_34" name="uml_class_diagram_for_apiclien_34">
+<area shape="rect" id="node82" href="apiclient.model.JsonModel-class.html#accept" title="apiclient.model.JsonModel.accept" alt="" coords="104,191,312,209"/>
+<area shape="rect" id="node82" href="apiclient.model.JsonModel-class.html#content_type" title="apiclient.model.JsonModel.content_type" alt="" coords="104,209,312,228"/>
+<area shape="rect" id="node82" href="apiclient.model.JsonModel-class.html#alt_param" title="apiclient.model.JsonModel.alt_param" alt="" coords="104,228,312,247"/>
+<area shape="rect" id="node82" href="apiclient.model.JsonModel-class.html#__init__" title="Construct a JsonModel." alt="" coords="104,249,312,268"/>
+<area shape="rect" id="node82" href="apiclient.model.JsonModel-class.html#serialize" title="Perform the actual Python object serialization." alt="" coords="104,268,312,287"/>
+<area shape="rect" id="node82" href="apiclient.model.JsonModel-class.html#deserialize" title="Perform the actual deserialization from response string to Python object." alt="" coords="104,287,312,305"/>
+<area shape="rect" id="node82" href="apiclient.model.JsonModel-class.html#no_content_response" title="apiclient.model.JsonModel.no_content_response" alt="" coords="104,305,312,324"/>
+<area shape="rect" id="node1" href="apiclient.model.JsonModel-class.html" title="Model class for JSON." alt="" coords="92,166,324,330"/>
+<area shape="rect" id="node83" href="apiclient.model.BaseModel-class.html#request" title="Updates outgoing requests with a serialized body." alt="" coords="17,103,397,121"/>
+<area shape="rect" id="node83" href="apiclient.model.BaseModel-class.html#response" title="Convert the response wire format into a Python object." alt="" coords="17,121,397,140"/>
+<area shape="rect" id="node2" href="apiclient.model.BaseModel-class.html" title="Base model class." alt="" coords="5,70,408,146"/>
+<area shape="rect" id="node3" href="apiclient.model.Model-class.html" title="Model base class." alt="" coords="177,6,239,50"/>
</map>
- <img src="class_hierarchy_for_jsonmodel.gif" alt='' usemap="#class_hierarchy_for_jsonmodel" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_apiclien_34.gif" alt='' usemap="#uml_class_diagram_for_apiclien_34" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -417,7 +426,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:24 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:44 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.model.MediaModel-class.html b/docs/epy/apiclient.model.MediaModel-class.html
index 31be56e..06cfdde 100644
--- a/docs/epy/apiclient.model.MediaModel-class.html
+++ b/docs/epy/apiclient.model.MediaModel-class.html
@@ -55,13 +55,22 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class MediaModel</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.model-pysrc.html#MediaModel">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_mediamodel" name="class_hierarchy_for_mediamodel">
-<area shape="rect" id="node1" href="apiclient.model.BaseModel-class.html" title="BaseModel" alt="" coords="5,6,91,34"/>
-<area shape="rect" id="node2" href="apiclient.model.JsonModel-class.html" title="JsonModel" alt="" coords="115,6,200,34"/>
-<area shape="rect" id="node3" href="apiclient.model.MediaModel-class.html" title="MediaModel" alt="" coords="224,6,315,34"/>
-<area shape="rect" id="node4" href="apiclient.model.Model-class.html" title="Model" alt="" coords="339,6,395,34"/>
+<center> <map id="uml_class_diagram_for_apiclien_35" name="uml_class_diagram_for_apiclien_35">
+<area shape="rect" id="node85" href="apiclient.model.MediaModel-class.html#accept" title="apiclient.model.MediaModel.accept" alt="" coords="128,287,288,305"/>
+<area shape="rect" id="node85" href="apiclient.model.MediaModel-class.html#content_type" title="apiclient.model.MediaModel.content_type" alt="" coords="128,305,288,324"/>
+<area shape="rect" id="node85" href="apiclient.model.MediaModel-class.html#alt_param" title="apiclient.model.MediaModel.alt_param" alt="" coords="128,324,288,343"/>
+<area shape="rect" id="node85" href="apiclient.model.MediaModel-class.html#deserialize" title="Perform the actual deserialization from response string to Python object." alt="" coords="128,345,288,364"/>
+<area shape="rect" id="node85" href="apiclient.model.MediaModel-class.html#no_content_response" title="apiclient.model.MediaModel.no_content_response" alt="" coords="128,364,288,383"/>
+<area shape="rect" id="node1" href="apiclient.model.MediaModel-class.html" title="Model class for requests that return Media." alt="" coords="116,262,300,389"/>
+<area shape="rect" id="node86" href="apiclient.model.JsonModel-class.html#__init__" title="Construct a JsonModel." alt="" coords="104,199,312,217"/>
+<area shape="rect" id="node86" href="apiclient.model.JsonModel-class.html#serialize" title="Perform the actual Python object serialization." alt="" coords="104,217,312,236"/>
+<area shape="rect" id="node2" href="apiclient.model.JsonModel-class.html" title="Model class for JSON." alt="" coords="92,166,324,242"/>
+<area shape="rect" id="node87" href="apiclient.model.BaseModel-class.html#request" title="Updates outgoing requests with a serialized body." alt="" coords="17,103,397,121"/>
+<area shape="rect" id="node87" href="apiclient.model.BaseModel-class.html#response" title="Convert the response wire format into a Python object." alt="" coords="17,121,397,140"/>
+<area shape="rect" id="node3" href="apiclient.model.BaseModel-class.html" title="Base model class." alt="" coords="5,70,408,146"/>
+<area shape="rect" id="node4" href="apiclient.model.Model-class.html" title="Model base class." alt="" coords="177,6,239,50"/>
</map>
- <img src="class_hierarchy_for_mediamodel.gif" alt='' usemap="#class_hierarchy_for_mediamodel" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_apiclien_35.gif" alt='' usemap="#uml_class_diagram_for_apiclien_35" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -324,7 +333,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:24 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:44 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.model.Model-class.html b/docs/epy/apiclient.model.Model-class.html
index 606056b..4513b73 100644
--- a/docs/epy/apiclient.model.Model-class.html
+++ b/docs/epy/apiclient.model.Model-class.html
@@ -55,10 +55,12 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class Model</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.model-pysrc.html#Model">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_model" name="class_hierarchy_for_model">
-<area shape="rect" id="node1" href="apiclient.model.Model-class.html" title="Model" alt="" coords="5,6,61,34"/>
+<center> <map id="uml_class_diagram_for_apiclien_36" name="uml_class_diagram_for_apiclien_36">
+<area shape="rect" id="node89" href="apiclient.model.Model-class.html#request" title="Updates outgoing requests with a serialized body." alt="" coords="17,39,397,57"/>
+<area shape="rect" id="node89" href="apiclient.model.Model-class.html#response" title="Convert the response wire format into a Python object." alt="" coords="17,57,397,76"/>
+<area shape="rect" id="node1" href="apiclient.model.Model-class.html" title="Model base class." alt="" coords="5,6,408,82"/>
</map>
- <img src="class_hierarchy_for_model.gif" alt='' usemap="#class_hierarchy_for_model" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_apiclien_36.gif" alt='' usemap="#uml_class_diagram_for_apiclien_36" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -289,7 +291,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:24 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:44 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.model.ProtocolBufferModel-class.html b/docs/epy/apiclient.model.ProtocolBufferModel-class.html
index e0ed7d9..0d46877 100644
--- a/docs/epy/apiclient.model.ProtocolBufferModel-class.html
+++ b/docs/epy/apiclient.model.ProtocolBufferModel-class.html
@@ -55,12 +55,21 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class ProtocolBufferModel</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.model-pysrc.html#ProtocolBufferModel">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_protocolbu" name="class_hierarchy_for_protocolbu">
-<area shape="rect" id="node1" href="apiclient.model.BaseModel-class.html" title="BaseModel" alt="" coords="5,6,91,34"/>
-<area shape="rect" id="node2" href="apiclient.model.Model-class.html" title="Model" alt="" coords="115,6,171,34"/>
-<area shape="rect" id="node3" href="apiclient.model.ProtocolBufferModel-class.html" title="ProtocolBufferModel" alt="" coords="195,6,333,34"/>
+<center> <map id="uml_class_diagram_for_apiclien_37" name="uml_class_diagram_for_apiclien_37">
+<area shape="rect" id="node90" href="apiclient.model.ProtocolBufferModel-class.html#accept" title="apiclient.model.ProtocolBufferModel.accept" alt="" coords="120,191,296,209"/>
+<area shape="rect" id="node90" href="apiclient.model.ProtocolBufferModel-class.html#content_type" title="apiclient.model.ProtocolBufferModel.content_type" alt="" coords="120,209,296,228"/>
+<area shape="rect" id="node90" href="apiclient.model.ProtocolBufferModel-class.html#alt_param" title="apiclient.model.ProtocolBufferModel.alt_param" alt="" coords="120,228,296,247"/>
+<area shape="rect" id="node90" href="apiclient.model.ProtocolBufferModel-class.html#__init__" title="Constructs a ProtocolBufferModel." alt="" coords="120,249,296,268"/>
+<area shape="rect" id="node90" href="apiclient.model.ProtocolBufferModel-class.html#serialize" title="Perform the actual Python object serialization." alt="" coords="120,268,296,287"/>
+<area shape="rect" id="node90" href="apiclient.model.ProtocolBufferModel-class.html#deserialize" title="Perform the actual deserialization from response string to Python object." alt="" coords="120,287,296,305"/>
+<area shape="rect" id="node90" href="apiclient.model.ProtocolBufferModel-class.html#no_content_response" title="apiclient.model.ProtocolBufferModel.no_content_response" alt="" coords="120,305,296,324"/>
+<area shape="rect" id="node1" href="apiclient.model.ProtocolBufferModel-class.html" title="Model class for protocol buffers." alt="" coords="108,166,308,330"/>
+<area shape="rect" id="node91" href="apiclient.model.BaseModel-class.html#request" title="Updates outgoing requests with a serialized body." alt="" coords="17,103,397,121"/>
+<area shape="rect" id="node91" href="apiclient.model.BaseModel-class.html#response" title="Convert the response wire format into a Python object." alt="" coords="17,121,397,140"/>
+<area shape="rect" id="node2" href="apiclient.model.BaseModel-class.html" title="Base model class." alt="" coords="5,70,408,146"/>
+<area shape="rect" id="node3" href="apiclient.model.Model-class.html" title="Model base class." alt="" coords="177,6,239,50"/>
</map>
- <img src="class_hierarchy_for_protocolbu.gif" alt='' usemap="#class_hierarchy_for_protocolbu" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_apiclien_37.gif" alt='' usemap="#uml_class_diagram_for_apiclien_37" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -421,7 +430,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:24 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:44 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.model.RawModel-class.html b/docs/epy/apiclient.model.RawModel-class.html
index e8c0589..ea4207a 100644
--- a/docs/epy/apiclient.model.RawModel-class.html
+++ b/docs/epy/apiclient.model.RawModel-class.html
@@ -55,13 +55,22 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class RawModel</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.model-pysrc.html#RawModel">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_rawmodel" name="class_hierarchy_for_rawmodel">
-<area shape="rect" id="node1" href="apiclient.model.BaseModel-class.html" title="BaseModel" alt="" coords="5,6,91,34"/>
-<area shape="rect" id="node2" href="apiclient.model.JsonModel-class.html" title="JsonModel" alt="" coords="115,6,200,34"/>
-<area shape="rect" id="node3" href="apiclient.model.Model-class.html" title="Model" alt="" coords="224,6,280,34"/>
-<area shape="rect" id="node4" href="apiclient.model.RawModel-class.html" title="RawModel" alt="" coords="304,6,387,34"/>
+<center> <map id="uml_class_diagram_for_apiclien_38" name="uml_class_diagram_for_apiclien_38">
+<area shape="rect" id="node93" href="apiclient.model.RawModel-class.html#accept" title="apiclient.model.RawModel.accept" alt="" coords="128,287,288,305"/>
+<area shape="rect" id="node93" href="apiclient.model.RawModel-class.html#content_type" title="apiclient.model.RawModel.content_type" alt="" coords="128,305,288,324"/>
+<area shape="rect" id="node93" href="apiclient.model.RawModel-class.html#alt_param" title="apiclient.model.RawModel.alt_param" alt="" coords="128,324,288,343"/>
+<area shape="rect" id="node93" href="apiclient.model.RawModel-class.html#deserialize" title="Perform the actual deserialization from response string to Python object." alt="" coords="128,345,288,364"/>
+<area shape="rect" id="node93" href="apiclient.model.RawModel-class.html#no_content_response" title="apiclient.model.RawModel.no_content_response" alt="" coords="128,364,288,383"/>
+<area shape="rect" id="node1" href="apiclient.model.RawModel-class.html" title="Model class for requests that don't return JSON." alt="" coords="116,262,300,389"/>
+<area shape="rect" id="node94" href="apiclient.model.JsonModel-class.html#__init__" title="Construct a JsonModel." alt="" coords="104,199,312,217"/>
+<area shape="rect" id="node94" href="apiclient.model.JsonModel-class.html#serialize" title="Perform the actual Python object serialization." alt="" coords="104,217,312,236"/>
+<area shape="rect" id="node2" href="apiclient.model.JsonModel-class.html" title="Model class for JSON." alt="" coords="92,166,324,242"/>
+<area shape="rect" id="node95" href="apiclient.model.BaseModel-class.html#request" title="Updates outgoing requests with a serialized body." alt="" coords="17,103,397,121"/>
+<area shape="rect" id="node95" href="apiclient.model.BaseModel-class.html#response" title="Convert the response wire format into a Python object." alt="" coords="17,121,397,140"/>
+<area shape="rect" id="node3" href="apiclient.model.BaseModel-class.html" title="Base model class." alt="" coords="5,70,408,146"/>
+<area shape="rect" id="node4" href="apiclient.model.Model-class.html" title="Model base class." alt="" coords="177,6,239,50"/>
</map>
- <img src="class_hierarchy_for_rawmodel.gif" alt='' usemap="#class_hierarchy_for_rawmodel" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_apiclien_38.gif" alt='' usemap="#uml_class_diagram_for_apiclien_38" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -324,7 +333,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:24 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:44 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.sample_tools-module.html b/docs/epy/apiclient.sample_tools-module.html
new file mode 100644
index 0000000..3bceb58
--- /dev/null
+++ b/docs/epy/apiclient.sample_tools-module.html
@@ -0,0 +1,217 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>apiclient.sample_tools</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+
+ <!-- Tree link -->
+ <th> <a
+ href="module-tree.html">Trees</a> </th>
+
+ <!-- Index link -->
+ <th> <a
+ href="identifier-index.html">Indices</a> </th>
+
+ <!-- Help link -->
+ <th> <a
+ href="help.html">Help</a> </th>
+
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="apiclient-module.html">Package apiclient</a> ::
+ Module sample_tools
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >] | <a href="apiclient.sample_tools-module.html"
+ target="_top">no frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module sample_tools</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.sample_tools-pysrc.html">source code</a></span></p>
+<pre class="literalblock">
+Utilities for making samples.
+
+Consolidates a lot of code commonly repeated in sample applications.
+
+</pre>
+
+<hr />
+<div class="fields"> <p><strong>Author:</strong>
+ jcgregorio@google.com (Joe Gregorio)
+ </p>
+</div><!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Functions</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Functions"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="apiclient.sample_tools-module.html#init" class="summary-sig-name">init</a>(<span class="summary-sig-arg">argv</span>,
+ <span class="summary-sig-arg">name</span>,
+ <span class="summary-sig-arg">version</span>,
+ <span class="summary-sig-arg">doc</span>,
+ <span class="summary-sig-arg">filename</span>,
+ <span class="summary-sig-arg">scope</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">parents</span>=<span class="summary-sig-default">[]</span>)</span><br />
+ A common initialization routine for samples.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="apiclient.sample_tools-pysrc.html#init">source code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+</table>
+<!-- ==================== FUNCTION DETAILS ==================== -->
+<a name="section-FunctionDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Function Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-FunctionDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="init"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">init</span>(<span class="sig-arg">argv</span>,
+ <span class="sig-arg">name</span>,
+ <span class="sig-arg">version</span>,
+ <span class="sig-arg">doc</span>,
+ <span class="sig-arg">filename</span>,
+ <span class="sig-arg">scope</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">parents</span>=<span class="sig-default">[]</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="apiclient.sample_tools-pysrc.html#init">source code</a></span>
+ </td>
+ </tr></table>
+
+ <pre class="literalblock">
+A common initialization routine for samples.
+
+Many of the sample applications do the same initialization, which has now
+been consolidated into this function. This function uses common idioms found
+in almost all the samples, i.e. for an API with name 'apiname', the
+credentials are stored in a file named apiname.dat, and the
+client_secrets.json file is stored in the same directory as the application
+main file.
+
+Args:
+ argv: list of string, the command-line parameters of the application.
+ name: string, name of the API.
+ version: string, version of the API.
+ doc: string, description of the application. Usually set to __doc__.
+ file: string, filename of the application. Usually set to __file__.
+ parents: list of argparse.ArgumentParser, additional command-line flags.
+ scope: string, The OAuth scope used.
+
+Returns:
+ A tuple of (service, flags), where service is the service object and flags
+ is the parsed command-line flags.
+
+</pre>
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+
+ <!-- Tree link -->
+ <th> <a
+ href="module-tree.html">Trees</a> </th>
+
+ <!-- Index link -->
+ <th> <a
+ href="identifier-index.html">Indices</a> </th>
+
+ <!-- Help link -->
+ <th> <a
+ href="help.html">Help</a> </th>
+
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:42 2013
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/docs/epy/apiclient.sample_tools-pysrc.html b/docs/epy/apiclient.sample_tools-pysrc.html
new file mode 100644
index 0000000..7edfafa
--- /dev/null
+++ b/docs/epy/apiclient.sample_tools-pysrc.html
@@ -0,0 +1,219 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>apiclient.sample_tools</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+
+ <!-- Tree link -->
+ <th> <a
+ href="module-tree.html">Trees</a> </th>
+
+ <!-- Index link -->
+ <th> <a
+ href="identifier-index.html">Indices</a> </th>
+
+ <!-- Help link -->
+ <th> <a
+ href="help.html">Help</a> </th>
+
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="apiclient-module.html">Package apiclient</a> ::
+ Module sample_tools
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >] | <a href="apiclient.sample_tools-pysrc.html"
+ target="_top">no frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="apiclient.sample_tools-module.html">Module apiclient.sample_tools</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2013 Google Inc.</tt> </tt>
+<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"># Licensed under the Apache License, Version 2.0 (the "License");</tt> </tt>
+<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"># you may not use this file except in compliance with the License.</tt> </tt>
+<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"># You may obtain a copy of the License at</tt> </tt>
+<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"># http://www.apache.org/licenses/LICENSE-2.0</tt> </tt>
+<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"># Unless required by applicable law or agreed to in writing, software</tt> </tt>
+<a name="L10"></a><tt class="py-lineno">10</tt> <tt class="py-line"><tt class="py-comment"># distributed under the License is distributed on an "AS IS" BASIS,</tt> </tt>
+<a name="L11"></a><tt class="py-lineno">11</tt> <tt class="py-line"><tt class="py-comment"># WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</tt> </tt>
+<a name="L12"></a><tt class="py-lineno">12</tt> <tt class="py-line"><tt class="py-comment"># See the License for the specific language governing permissions and</tt> </tt>
+<a name="L13"></a><tt class="py-lineno">13</tt> <tt class="py-line"><tt class="py-comment"># limitations under the License.</tt> </tt>
+<a name="L14"></a><tt class="py-lineno">14</tt> <tt class="py-line"> </tt>
+<a name="L15"></a><tt class="py-lineno">15</tt> <tt class="py-line"><tt class="py-docstring">"""Utilities for making samples.</tt> </tt>
+<a name="L16"></a><tt class="py-lineno">16</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L17"></a><tt class="py-lineno">17</tt> <tt class="py-line"><tt class="py-docstring">Consolidates a lot of code commonly repeated in sample applications.</tt> </tt>
+<a name="L18"></a><tt class="py-lineno">18</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L19"></a><tt class="py-lineno">19</tt> <tt class="py-line"> </tt>
+<a name="L20"></a><tt class="py-lineno">20</tt> <tt class="py-line"><tt class="py-name">__author__</tt> <tt class="py-op">=</tt> <tt class="py-string">'jcgregorio@google.com (Joe Gregorio)'</tt> </tt>
+<a name="L21"></a><tt class="py-lineno">21</tt> <tt class="py-line"><tt class="py-name">__all__</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'init'</tt><tt class="py-op">]</tt> </tt>
+<a name="L22"></a><tt class="py-lineno">22</tt> <tt class="py-line"> </tt>
+<a name="L23"></a><tt class="py-lineno">23</tt> <tt class="py-line"> </tt>
+<a name="L24"></a><tt class="py-lineno">24</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">argparse</tt> </tt>
+<a name="L25"></a><tt class="py-lineno">25</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">httplib2</tt> </tt>
+<a name="L26"></a><tt class="py-lineno">26</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">os</tt> </tt>
+<a name="L27"></a><tt class="py-lineno">27</tt> <tt class="py-line"> </tt>
+<a name="L28"></a><tt class="py-lineno">28</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-0" class="py-name" targets="Package apiclient=apiclient-module.html"><a title="apiclient" class="py-name" href="#" onclick="return doclink('link-0', 'apiclient', 'link-0');">apiclient</a></tt> <tt class="py-keyword">import</tt> <tt id="link-1" class="py-name" targets="Module apiclient.discovery=apiclient.discovery-module.html"><a title="apiclient.discovery" class="py-name" href="#" onclick="return doclink('link-1', 'discovery', 'link-1');">discovery</a></tt> </tt>
+<a name="L29"></a><tt class="py-lineno">29</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-2" class="py-name" targets="Package oauth2client=oauth2client-module.html"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-2', 'oauth2client', 'link-2');">oauth2client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-3" class="py-name" targets="Module oauth2client.client=oauth2client.client-module.html"><a title="oauth2client.client" class="py-name" href="#" onclick="return doclink('link-3', 'client', 'link-3');">client</a></tt> </tt>
+<a name="L30"></a><tt class="py-lineno">30</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-4" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-4', 'oauth2client', 'link-2');">oauth2client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-5" class="py-name" targets="Module oauth2client.file=oauth2client.file-module.html"><a title="oauth2client.file" class="py-name" href="#" onclick="return doclink('link-5', 'file', 'link-5');">file</a></tt> </tt>
+<a name="L31"></a><tt class="py-lineno">31</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-6" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-6', 'oauth2client', 'link-2');">oauth2client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-7" class="py-name" targets="Module oauth2client.tools=oauth2client.tools-module.html"><a title="oauth2client.tools" class="py-name" href="#" onclick="return doclink('link-7', 'tools', 'link-7');">tools</a></tt> </tt>
+<a name="L32"></a><tt class="py-lineno">32</tt> <tt class="py-line"> </tt>
+<a name="L33"></a><tt class="py-lineno">33</tt> <tt class="py-line"> </tt>
+<a name="init"></a><div id="init-def"><a name="L34"></a><tt class="py-lineno">34</tt> <a class="py-toggle" href="#" id="init-toggle" onclick="return toggle('init');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="apiclient.sample_tools-module.html#init">init</a><tt class="py-op">(</tt><tt class="py-param">argv</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">,</tt> <tt class="py-param">version</tt><tt class="py-op">,</tt> <tt class="py-param">doc</tt><tt class="py-op">,</tt> <tt class="py-param">filename</tt><tt class="py-op">,</tt> <tt class="py-param">scope</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">parents</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="init-collapsed" style="display:none;" pad="++" indent="++++"></div><div id="init-expanded"><a name="L35"></a><tt class="py-lineno">35</tt> <tt class="py-line"> <tt class="py-docstring">"""A common initialization routine for samples.</tt> </tt>
+<a name="L36"></a><tt class="py-lineno">36</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L37"></a><tt class="py-lineno">37</tt> <tt class="py-line"><tt class="py-docstring"> Many of the sample applications do the same initialization, which has now</tt> </tt>
+<a name="L38"></a><tt class="py-lineno">38</tt> <tt class="py-line"><tt class="py-docstring"> been consolidated into this function. This function uses common idioms found</tt> </tt>
+<a name="L39"></a><tt class="py-lineno">39</tt> <tt class="py-line"><tt class="py-docstring"> in almost all the samples, i.e. for an API with name 'apiname', the</tt> </tt>
+<a name="L40"></a><tt class="py-lineno">40</tt> <tt class="py-line"><tt class="py-docstring"> credentials are stored in a file named apiname.dat, and the</tt> </tt>
+<a name="L41"></a><tt class="py-lineno">41</tt> <tt class="py-line"><tt class="py-docstring"> client_secrets.json file is stored in the same directory as the application</tt> </tt>
+<a name="L42"></a><tt class="py-lineno">42</tt> <tt class="py-line"><tt class="py-docstring"> main file.</tt> </tt>
+<a name="L43"></a><tt class="py-lineno">43</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L44"></a><tt class="py-lineno">44</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L45"></a><tt class="py-lineno">45</tt> <tt class="py-line"><tt class="py-docstring"> argv: list of string, the command-line parameters of the application.</tt> </tt>
+<a name="L46"></a><tt class="py-lineno">46</tt> <tt class="py-line"><tt class="py-docstring"> name: string, name of the API.</tt> </tt>
+<a name="L47"></a><tt class="py-lineno">47</tt> <tt class="py-line"><tt class="py-docstring"> version: string, version of the API.</tt> </tt>
+<a name="L48"></a><tt class="py-lineno">48</tt> <tt class="py-line"><tt class="py-docstring"> doc: string, description of the application. Usually set to __doc__.</tt> </tt>
+<a name="L49"></a><tt class="py-lineno">49</tt> <tt class="py-line"><tt class="py-docstring"> file: string, filename of the application. Usually set to __file__.</tt> </tt>
+<a name="L50"></a><tt class="py-lineno">50</tt> <tt class="py-line"><tt class="py-docstring"> parents: list of argparse.ArgumentParser, additional command-line flags.</tt> </tt>
+<a name="L51"></a><tt class="py-lineno">51</tt> <tt class="py-line"><tt class="py-docstring"> scope: string, The OAuth scope used.</tt> </tt>
+<a name="L52"></a><tt class="py-lineno">52</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L53"></a><tt class="py-lineno">53</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L54"></a><tt class="py-lineno">54</tt> <tt class="py-line"><tt class="py-docstring"> A tuple of (service, flags), where service is the service object and flags</tt> </tt>
+<a name="L55"></a><tt class="py-lineno">55</tt> <tt class="py-line"><tt class="py-docstring"> is the parsed command-line flags.</tt> </tt>
+<a name="L56"></a><tt class="py-lineno">56</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L57"></a><tt class="py-lineno">57</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">scope</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L58"></a><tt class="py-lineno">58</tt> <tt class="py-line"> <tt class="py-name">scope</tt> <tt class="py-op">=</tt> <tt class="py-string">'https://www.googleapis.com/auth/'</tt> <tt class="py-op">+</tt> <tt class="py-name">name</tt> </tt>
+<a name="L59"></a><tt class="py-lineno">59</tt> <tt class="py-line"> </tt>
+<a name="L60"></a><tt class="py-lineno">60</tt> <tt class="py-line"> <tt class="py-comment"># Parser command-line arguments.</tt> </tt>
+<a name="L61"></a><tt class="py-lineno">61</tt> <tt class="py-line"> <tt class="py-name">parent_parsers</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt id="link-8" class="py-name"><a title="oauth2client.tools" class="py-name" href="#" onclick="return doclink('link-8', 'tools', 'link-7');">tools</a></tt><tt class="py-op">.</tt><tt id="link-9" class="py-name" targets="Variable oauth2client.tools.argparser=oauth2client.tools-module.html#argparser"><a title="oauth2client.tools.argparser" class="py-name" href="#" onclick="return doclink('link-9', 'argparser', 'link-9');">argparser</a></tt><tt class="py-op">]</tt> </tt>
+<a name="L62"></a><tt class="py-lineno">62</tt> <tt class="py-line"> <tt class="py-name">parent_parsers</tt><tt class="py-op">.</tt><tt class="py-name">extend</tt><tt class="py-op">(</tt><tt class="py-name">parents</tt><tt class="py-op">)</tt> </tt>
+<a name="L63"></a><tt class="py-lineno">63</tt> <tt class="py-line"> <tt class="py-name">parser</tt> <tt class="py-op">=</tt> <tt class="py-name">argparse</tt><tt class="py-op">.</tt><tt class="py-name">ArgumentParser</tt><tt class="py-op">(</tt> </tt>
+<a name="L64"></a><tt class="py-lineno">64</tt> <tt class="py-line"> <tt class="py-name">description</tt><tt class="py-op">=</tt><tt class="py-name">doc</tt><tt class="py-op">,</tt> </tt>
+<a name="L65"></a><tt class="py-lineno">65</tt> <tt class="py-line"> <tt class="py-name">formatter_class</tt><tt class="py-op">=</tt><tt class="py-name">argparse</tt><tt class="py-op">.</tt><tt class="py-name">RawDescriptionHelpFormatter</tt><tt class="py-op">,</tt> </tt>
+<a name="L66"></a><tt class="py-lineno">66</tt> <tt class="py-line"> <tt class="py-name">parents</tt><tt class="py-op">=</tt><tt class="py-name">parent_parsers</tt><tt class="py-op">)</tt> </tt>
+<a name="L67"></a><tt class="py-lineno">67</tt> <tt class="py-line"> <tt class="py-name">flags</tt> <tt class="py-op">=</tt> <tt class="py-name">parser</tt><tt class="py-op">.</tt><tt class="py-name">parse_args</tt><tt class="py-op">(</tt><tt class="py-name">argv</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L68"></a><tt class="py-lineno">68</tt> <tt class="py-line"> </tt>
+<a name="L69"></a><tt class="py-lineno">69</tt> <tt class="py-line"> <tt class="py-comment"># Name of a file containing the OAuth 2.0 information for this</tt> </tt>
+<a name="L70"></a><tt class="py-lineno">70</tt> <tt class="py-line"> <tt class="py-comment"># application, including client_id and client_secret, which are found</tt> </tt>
+<a name="L71"></a><tt class="py-lineno">71</tt> <tt class="py-line"> <tt class="py-comment"># on the API Access tab on the Google APIs</tt> </tt>
+<a name="L72"></a><tt class="py-lineno">72</tt> <tt class="py-line"> <tt class="py-comment"># Console <http://code.google.com/apis/console>.</tt> </tt>
+<a name="L73"></a><tt class="py-lineno">73</tt> <tt class="py-line"> <tt class="py-name">client_secrets</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">dirname</tt><tt class="py-op">(</tt><tt id="link-10" class="py-name" targets="Method oauth2client.locked_file.LockedFile.filename()=oauth2client.locked_file.LockedFile-class.html#filename,Method oauth2client.locked_file._Opener.filename()=oauth2client.locked_file._Opener-class.html#filename"><a title="oauth2client.locked_file.LockedFile.filename
+oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-10', 'filename', 'link-10');">filename</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L74"></a><tt class="py-lineno">74</tt> <tt class="py-line"> <tt class="py-string">'client_secrets.json'</tt><tt class="py-op">)</tt> </tt>
+<a name="L75"></a><tt class="py-lineno">75</tt> <tt class="py-line"> </tt>
+<a name="L76"></a><tt class="py-lineno">76</tt> <tt class="py-line"> <tt class="py-comment"># Set up a Flow object to be used if we need to authenticate.</tt> </tt>
+<a name="L77"></a><tt class="py-lineno">77</tt> <tt class="py-line"> <tt id="link-11" class="py-name" targets="Variable oauth2client.appengine.OAuth2Decorator.flow=oauth2client.appengine.OAuth2Decorator-class.html#flow"><a title="oauth2client.appengine.OAuth2Decorator.flow" class="py-name" href="#" onclick="return doclink('link-11', 'flow', 'link-11');">flow</a></tt> <tt class="py-op">=</tt> <tt id="link-12" class="py-name"><a title="oauth2client.client" class="py-name" href="#" onclick="return doclink('link-12', 'client', 'link-3');">client</a></tt><tt class="py-op">.</tt><tt id="link-13" class="py-name" targets="Function oauth2client.client.flow_from_clientsecrets()=oauth2client.client-module.html#flow_from_clientsecrets"><a title="oauth2client.client.flow_from_clientsecrets" class="py-name" href="#" onclick="return doclink('link-13', 'flow_from_clientsecrets', 'link-13');">flow_from_clientsecrets</a></tt><tt class="py-op">(</tt><tt class="py-name">client_secrets</tt><tt class="py-op">,</tt> </tt>
+<a name="L78"></a><tt class="py-lineno">78</tt> <tt class="py-line"> <tt class="py-name">scope</tt><tt class="py-op">=</tt><tt class="py-name">scope</tt><tt class="py-op">,</tt> </tt>
+<a name="L79"></a><tt class="py-lineno">79</tt> <tt class="py-line"> <tt class="py-name">message</tt><tt class="py-op">=</tt><tt id="link-14" class="py-name"><a title="oauth2client.tools" class="py-name" href="#" onclick="return doclink('link-14', 'tools', 'link-7');">tools</a></tt><tt class="py-op">.</tt><tt id="link-15" class="py-name" targets="Function oauth2client.tools.message_if_missing()=oauth2client.tools-module.html#message_if_missing"><a title="oauth2client.tools.message_if_missing" class="py-name" href="#" onclick="return doclink('link-15', 'message_if_missing', 'link-15');">message_if_missing</a></tt><tt class="py-op">(</tt><tt class="py-name">client_secrets</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L80"></a><tt class="py-lineno">80</tt> <tt class="py-line"> </tt>
+<a name="L81"></a><tt class="py-lineno">81</tt> <tt class="py-line"> <tt class="py-comment"># Prepare credentials, and authorize HTTP object with them.</tt> </tt>
+<a name="L82"></a><tt class="py-lineno">82</tt> <tt class="py-line"> <tt class="py-comment"># If the credentials don't exist or are invalid run through the native client</tt> </tt>
+<a name="L83"></a><tt class="py-lineno">83</tt> <tt class="py-line"> <tt class="py-comment"># flow. The Storage object will ensure that if successful the good</tt> </tt>
+<a name="L84"></a><tt class="py-lineno">84</tt> <tt class="py-line"> <tt class="py-comment"># credentials will get written back to a file.</tt> </tt>
+<a name="L85"></a><tt class="py-lineno">85</tt> <tt class="py-line"> <tt class="py-name">storage</tt> <tt class="py-op">=</tt> <tt id="link-16" class="py-name"><a title="oauth2client.file" class="py-name" href="#" onclick="return doclink('link-16', 'file', 'link-5');">file</a></tt><tt class="py-op">.</tt><tt id="link-17" class="py-name" targets="Class oauth2client.client.Storage=oauth2client.client.Storage-class.html,Class oauth2client.django_orm.Storage=oauth2client.django_orm.Storage-class.html,Class oauth2client.file.Storage=oauth2client.file.Storage-class.html,Class oauth2client.keyring_storage.Storage=oauth2client.keyring_storage.Storage-class.html"><a title="oauth2client.client.Storage
+oauth2client.django_orm.Storage
+oauth2client.file.Storage
+oauth2client.keyring_storage.Storage" class="py-name" href="#" onclick="return doclink('link-17', 'Storage', 'link-17');">Storage</a></tt><tt class="py-op">(</tt><tt class="py-name">name</tt> <tt class="py-op">+</tt> <tt class="py-string">'.dat'</tt><tt class="py-op">)</tt> </tt>
+<a name="L86"></a><tt class="py-lineno">86</tt> <tt class="py-line"> <tt id="link-18" class="py-name" targets="Variable oauth2client.appengine.CredentialsModel.credentials=oauth2client.appengine.CredentialsModel-class.html#credentials,Variable oauth2client.appengine.CredentialsNDBModel.credentials=oauth2client.appengine.CredentialsNDBModel-class.html#credentials,Variable oauth2client.appengine.OAuth2Decorator.credentials=oauth2client.appengine.OAuth2Decorator-class.html#credentials"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-18', 'credentials', 'link-18');">credentials</a></tt> <tt class="py-op">=</tt> <tt class="py-name">storage</tt><tt class="py-op">.</tt><tt id="link-19" class="py-name" targets="Method apiclient.schema.Schemas.get()=apiclient.schema.Schemas-class.html#get,Method oauth2client.client.MemoryCache.get()=oauth2client.client.MemoryCache-class.html#get,Method oauth2client.client.Storage.get()=oauth2client.client.Storage-class.html#get"><a title="apiclient.schema.Schemas.get
+oauth2client.client.MemoryCache.get
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-19', 'get', 'link-19');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L87"></a><tt class="py-lineno">87</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-20" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-20', 'credentials', 'link-18');">credentials</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt> <tt class="py-keyword">or</tt> <tt id="link-21" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-21', 'credentials', 'link-18');">credentials</a></tt><tt class="py-op">.</tt><tt class="py-name">invalid</tt><tt class="py-op">:</tt> </tt>
+<a name="L88"></a><tt class="py-lineno">88</tt> <tt class="py-line"> <tt id="link-22" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-22', 'credentials', 'link-18');">credentials</a></tt> <tt class="py-op">=</tt> <tt id="link-23" class="py-name"><a title="oauth2client.tools" class="py-name" href="#" onclick="return doclink('link-23', 'tools', 'link-7');">tools</a></tt><tt class="py-op">.</tt><tt id="link-24" class="py-name" targets="Function oauth2client.tools.run_flow()=oauth2client.tools-module.html#run_flow"><a title="oauth2client.tools.run_flow" class="py-name" href="#" onclick="return doclink('link-24', 'run_flow', 'link-24');">run_flow</a></tt><tt class="py-op">(</tt><tt id="link-25" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator.flow" class="py-name" href="#" onclick="return doclink('link-25', 'flow', 'link-11');">flow</a></tt><tt class="py-op">,</tt> <tt class="py-name">storage</tt><tt class="py-op">,</tt> <tt class="py-name">flags</tt><tt class="py-op">)</tt> </tt>
+<a name="L89"></a><tt class="py-lineno">89</tt> <tt class="py-line"> <tt id="link-26" class="py-name" targets="Module apiclient.http=apiclient.http-module.html,Method oauth2client.appengine.OAuth2Decorator.http()=oauth2client.appengine.OAuth2Decorator-class.html#http"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-26', 'http', 'link-26');">http</a></tt> <tt class="py-op">=</tt> <tt id="link-27" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-27', 'credentials', 'link-18');">credentials</a></tt><tt class="py-op">.</tt><tt id="link-28" class="py-name" targets="Method oauth2client.client.Credentials.authorize()=oauth2client.client.Credentials-class.html#authorize,Method oauth2client.client.OAuth2Credentials.authorize()=oauth2client.client.OAuth2Credentials-class.html#authorize"><a title="oauth2client.client.Credentials.authorize
+oauth2client.client.OAuth2Credentials.authorize" class="py-name" href="#" onclick="return doclink('link-28', 'authorize', 'link-28');">authorize</a></tt><tt class="py-op">(</tt><tt id="link-29" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-29', 'http', 'link-26');">http</a></tt> <tt class="py-op">=</tt> <tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">Http</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L90"></a><tt class="py-lineno">90</tt> <tt class="py-line"> </tt>
+<a name="L91"></a><tt class="py-lineno">91</tt> <tt class="py-line"> <tt class="py-comment"># Construct a service object via the discovery service.</tt> </tt>
+<a name="L92"></a><tt class="py-lineno">92</tt> <tt class="py-line"> <tt class="py-name">service</tt> <tt class="py-op">=</tt> <tt id="link-30" class="py-name"><a title="apiclient.discovery" class="py-name" href="#" onclick="return doclink('link-30', 'discovery', 'link-1');">discovery</a></tt><tt class="py-op">.</tt><tt id="link-31" class="py-name" targets="Function apiclient.discovery.build()=apiclient.discovery-module.html#build"><a title="apiclient.discovery.build" class="py-name" href="#" onclick="return doclink('link-31', 'build', 'link-31');">build</a></tt><tt class="py-op">(</tt><tt class="py-name">name</tt><tt class="py-op">,</tt> <tt class="py-name">version</tt><tt class="py-op">,</tt> <tt id="link-32" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-32', 'http', 'link-26');">http</a></tt><tt class="py-op">=</tt><tt id="link-33" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-33', 'http', 'link-26');">http</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L93"></a><tt class="py-lineno">93</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">service</tt><tt class="py-op">,</tt> <tt class="py-name">flags</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L94"></a><tt class="py-lineno">94</tt> <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+
+ <!-- Tree link -->
+ <th> <a
+ href="module-tree.html">Trees</a> </th>
+
+ <!-- Index link -->
+ <th> <a
+ href="identifier-index.html">Indices</a> </th>
+
+ <!-- Help link -->
+ <th> <a
+ href="help.html">Help</a> </th>
+
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:47 2013
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/docs/epy/apiclient.schema-module.html b/docs/epy/apiclient.schema-module.html
index e7f7d37..622f30e 100644
--- a/docs/epy/apiclient.schema-module.html
+++ b/docs/epy/apiclient.schema-module.html
@@ -161,7 +161,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:23 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:42 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.schema-pysrc.html b/docs/epy/apiclient.schema-pysrc.html
index 708cc5d..ca130d7 100644
--- a/docs/epy/apiclient.schema-pysrc.html
+++ b/docs/epy/apiclient.schema-pysrc.html
@@ -427,7 +427,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:26 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:47 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.schema.Schemas-class.html b/docs/epy/apiclient.schema.Schemas-class.html
index f6f6d58..615f504 100644
--- a/docs/epy/apiclient.schema.Schemas-class.html
+++ b/docs/epy/apiclient.schema.Schemas-class.html
@@ -55,10 +55,14 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class Schemas</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.schema-pysrc.html#Schemas">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_schemas" name="class_hierarchy_for_schemas">
-<area shape="rect" id="node1" href="apiclient.schema.Schemas-class.html" title="Schemas" alt="" coords="5,6,83,34"/>
+<center> <map id="uml_class_diagram_for_apiclien_39" name="uml_class_diagram_for_apiclien_39">
+<area shape="rect" id="node97" href="apiclient.schema.Schemas-class.html#__init__" title="Constructor." alt="" coords="17,39,216,57"/>
+<area shape="rect" id="node97" href="apiclient.schema.Schemas-class.html#prettyPrintByName" title="Get pretty printed object prototype from the schema name." alt="" coords="17,57,216,76"/>
+<area shape="rect" id="node97" href="apiclient.schema.Schemas-class.html#prettyPrintSchema" title="Get pretty printed object prototype of schema." alt="" coords="17,76,216,95"/>
+<area shape="rect" id="node97" href="apiclient.schema.Schemas-class.html#get" title="Get deserialized JSON schema from the schema name." alt="" coords="17,95,216,113"/>
+<area shape="rect" id="node1" href="apiclient.schema.Schemas-class.html" title="Schemas for an API." alt="" coords="5,6,227,119"/>
</map>
- <img src="class_hierarchy_for_schemas.gif" alt='' usemap="#class_hierarchy_for_schemas" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_apiclien_39.gif" alt='' usemap="#uml_class_diagram_for_apiclien_39" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -475,7 +479,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:24 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:44 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/apiclient.schema._SchemaToStruct-class.html b/docs/epy/apiclient.schema._SchemaToStruct-class.html
index eae119e..5ba43b5 100644
--- a/docs/epy/apiclient.schema._SchemaToStruct-class.html
+++ b/docs/epy/apiclient.schema._SchemaToStruct-class.html
@@ -55,10 +55,17 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class _SchemaToStruct</h1><p class="nomargin-top"><span class="codelink"><a href="apiclient.schema-pysrc.html#_SchemaToStruct">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for__schematos" name="class_hierarchy_for__schematos">
-<area shape="rect" id="node1" href="apiclient.schema._SchemaToStruct-class.html" title="_SchemaToStruct" alt="" coords="5,6,131,34"/>
+<center> <map id="uml_class_diagram_for_apiclien_40" name="uml_class_diagram_for_apiclien_40">
+<area shape="rect" id="node98" href="apiclient.schema._SchemaToStruct-class.html#__init__" title="Constructor." alt="" coords="17,39,237,57"/>
+<area shape="rect" id="node98" href="apiclient.schema._SchemaToStruct-class.html#emit" title="Add text as a line to the output." alt="" coords="17,57,237,76"/>
+<area shape="rect" id="node98" href="apiclient.schema._SchemaToStruct-class.html#emitBegin" title="Add text to the output, but with no line terminator." alt="" coords="17,76,237,95"/>
+<area shape="rect" id="node98" href="apiclient.schema._SchemaToStruct-class.html#emitEnd" title="Add text and comment to the output with line terminator." alt="" coords="17,95,237,113"/>
+<area shape="rect" id="node98" href="apiclient.schema._SchemaToStruct-class.html#indent" title="Increase indentation level." alt="" coords="17,113,237,132"/>
+<area shape="rect" id="node98" href="apiclient.schema._SchemaToStruct-class.html#undent" title="Decrease indentation level." alt="" coords="17,132,237,151"/>
+<area shape="rect" id="node98" href="apiclient.schema._SchemaToStruct-class.html#to_str" title="Prototype object based on the schema, in Python code with comments." alt="" coords="17,151,237,169"/>
+<area shape="rect" id="node1" href="apiclient.schema._SchemaToStruct-class.html" title="Convert schema to a prototype object." alt="" coords="5,6,248,175"/>
</map>
- <img src="class_hierarchy_for__schematos.gif" alt='' usemap="#class_hierarchy_for__schematos" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_apiclien_40.gif" alt='' usemap="#uml_class_diagram_for_apiclien_40" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -496,7 +503,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:24 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:44 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/class-tree.html b/docs/epy/class-tree.html
index f1577c0..b626b6b 100644
--- a/docs/epy/class-tree.html
+++ b/docs/epy/class-tree.html
@@ -70,8 +70,6 @@
</li>
<li> <strong class="uidlink">django.db.models.Field</strong>
</li>
- <li> <strong class="uidlink">collections.defaultdict</strong>
- </li>
<li> <strong class="uidlink">object</strong>:
<em class="summary">The most base type</em>
<ul>
@@ -86,16 +84,13 @@
</li>
<li> <strong class="uidlink"><a href="oauth2client.crypt.AppIdentityError-class.html">oauth2client.crypt.AppIdentityError</a></strong>
</li>
- <li> <strong class="uidlink"><a href="oauth2client.file.CredentialsFileSymbolicLinkError-class.html">oauth2client.file.CredentialsFileSymbolicLinkError</a></strong>:
- <em class="summary">Credentials files must not be symbolic links.</em>
- </li>
<li> <strong class="uidlink"><a href="oauth2client.locked_file.CredentialsFileSymbolicLinkError-class.html">oauth2client.locked_file.CredentialsFileSymbolicLinkError</a></strong>:
<em class="summary">Credentials files must not be symbolic links.</em>
</li>
- <li> <strong class="uidlink"><a href="apiclient.errors.Error-class.html">apiclient.errors.Error</a></strong>:
- <em class="summary">Base error for this module.</em>
+ <li> <strong class="uidlink"><a href="oauth2client.file.CredentialsFileSymbolicLinkError-class.html">oauth2client.file.CredentialsFileSymbolicLinkError</a></strong>:
+ <em class="summary">Credentials files must not be symbolic links.</em>
</li>
- <li> <strong class="uidlink"><a href="oauth2client.client.Error-class.html">oauth2client.client.Error</a></strong>:
+ <li> <strong class="uidlink"><a href="apiclient.errors.Error-class.html">apiclient.errors.Error</a></strong>:
<em class="summary">Base error for this module.</em>
</li>
<li> <strong class="uidlink"><a href="oauth2client.clientsecrets.Error-class.html">oauth2client.clientsecrets.Error</a></strong>:
@@ -104,26 +99,15 @@
<li> <strong class="uidlink"><a href="oauth2client.multistore_file.Error-class.html">oauth2client.multistore_file.Error</a></strong>:
<em class="summary">Base error for this module.</em>
</li>
+ <li> <strong class="uidlink"><a href="oauth2client.client.Error-class.html">oauth2client.client.Error</a></strong>:
+ <em class="summary">Base error for this module.</em>
+ </li>
<li> <strong class="uidlink"><a href="oauth2client.appengine.InvalidClientSecretsError-class.html">oauth2client.appengine.InvalidClientSecretsError</a></strong>:
<em class="summary">The client_secrets.json file is malformed or missing required fields.</em>
</li>
<li> <strong class="uidlink"><a href="oauth2client.appengine.InvalidXsrfTokenError-class.html">oauth2client.appengine.InvalidXsrfTokenError</a></strong>:
<em class="summary">The XSRF token is invalid or expired.</em>
</li>
- <li> <strong class="uidlink">exceptions.StandardError</strong>:
- <em class="summary">Base class for all standard Python exceptions that do not represent
-interpreter exiting.</em>
- <ul>
- <li> <strong class="uidlink">exceptions.ValueError</strong>:
- <em class="summary">Inappropriate argument value (of correct type).</em>
- <ul>
- <li> <strong class="uidlink"><a href="apiclient.push.InvalidSubscriptionRequestError-class.html">apiclient.push.InvalidSubscriptionRequestError</a></strong>:
- <em class="summary">The request cannot be subscribed.</em>
- </li>
- </ul>
- </li>
- </ul>
- </li>
</ul>
</li>
</ul>
@@ -131,8 +115,8 @@
<li> <strong class="uidlink"><a href="apiclient.http.BatchHttpRequest-class.html">apiclient.http.BatchHttpRequest</a></strong>:
<em class="summary">Batches multiple HttpRequest objects into a single HTTP request.</em>
</li>
- <li> <strong class="uidlink"><a href="apiclient.push.Channel-class.html">apiclient.push.Channel</a></strong>:
- <em class="summary">Base class for channel types.</em>
+ <li> <strong class="uidlink"><a href="apiclient.channel.Channel-class.html">apiclient.channel.Channel</a></strong>:
+ <em class="summary">A Channel for notifications.</em>
</li>
<li> <strong class="uidlink"><a href="oauth2client.client.Credentials-class.html">oauth2client.client.Credentials</a></strong>:
<em class="summary">Base class for all Credentials objects.</em>
@@ -170,11 +154,14 @@
<li> <strong class="uidlink"><a href="oauth2client.client.MemoryCache-class.html">oauth2client.client.MemoryCache</a></strong>:
<em class="summary">httplib2 Cache implementation which only caches locally.</em>
</li>
+ <li> <strong class="uidlink"><a href="apiclient.model.Model-class.html">apiclient.model.Model</a></strong>:
+ <em class="summary">Model base class.</em>
+ </li>
<li> <strong class="uidlink">google.appengine.ext.db.Model</strong>:
<em class="summary">Model is the superclass of all object entities in the datastore.</em>
</li>
- <li> <strong class="uidlink"><a href="apiclient.model.Model-class.html">apiclient.model.Model</a></strong>:
- <em class="summary">Model base class.</em>
+ <li> <strong class="uidlink"><a href="apiclient.channel.Notification-class.html">apiclient.channel.Notification</a></strong>:
+ <em class="summary">A Notification from a Channel.</em>
</li>
<li> <strong class="uidlink"><a href="oauth2client.appengine.OAuth2Decorator-class.html">oauth2client.appengine.OAuth2Decorator</a></strong>:
<em class="summary">Utility for making OAuth 2.0 easier.</em>
@@ -197,9 +184,6 @@
<li> <strong class="uidlink"><a href="oauth2client.client.Storage-class.html">oauth2client.client.Storage</a></strong>:
<em class="summary">Base class for all Storage objects.</em>
</li>
- <li> <strong class="uidlink"><a href="apiclient.push.Subscription-class.html">apiclient.push.Subscription</a></strong>:
- <em class="summary">Information about a subscription.</em>
- </li>
<li> <strong class="uidlink"><a href="oauth2client.multistore_file._MultiStore-class.html" onclick="show_private();">oauth2client.multistore_file._MultiStore</a></strong>:
<em class="summary">A file backed store for multiple credentials.</em>
</li>
@@ -241,7 +225,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:22 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:42 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/class_hierarchy_for_invalidnot.gif b/docs/epy/class_hierarchy_for_invalidnot.gif
new file mode 100644
index 0000000..b0a5feb
--- /dev/null
+++ b/docs/epy/class_hierarchy_for_invalidnot.gif
Binary files differ
diff --git a/docs/epy/class_hierarchy_for_notificati.gif b/docs/epy/class_hierarchy_for_notificati.gif
new file mode 100644
index 0000000..0e5353b
--- /dev/null
+++ b/docs/epy/class_hierarchy_for_notificati.gif
Binary files differ
diff --git a/docs/epy/google.appengine.ext.db.PropertiedClass-class.html b/docs/epy/google.appengine.ext.db.PropertiedClass-class.html
index e56a94f..9eaa4ed 100644
--- a/docs/epy/google.appengine.ext.db.PropertiedClass-class.html
+++ b/docs/epy/google.appengine.ext.db.PropertiedClass-class.html
@@ -58,11 +58,36 @@
<!-- ==================== TYPE DESCRIPTION ==================== -->
<h1 class="epydoc">Type PropertiedClass</h1><p class="nomargin-top"></p>
<center>
-<center> <map id="class_hierarchy_for_propertied" name="class_hierarchy_for_propertied">
-<area shape="rect" id="node1" href="google.appengine.ext.db.PropertiedClass-class.html" title="PropertiedClass" alt="" coords="5,6,120,34"/>
-<area shape="rect" id="node2" href="javascript:void(0);" title="type" alt="" coords="144,6,189,34"/>
+<center> <map id="uml_class_diagram_for_google_a" name="uml_class_diagram_for_google_a">
+<area shape="rect" id="node99" href="google.appengine.ext.db.PropertiedClass-class.html#__init__" title="Initializes a class that might have property definitions." alt="" coords="17,559,301,577"/>
+<area shape="rect" id="node1" href="google.appengine.ext.db.PropertiedClass-class.html" title="Meta-class for initializing Model classes properties." alt="" coords="5,526,312,583"/>
+<area shape="rect" id="node100" href="javascript:void(0);" title="type.__abstractmethods__" alt="" coords="93,31,225,49"/>
+<area shape="rect" id="node100" href="javascript:void(0);" title="type.__base__" alt="" coords="93,49,225,68"/>
+<area shape="rect" id="node100" href="javascript:void(0);" title="type.__bases__" alt="" coords="93,68,225,87"/>
+<area shape="rect" id="node100" href="javascript:void(0);" title="type.__basicsize__" alt="" coords="93,87,225,105"/>
+<area shape="rect" id="node100" href="javascript:void(0);" title="type.__dictoffset__" alt="" coords="93,105,225,124"/>
+<area shape="rect" id="node100" href="javascript:void(0);" title="type.__flags__" alt="" coords="93,124,225,143"/>
+<area shape="rect" id="node100" href="javascript:void(0);" title="type.__itemsize__" alt="" coords="93,143,225,161"/>
+<area shape="rect" id="node100" href="javascript:void(0);" title="type.__mro__" alt="" coords="93,161,225,180"/>
+<area shape="rect" id="node100" href="javascript:void(0);" title="type.__name__" alt="" coords="93,180,225,199"/>
+<area shape="rect" id="node100" href="javascript:void(0);" title="type.__weakrefoffset__" alt="" coords="93,199,225,217"/>
+<area shape="rect" id="node100" href="javascript:void(0);" title="x(...)" alt="" coords="93,220,225,239"/>
+<area shape="rect" id="node100" href="javascript:void(0);" title="x.__delattr__('name') <==> del x.name" alt="" coords="93,239,225,257"/>
+<area shape="rect" id="node100" href="javascript:void(0);" title="x==y" alt="" coords="93,257,225,276"/>
+<area shape="rect" id="node100" href="javascript:void(0);" title="x>=y" alt="" coords="93,276,225,295"/>
+<area shape="rect" id="node100" href="javascript:void(0);" title="x.__getattribute__('name') <==> x.name" alt="" coords="93,295,225,313"/>
+<area shape="rect" id="node100" href="javascript:void(0);" title="x>y" alt="" coords="93,313,225,332"/>
+<area shape="rect" id="node100" href="javascript:void(0);" title="hash(x)" alt="" coords="93,332,225,351"/>
+<area shape="rect" id="node100" href="javascript:void(0);" title="check if an object is an instance" alt="" coords="93,351,225,369"/>
+<area shape="rect" id="node100" href="javascript:void(0);" title="x<=y" alt="" coords="93,369,225,388"/>
+<area shape="rect" id="node100" href="javascript:void(0);" title="x<y" alt="" coords="93,388,225,407"/>
+<area shape="rect" id="node100" href="javascript:void(0);" title="x!=y" alt="" coords="93,407,225,425"/>
+<area shape="rect" id="node100" href="javascript:void(0);" title="type.__new__" alt="" coords="93,425,225,444"/>
+<area shape="rect" id="node100" href="javascript:void(0);" title="repr(x)" alt="" coords="93,444,225,463"/>
+<area shape="rect" id="node100" href="javascript:void(0);" title="return a type's method resolution order" alt="" coords="93,481,225,500"/>
+<area shape="rect" id="node2" href="javascript:void(0);" title="type(object) -> the object's type..." alt="" coords="81,6,236,506"/>
</map>
- <img src="class_hierarchy_for_propertied.gif" alt='' usemap="#class_hierarchy_for_propertied" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_google_a.gif" alt='' usemap="#uml_class_diagram_for_google_a" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -294,7 +319,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:24 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:44 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/help.html b/docs/epy/help.html
index a01e84a..bee2c16 100644
--- a/docs/epy/help.html
+++ b/docs/epy/help.html
@@ -240,7 +240,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:22 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:42 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/identifier-index.html b/docs/epy/identifier-index.html
index b80c7f8..8c22845 100644
--- a/docs/epy/identifier-index.html
+++ b/docs/epy/identifier-index.html
@@ -73,7 +73,7 @@
<a href="#T">T</a>
<a href="#U">U</a>
<a href="#V">V</a>
- <a href="#W">W</a>
+ W
<a href="#X">X</a>
Y
Z
@@ -89,59 +89,51 @@
<span class="index-where">(in <a href="apiclient.model.BaseModel-class.html">BaseModel</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore._Storage-class.html#acquire_lock">acquire_lock()</a><br />
<span class="index-where">(in <a href="oauth2client.multistore_file._MultiStore._Storage-class.html" onclick="show_private();">_Storage</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.appengine.AppAssertionCredentials-class.html">AppAssertionCredentials</a><br />
-<span class="index-where">(in <a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.gce.AppAssertionCredentials-class.html">AppAssertionCredentials</a><br />
+<span class="index-where">(in <a href="oauth2client.gce-module.html">oauth2client.gce</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="apiclient.model.JsonModel-class.html#accept">accept</a><br />
<span class="index-where">(in <a href="apiclient.model.JsonModel-class.html">JsonModel</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.http.BatchHttpRequest-class.html#add">add()</a><br />
<span class="index-where">(in <a href="apiclient.http.BatchHttpRequest-class.html">BatchHttpRequest</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.gce.AppAssertionCredentials-class.html">AppAssertionCredentials</a><br />
-<span class="index-where">(in <a href="oauth2client.gce-module.html">oauth2client.gce</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.appengine-module.html">appengine</a><br />
+<span class="index-where">(in <a href="oauth2client-module.html">oauth2client</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="apiclient.model.MediaModel-class.html#accept">accept</a><br />
<span class="index-where">(in <a href="apiclient.model.MediaModel-class.html">MediaModel</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.http.HttpRequest-class.html#add_response_callback">add_response_callback()</a><br />
<span class="index-where">(in <a href="apiclient.http.HttpRequest-class.html">HttpRequest</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.appengine-module.html">appengine</a><br />
-<span class="index-where">(in <a href="oauth2client-module.html">oauth2client</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="apiclient.model.ProtocolBufferModel-class.html#accept">accept</a><br />
-<span class="index-where">(in <a href="apiclient.model.ProtocolBufferModel-class.html">ProtocolBufferModel</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.push.Headers-class.html#ALL_HEADERS">ALL_HEADERS</a><br />
-<span class="index-where">(in <a href="apiclient.push.Headers-class.html">Headers</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.crypt.AppIdentityError-class.html">AppIdentityError</a><br />
<span class="index-where">(in <a href="oauth2client.crypt-module.html">oauth2client.crypt</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="apiclient.model.RawModel-class.html#accept">accept</a><br />
-<span class="index-where">(in <a href="apiclient.model.RawModel-class.html">RawModel</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.model.ProtocolBufferModel-class.html#accept">accept</a><br />
+<span class="index-where">(in <a href="apiclient.model.ProtocolBufferModel-class.html">ProtocolBufferModel</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.locked_file.AlreadyLockedException-class.html">AlreadyLockedException</a><br />
<span class="index-where">(in <a href="oauth2client.locked_file-module.html">oauth2client.locked_file</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.client.Credentials-class.html#apply">apply()</a><br />
<span class="index-where">(in <a href="oauth2client.client.Credentials-class.html">Credentials</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="oauth2client.client.OAuth2Credentials-class.html#access_token_expired">access_token_expired()</a><br />
-<span class="index-where">(in <a href="oauth2client.client.OAuth2Credentials-class.html">OAuth2Credentials</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.model.RawModel-class.html#accept">accept</a><br />
+<span class="index-where">(in <a href="apiclient.model.RawModel-class.html">RawModel</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.model.BaseModel-class.html#alt_param">alt_param</a><br />
<span class="index-where">(in <a href="apiclient.model.BaseModel-class.html">BaseModel</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.client.OAuth2Credentials-class.html#apply">apply()</a><br />
<span class="index-where">(in <a href="oauth2client.client.OAuth2Credentials-class.html">OAuth2Credentials</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="oauth2client.client.AccessTokenCredentials-class.html">AccessTokenCredentials</a><br />
-<span class="index-where">(in <a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client.OAuth2Credentials-class.html#access_token_expired">access_token_expired()</a><br />
+<span class="index-where">(in <a href="oauth2client.client.OAuth2Credentials-class.html">OAuth2Credentials</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.model.JsonModel-class.html#alt_param">alt_param</a><br />
<span class="index-where">(in <a href="apiclient.model.JsonModel-class.html">JsonModel</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.push.Channel-class.html#as_header_value">as_header_value()</a><br />
-<span class="index-where">(in <a href="apiclient.push.Channel-class.html">Channel</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.tools-module.html#argparser">argparser</a><br />
+<span class="index-where">(in <a href="oauth2client.tools-module.html">oauth2client.tools</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="oauth2client.client.AccessTokenCredentialsError-class.html">AccessTokenCredentialsError</a><br />
+<td width="33%" class="link-index"><a href="oauth2client.client.AccessTokenCredentials-class.html">AccessTokenCredentials</a><br />
<span class="index-where">(in <a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.model.MediaModel-class.html#alt_param">alt_param</a><br />
<span class="index-where">(in <a href="apiclient.model.MediaModel-class.html">MediaModel</a>)</span></td>
@@ -149,7 +141,7 @@
<span class="index-where">(in <a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="oauth2client.client.AccessTokenRefreshError-class.html">AccessTokenRefreshError</a><br />
+<td width="33%" class="link-index"><a href="oauth2client.client.AccessTokenCredentialsError-class.html">AccessTokenCredentialsError</a><br />
<span class="index-where">(in <a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.model.ProtocolBufferModel-class.html#alt_param">alt_param</a><br />
<span class="index-where">(in <a href="apiclient.model.ProtocolBufferModel-class.html">ProtocolBufferModel</a>)</span></td>
@@ -157,28 +149,35 @@
<span class="index-where">(in <a href="oauth2client.crypt-module.html">oauth2client.crypt</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="oauth2client.client.Storage-class.html#acquire_lock">acquire_lock()</a><br />
-<span class="index-where">(in <a href="oauth2client.client.Storage-class.html">Storage</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client.AccessTokenRefreshError-class.html">AccessTokenRefreshError</a><br />
+<span class="index-where">(in <a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.model.RawModel-class.html#alt_param">alt_param</a><br />
<span class="index-where">(in <a href="apiclient.model.RawModel-class.html">RawModel</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.client.Credentials-class.html#authorize">authorize()</a><br />
<span class="index-where">(in <a href="oauth2client.client.Credentials-class.html">Credentials</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="oauth2client.file.Storage-class.html#acquire_lock">acquire_lock()</a><br />
-<span class="index-where">(in <a href="oauth2client.file.Storage-class.html">Storage</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client.Storage-class.html#acquire_lock">acquire_lock()</a><br />
+<span class="index-where">(in <a href="oauth2client.client.Storage-class.html">Storage</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.anyjson-module.html">anyjson</a><br />
<span class="index-where">(in <a href="oauth2client-module.html">oauth2client</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.client.OAuth2Credentials-class.html#authorize">authorize()</a><br />
<span class="index-where">(in <a href="oauth2client.client.OAuth2Credentials-class.html">OAuth2Credentials</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="oauth2client.keyring_storage.Storage-class.html#acquire_lock">acquire_lock()</a><br />
-<span class="index-where">(in <a href="oauth2client.keyring_storage.Storage-class.html">Storage</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.file.Storage-class.html#acquire_lock">acquire_lock()</a><br />
+<span class="index-where">(in <a href="oauth2client.file.Storage-class.html">Storage</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient-module.html">apiclient</a></td>
<td width="33%" class="link-index"><a href="oauth2client.appengine.OAuth2Decorator-class.html#authorize_url">authorize_url()</a><br />
<span class="index-where">(in <a href="oauth2client.appengine.OAuth2Decorator-class.html">OAuth2Decorator</a>)</span></td>
</tr>
+<tr>
+<td width="33%" class="link-index"><a href="oauth2client.keyring_storage.Storage-class.html#acquire_lock">acquire_lock()</a><br />
+<span class="index-where">(in <a href="oauth2client.keyring_storage.Storage-class.html">Storage</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.appengine.AppAssertionCredentials-class.html">AppAssertionCredentials</a><br />
+<span class="index-where">(in <a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
</table>
</td></tr>
<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="B">B</a></h2></td>
@@ -189,20 +188,21 @@
<span class="index-where">(in <a href="apiclient.model-module.html">apiclient.model</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.mimeparse-module.html#best_match">best_match()</a><br />
<span class="index-where">(in <a href="apiclient.mimeparse-module.html">apiclient.mimeparse</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.discovery-module.html#build_from_document">build_from_document()</a><br />
+<td width="33%" class="link-index"><a href="apiclient.discovery-module.html#build">build()</a><br />
<span class="index-where">(in <a href="apiclient.discovery-module.html">apiclient.discovery</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="apiclient.errors.BatchError-class.html">BatchError</a><br />
<span class="index-where">(in <a href="apiclient.errors-module.html">apiclient.errors</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.discovery-module.html#BODY_PARAMETER_DEFAULT_VALUE">BODY_PARAMETER_DEFAULT_VALUE</a><br />
+<td width="33%" class="link-index"><a href="apiclient.channel.Channel-class.html#body">body()</a><br />
+<span class="index-where">(in <a href="apiclient.channel.Channel-class.html">Channel</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.discovery-module.html#build_from_document">build_from_document()</a><br />
<span class="index-where">(in <a href="apiclient.discovery-module.html">apiclient.discovery</a>)</span></td>
-<td width="33%" class="link-index"> </td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="apiclient.http.BatchHttpRequest-class.html">BatchHttpRequest</a><br />
<span class="index-where">(in <a href="apiclient.http-module.html">apiclient.http</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.discovery-module.html#build">build()</a><br />
+<td width="33%" class="link-index"><a href="apiclient.discovery-module.html#BODY_PARAMETER_DEFAULT_VALUE">BODY_PARAMETER_DEFAULT_VALUE</a><br />
<span class="index-where">(in <a href="apiclient.discovery-module.html">apiclient.discovery</a>)</span></td>
<td width="33%" class="link-index"> </td>
</tr>
@@ -216,7 +216,7 @@
<span class="index-where">(in <a href="oauth2client.appengine.OAuth2Decorator-class.html">OAuth2Decorator</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.clientsecrets-module.html">clientsecrets</a><br />
<span class="index-where">(in <a href="oauth2client-module.html">oauth2client</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.client-module.html#credentials_from_clientsecrets_and_code">credentials_from_clientsecrets_and_code()</a><br />
+<td width="33%" class="link-index"><a href="oauth2client.client.Credentials-class.html">Credentials</a><br />
<span class="index-where">(in <a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
</tr>
<tr>
@@ -224,7 +224,7 @@
<span class="index-where">(in <a href="oauth2client.appengine.OAuth2Decorator-class.html">OAuth2Decorator</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.crypt-module.html#CLOCK_SKEW_SECS">CLOCK_SKEW_SECS</a><br />
<span class="index-where">(in <a href="oauth2client.crypt-module.html">oauth2client.crypt</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.client-module.html#credentials_from_code">credentials_from_code()</a><br />
+<td width="33%" class="link-index"><a href="oauth2client.client-module.html#credentials_from_clientsecrets_and_code">credentials_from_clientsecrets_and_code()</a><br />
<span class="index-where">(in <a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
</tr>
<tr>
@@ -232,77 +232,78 @@
<span class="index-where">(in <a href="oauth2client.appengine.OAuth2Decorator-class.html">OAuth2Decorator</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.model.BaseModel-class.html#content_type">content_type</a><br />
<span class="index-where">(in <a href="apiclient.model.BaseModel-class.html">BaseModel</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client-module.html#credentials_from_code">credentials_from_code()</a><br />
+<span class="index-where">(in <a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="apiclient.channel-module.html">channel</a><br />
+<span class="index-where">(in <a href="apiclient-module.html">apiclient</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.model.JsonModel-class.html#content_type">content_type</a><br />
+<span class="index-where">(in <a href="apiclient.model.JsonModel-class.html">JsonModel</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.django_orm.CredentialsField-class.html">CredentialsField</a><br />
<span class="index-where">(in <a href="oauth2client.django_orm-module.html">oauth2client.django_orm</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="apiclient.push.Channel-class.html">Channel</a><br />
-<span class="index-where">(in <a href="apiclient.push-module.html">apiclient.push</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.model.JsonModel-class.html#content_type">content_type</a><br />
-<span class="index-where">(in <a href="apiclient.model.JsonModel-class.html">JsonModel</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.channel.Channel-class.html">Channel</a><br />
+<span class="index-where">(in <a href="apiclient.channel-module.html">apiclient.channel</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.model.MediaModel-class.html#content_type">content_type</a><br />
+<span class="index-where">(in <a href="apiclient.model.MediaModel-class.html">MediaModel</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.file.CredentialsFileSymbolicLinkError-class.html">CredentialsFileSymbolicLinkError</a><br />
<span class="index-where">(in <a href="oauth2client.file-module.html">oauth2client.file</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="apiclient.http.MediaIoBaseUpload-class.html#chunksize">chunksize()</a><br />
-<span class="index-where">(in <a href="apiclient.http.MediaIoBaseUpload-class.html">MediaIoBaseUpload</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.model.MediaModel-class.html#content_type">content_type</a><br />
-<span class="index-where">(in <a href="apiclient.model.MediaModel-class.html">MediaModel</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.channel-module.html#CHANNEL_PARAMS">CHANNEL_PARAMS</a><br />
+<span class="index-where">(in <a href="apiclient.channel-module.html">apiclient.channel</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.model.ProtocolBufferModel-class.html#content_type">content_type</a><br />
+<span class="index-where">(in <a href="apiclient.model.ProtocolBufferModel-class.html">ProtocolBufferModel</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.locked_file.CredentialsFileSymbolicLinkError-class.html">CredentialsFileSymbolicLinkError</a><br />
<span class="index-where">(in <a href="oauth2client.locked_file-module.html">oauth2client.locked_file</a>)</span></td>
</tr>
<tr>
+<td width="33%" class="link-index"><a href="apiclient.http.MediaIoBaseUpload-class.html#chunksize">chunksize()</a><br />
+<span class="index-where">(in <a href="apiclient.http.MediaIoBaseUpload-class.html">MediaIoBaseUpload</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.model.RawModel-class.html#content_type">content_type</a><br />
+<span class="index-where">(in <a href="apiclient.model.RawModel-class.html">RawModel</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.appengine.CredentialsModel-class.html">CredentialsModel</a><br />
+<span class="index-where">(in <a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
+</tr>
+<tr>
<td width="33%" class="link-index"><a href="apiclient.http.MediaUpload-class.html#chunksize">chunksize()</a><br />
<span class="index-where">(in <a href="apiclient.http.MediaUpload-class.html">MediaUpload</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.model.ProtocolBufferModel-class.html#content_type">content_type</a><br />
-<span class="index-where">(in <a href="apiclient.model.ProtocolBufferModel-class.html">ProtocolBufferModel</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.appengine.CredentialsModel-class.html">CredentialsModel</a><br />
+<td width="33%" class="link-index"><a href="apiclient.discovery-module.html#createMethod">createMethod()</a><br />
+<span class="index-where">(in <a href="apiclient.discovery-module.html">apiclient.discovery</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.appengine.CredentialsNDBModel-class.html">CredentialsNDBModel</a><br />
<span class="index-where">(in <a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="oauth2client.client-module.html#clean_headers">clean_headers()</a><br />
<span class="index-where">(in <a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.model.RawModel-class.html#content_type">content_type</a><br />
-<span class="index-where">(in <a href="apiclient.model.RawModel-class.html">RawModel</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.appengine.CredentialsNDBModel-class.html">CredentialsNDBModel</a><br />
-<span class="index-where">(in <a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="oauth2client.client-module.html">client</a><br />
-<span class="index-where">(in <a href="oauth2client-module.html">oauth2client</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.discovery-module.html#createMethod">createMethod()</a><br />
+<td width="33%" class="link-index"><a href="apiclient.discovery-module.html#createNextMethod">createNextMethod()</a><br />
<span class="index-where">(in <a href="apiclient.discovery-module.html">apiclient.discovery</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.appengine.CredentialsNDBProperty-class.html">CredentialsNDBProperty</a><br />
<span class="index-where">(in <a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="apiclient.push-module.html#CLIENT_TOKEN">CLIENT_TOKEN</a><br />
-<span class="index-where">(in <a href="apiclient.push-module.html">apiclient.push</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.discovery-module.html#createNextMethod">createNextMethod()</a><br />
-<span class="index-where">(in <a href="apiclient.discovery-module.html">apiclient.discovery</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.appengine.CredentialsProperty-class.html">CredentialsProperty</a><br />
-<span class="index-where">(in <a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="apiclient.push.Subscription-class.html#client_token">client_token()</a><br />
-<span class="index-where">(in <a href="apiclient.push.Subscription-class.html">Subscription</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client-module.html">client</a><br />
+<span class="index-where">(in <a href="oauth2client-module.html">oauth2client</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.appengine.CredentialsModel-class.html#credentials">credentials</a><br />
<span class="index-where">(in <a href="oauth2client.appengine.CredentialsModel-class.html">CredentialsModel</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.crypt-module.html">crypt</a><br />
-<span class="index-where">(in <a href="oauth2client-module.html">oauth2client</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.appengine.CredentialsProperty-class.html">CredentialsProperty</a><br />
+<span class="index-where">(in <a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="oauth2client.tools.ClientRedirectHandler-class.html">ClientRedirectHandler</a><br />
<span class="index-where">(in <a href="oauth2client.tools-module.html">oauth2client.tools</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.appengine.CredentialsNDBModel-class.html#credentials">credentials</a><br />
<span class="index-where">(in <a href="oauth2client.appengine.CredentialsNDBModel-class.html">CredentialsNDBModel</a>)</span></td>
-<td width="33%" class="link-index"> </td>
+<td width="33%" class="link-index"><a href="oauth2client.crypt-module.html">crypt</a><br />
+<span class="index-where">(in <a href="oauth2client-module.html">oauth2client</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="oauth2client.tools.ClientRedirectServer-class.html">ClientRedirectServer</a><br />
<span class="index-where">(in <a href="oauth2client.tools-module.html">oauth2client.tools</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.client.Credentials-class.html">Credentials</a><br />
-<span class="index-where">(in <a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.appengine.OAuth2Decorator-class.html#credentials">credentials</a><br />
+<span class="index-where">(in <a href="oauth2client.appengine.OAuth2Decorator-class.html">OAuth2Decorator</a>)</span></td>
<td width="33%" class="link-index"> </td>
</tr>
</table>
@@ -313,51 +314,57 @@
<tr>
<td width="33%" class="link-index"><a href="oauth2client.appengine.CredentialsProperty-class.html#data_type">data_type</a><br />
<span class="index-where">(in <a href="oauth2client.appengine.CredentialsProperty-class.html">CredentialsProperty</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.client.Storage-class.html#delete">delete()</a><br />
-<span class="index-where">(in <a href="oauth2client.client.Storage-class.html">Storage</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.model.RawModel-class.html#deserialize">deserialize()</a><br />
-<span class="index-where">(in <a href="apiclient.model.RawModel-class.html">RawModel</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="oauth2client.appengine.FlowProperty-class.html#data_type">data_type</a><br />
-<span class="index-where">(in <a href="oauth2client.appengine.FlowProperty-class.html">FlowProperty</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.xsrfutil-module.html#DELIMITER">DELIMITER</a><br />
<span class="index-where">(in <a href="oauth2client.xsrfutil-module.html">oauth2client.xsrfutil</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.util-module.html#dict_to_tuple_key">dict_to_tuple_key()</a><br />
-<span class="index-where">(in <a href="oauth2client.util-module.html">oauth2client.util</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="apiclient.http-module.html#DEFAULT_CHUNK_SIZE">DEFAULT_CHUNK_SIZE</a><br />
-<span class="index-where">(in <a href="apiclient.http-module.html">apiclient.http</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.model.BaseModel-class.html#deserialize">deserialize()</a><br />
-<span class="index-where">(in <a href="apiclient.model.BaseModel-class.html">BaseModel</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.discovery-module.html">discovery</a><br />
<span class="index-where">(in <a href="apiclient-module.html">apiclient</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="apiclient.discovery-module.html#DEFAULT_METHOD_DOC">DEFAULT_METHOD_DOC</a><br />
-<span class="index-where">(in <a href="apiclient.discovery-module.html">apiclient.discovery</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.model.JsonModel-class.html#deserialize">deserialize()</a><br />
-<span class="index-where">(in <a href="apiclient.model.JsonModel-class.html">JsonModel</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.appengine.FlowProperty-class.html#data_type">data_type</a><br />
+<span class="index-where">(in <a href="oauth2client.appengine.FlowProperty-class.html">FlowProperty</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.model.BaseModel-class.html#deserialize">deserialize()</a><br />
+<span class="index-where">(in <a href="apiclient.model.BaseModel-class.html">BaseModel</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.discovery-module.html#DISCOVERY_URI">DISCOVERY_URI</a><br />
<span class="index-where">(in <a href="apiclient.discovery-module.html">apiclient.discovery</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="oauth2client.xsrfutil-module.html#DEFAULT_TIMEOUT_SECS">DEFAULT_TIMEOUT_SECS</a><br />
-<span class="index-where">(in <a href="oauth2client.xsrfutil-module.html">oauth2client.xsrfutil</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.model.MediaModel-class.html#deserialize">deserialize()</a><br />
-<span class="index-where">(in <a href="apiclient.model.MediaModel-class.html">MediaModel</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.http-module.html#DEFAULT_CHUNK_SIZE">DEFAULT_CHUNK_SIZE</a><br />
+<span class="index-where">(in <a href="apiclient.http-module.html">apiclient.http</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.model.JsonModel-class.html#deserialize">deserialize()</a><br />
+<span class="index-where">(in <a href="apiclient.model.JsonModel-class.html">JsonModel</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.django_orm-module.html">django_orm</a><br />
<span class="index-where">(in <a href="oauth2client-module.html">oauth2client</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="oauth2client.client.MemoryCache-class.html#delete">delete()</a><br />
-<span class="index-where">(in <a href="oauth2client.client.MemoryCache-class.html">MemoryCache</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.model.ProtocolBufferModel-class.html#deserialize">deserialize()</a><br />
-<span class="index-where">(in <a href="apiclient.model.ProtocolBufferModel-class.html">ProtocolBufferModel</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.discovery-module.html#DEFAULT_METHOD_DOC">DEFAULT_METHOD_DOC</a><br />
+<span class="index-where">(in <a href="apiclient.discovery-module.html">apiclient.discovery</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.model.MediaModel-class.html#deserialize">deserialize()</a><br />
+<span class="index-where">(in <a href="apiclient.model.MediaModel-class.html">MediaModel</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.tools.ClientRedirectHandler-class.html#do_GET">do_GET()</a><br />
<span class="index-where">(in <a href="oauth2client.tools.ClientRedirectHandler-class.html" onclick="show_private();">ClientRedirectHandler</a>)</span></td>
</tr>
+<tr>
+<td width="33%" class="link-index"><a href="oauth2client.xsrfutil-module.html#DEFAULT_TIMEOUT_SECS">DEFAULT_TIMEOUT_SECS</a><br />
+<span class="index-where">(in <a href="oauth2client.xsrfutil-module.html">oauth2client.xsrfutil</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.model.ProtocolBufferModel-class.html#deserialize">deserialize()</a><br />
+<span class="index-where">(in <a href="apiclient.model.ProtocolBufferModel-class.html">ProtocolBufferModel</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.model-module.html#dump_request_response">dump_request_response</a><br />
+<span class="index-where">(in <a href="apiclient.model-module.html">apiclient.model</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="oauth2client.client.MemoryCache-class.html#delete">delete()</a><br />
+<span class="index-where">(in <a href="oauth2client.client.MemoryCache-class.html">MemoryCache</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.model.RawModel-class.html#deserialize">deserialize()</a><br />
+<span class="index-where">(in <a href="apiclient.model.RawModel-class.html">RawModel</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="oauth2client.client.Storage-class.html#delete">delete()</a><br />
+<span class="index-where">(in <a href="oauth2client.client.Storage-class.html">Storage</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.util-module.html#dict_to_tuple_key">dict_to_tuple_key()</a><br />
+<span class="index-where">(in <a href="oauth2client.util-module.html">oauth2client.util</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
</table>
</td></tr>
<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="E">E</a></h2></td>
@@ -366,47 +373,40 @@
<tr>
<td width="33%" class="link-index"><a href="apiclient.schema._SchemaToStruct-class.html#emit">emit()</a><br />
<span class="index-where">(in <a href="apiclient.schema._SchemaToStruct-class.html" onclick="show_private();">_SchemaToStruct</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.clientsecrets.Error-class.html">Error</a><br />
-<span class="index-where">(in <a href="oauth2client.clientsecrets-module.html">oauth2client.clientsecrets</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.http.HttpRequest-class.html#execute">execute()</a><br />
-<span class="index-where">(in <a href="apiclient.http.HttpRequest-class.html">HttpRequest</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.errors.Error-class.html">Error</a><br />
+<span class="index-where">(in <a href="apiclient.errors-module.html">apiclient.errors</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.http.BatchHttpRequest-class.html#execute">execute()</a><br />
+<span class="index-where">(in <a href="apiclient.http.BatchHttpRequest-class.html">BatchHttpRequest</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="apiclient.schema._SchemaToStruct-class.html#emitBegin">emitBegin()</a><br />
<span class="index-where">(in <a href="apiclient.schema._SchemaToStruct-class.html" onclick="show_private();">_SchemaToStruct</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.multistore_file.Error-class.html">Error</a><br />
-<span class="index-where">(in <a href="oauth2client.multistore_file-module.html">oauth2client.multistore_file</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.http.HttpRequestMock-class.html#execute">execute()</a><br />
-<span class="index-where">(in <a href="apiclient.http.HttpRequestMock-class.html">HttpRequestMock</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client.Error-class.html">Error</a><br />
+<span class="index-where">(in <a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.http.HttpRequest-class.html#execute">execute()</a><br />
+<span class="index-where">(in <a href="apiclient.http.HttpRequest-class.html">HttpRequest</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="apiclient.schema._SchemaToStruct-class.html#emitEnd">emitEnd()</a><br />
<span class="index-where">(in <a href="apiclient.schema._SchemaToStruct-class.html" onclick="show_private();">_SchemaToStruct</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.errors-module.html">errors</a><br />
-<span class="index-where">(in <a href="apiclient-module.html">apiclient</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.client-module.html#EXPIRY_FORMAT">EXPIRY_FORMAT</a><br />
-<span class="index-where">(in <a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.clientsecrets.Error-class.html">Error</a><br />
+<span class="index-where">(in <a href="oauth2client.clientsecrets-module.html">oauth2client.clientsecrets</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.http.HttpRequestMock-class.html#execute">execute()</a><br />
+<span class="index-where">(in <a href="apiclient.http.HttpRequestMock-class.html">HttpRequestMock</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="oauth2client.appengine.FlowProperty-class.html#empty">empty()</a><br />
<span class="index-where">(in <a href="oauth2client.appengine.FlowProperty-class.html">FlowProperty</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.push-module.html#EVENT_TYPE">EVENT_TYPE</a><br />
-<span class="index-where">(in <a href="apiclient.push-module.html">apiclient.push</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.ext-module.html">ext</a><br />
-<span class="index-where">(in <a href="apiclient-module.html">apiclient</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="apiclient.errors.Error-class.html">Error</a><br />
-<span class="index-where">(in <a href="apiclient.errors-module.html">apiclient.errors</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.push.Subscription-class.html#event_type">event_type()</a><br />
-<span class="index-where">(in <a href="apiclient.push.Subscription-class.html">Subscription</a>)</span></td>
-<td width="33%" class="link-index"> </td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="oauth2client.client.Error-class.html">Error</a><br />
+<td width="33%" class="link-index"><a href="oauth2client.multistore_file.Error-class.html">Error</a><br />
+<span class="index-where">(in <a href="oauth2client.multistore_file-module.html">oauth2client.multistore_file</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client-module.html#EXPIRY_FORMAT">EXPIRY_FORMAT</a><br />
<span class="index-where">(in <a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.http.BatchHttpRequest-class.html#execute">execute()</a><br />
-<span class="index-where">(in <a href="apiclient.http.BatchHttpRequest-class.html">BatchHttpRequest</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="apiclient.channel-module.html#EPOCH">EPOCH</a><br />
+<span class="index-where">(in <a href="apiclient.channel-module.html">apiclient.channel</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.errors-module.html">errors</a><br />
+<span class="index-where">(in <a href="apiclient-module.html">apiclient</a>)</span></td>
<td width="33%" class="link-index"> </td>
</tr>
</table>
@@ -417,72 +417,64 @@
<tr>
<td width="33%" class="link-index"><a href="oauth2client.file-module.html">file</a><br />
<span class="index-where">(in <a href="oauth2client-module.html">oauth2client</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.util-module.html#FLAGS">FLAGS</a><br />
-<span class="index-where">(in <a href="oauth2client.util-module.html">oauth2client.util</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.http.HttpRequest-class.html#from_json">from_json()</a><br />
-<span class="index-where">(in <a href="apiclient.http.HttpRequest-class.html">HttpRequest</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.appengine.OAuth2Decorator-class.html#flow">flow</a><br />
+<span class="index-where">(in <a href="oauth2client.appengine.OAuth2Decorator-class.html">OAuth2Decorator</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.http.MediaFileUpload-class.html#from_json">from_json()</a><br />
+<span class="index-where">(in <a href="apiclient.http.MediaFileUpload-class.html">MediaFileUpload</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="oauth2client.locked_file.LockedFile-class.html#file_handle">file_handle()</a><br />
<span class="index-where">(in <a href="oauth2client.locked_file.LockedFile-class.html">LockedFile</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.client.Flow-class.html">Flow</a><br />
<span class="index-where">(in <a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.http.MediaFileUpload-class.html#from_json">from_json()</a><br />
-<span class="index-where">(in <a href="apiclient.http.MediaFileUpload-class.html">MediaFileUpload</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.appengine.AppAssertionCredentials-class.html#from_json">from_json()</a><br />
+<span class="index-where">(in <a href="oauth2client.appengine.AppAssertionCredentials-class.html">AppAssertionCredentials</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="oauth2client.locked_file._Opener-class.html#file_handle">file_handle()</a><br />
<span class="index-where">(in <a href="oauth2client.locked_file._Opener-class.html" onclick="show_private();">_Opener</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.client-module.html#flow_from_clientsecrets">flow_from_clientsecrets()</a><br />
<span class="index-where">(in <a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.appengine.AppAssertionCredentials-class.html#from_json">from_json()</a><br />
-<span class="index-where">(in <a href="oauth2client.appengine.AppAssertionCredentials-class.html">AppAssertionCredentials</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client.AccessTokenCredentials-class.html#from_json">from_json()</a><br />
+<span class="index-where">(in <a href="oauth2client.client.AccessTokenCredentials-class.html">AccessTokenCredentials</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="oauth2client.locked_file.LockedFile-class.html#filename">filename()</a><br />
<span class="index-where">(in <a href="oauth2client.locked_file.LockedFile-class.html">LockedFile</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.client.FlowExchangeError-class.html">FlowExchangeError</a><br />
<span class="index-where">(in <a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.client.AccessTokenCredentials-class.html#from_json">from_json()</a><br />
-<span class="index-where">(in <a href="oauth2client.client.AccessTokenCredentials-class.html">AccessTokenCredentials</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client.Credentials-class.html#from_json">from_json()</a><br />
+<span class="index-where">(in <a href="oauth2client.client.Credentials-class.html">Credentials</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="oauth2client.locked_file._Opener-class.html#filename">filename()</a><br />
<span class="index-where">(in <a href="oauth2client.locked_file._Opener-class.html" onclick="show_private();">_Opener</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.django_orm.FlowField-class.html">FlowField</a><br />
<span class="index-where">(in <a href="oauth2client.django_orm-module.html">oauth2client.django_orm</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.client.Credentials-class.html#from_json">from_json()</a><br />
-<span class="index-where">(in <a href="oauth2client.client.Credentials-class.html">Credentials</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client.OAuth2Credentials-class.html#from_json">from_json()</a><br />
+<span class="index-where">(in <a href="oauth2client.client.OAuth2Credentials-class.html">OAuth2Credentials</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="apiclient.mimeparse-module.html#fitness_and_quality_parsed">fitness_and_quality_parsed()</a><br />
<span class="index-where">(in <a href="apiclient.mimeparse-module.html">apiclient.mimeparse</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.appengine.FlowNDBProperty-class.html">FlowNDBProperty</a><br />
<span class="index-where">(in <a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.client.OAuth2Credentials-class.html#from_json">from_json()</a><br />
-<span class="index-where">(in <a href="oauth2client.client.OAuth2Credentials-class.html">OAuth2Credentials</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client.SignedJwtAssertionCredentials-class.html#from_json">from_json()</a><br />
+<span class="index-where">(in <a href="oauth2client.client.SignedJwtAssertionCredentials-class.html">SignedJwtAssertionCredentials</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="apiclient.discovery-module.html#fix_method_name">fix_method_name()</a><br />
<span class="index-where">(in <a href="apiclient.discovery-module.html">apiclient.discovery</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.appengine.FlowProperty-class.html">FlowProperty</a><br />
<span class="index-where">(in <a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.client.SignedJwtAssertionCredentials-class.html#from_json">from_json()</a><br />
-<span class="index-where">(in <a href="oauth2client.client.SignedJwtAssertionCredentials-class.html">SignedJwtAssertionCredentials</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="apiclient.model-module.html#FLAGS">FLAGS</a><br />
-<span class="index-where">(in <a href="apiclient.model-module.html">apiclient.model</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.push.Subscription-class.html#for_channel">for_channel()</a><br />
-<span class="index-where">(in <a href="apiclient.push.Subscription-class.html">Subscription</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.gce.AppAssertionCredentials-class.html#from_json">from_json()</a><br />
<span class="index-where">(in <a href="oauth2client.gce.AppAssertionCredentials-class.html">AppAssertionCredentials</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="oauth2client.tools-module.html#FLAGS">FLAGS</a><br />
-<span class="index-where">(in <a href="oauth2client.tools-module.html">oauth2client.tools</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.push.Subscription-class.html#for_request">for_request()</a><br />
-<span class="index-where">(in <a href="apiclient.push.Subscription-class.html">Subscription</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.old_run-module.html#FLAGS">FLAGS</a><br />
+<span class="index-where">(in <a href="oauth2client.old_run-module.html">oauth2client.old_run</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.http.HttpRequest-class.html#from_json">from_json()</a><br />
+<span class="index-where">(in <a href="apiclient.http.HttpRequest-class.html">HttpRequest</a>)</span></td>
<td width="33%" class="link-index"> </td>
</tr>
</table>
@@ -495,53 +487,61 @@
<span class="index-where">(in <a href="oauth2client-module.html">oauth2client</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.multistore_file-module.html#get_credential_storage_custom_string_key">get_credential_storage_custom_string_key()</a><br />
<span class="index-where">(in <a href="oauth2client.multistore_file-module.html">oauth2client.multistore_file</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.http.MediaIoBaseUpload-class.html#getbytes">getbytes()</a><br />
-<span class="index-where">(in <a href="apiclient.http.MediaIoBaseUpload-class.html">MediaIoBaseUpload</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.appengine.FlowProperty-class.html#get_value_for_datastore">get_value_for_datastore()</a><br />
+<span class="index-where">(in <a href="oauth2client.appengine.FlowProperty-class.html">FlowProperty</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="oauth2client.xsrfutil-module.html#generate_token">generate_token()</a><br />
<span class="index-where">(in <a href="oauth2client.xsrfutil-module.html">oauth2client.xsrfutil</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.appengine.OAuth2Decorator-class.html#get_credentials">get_credentials()</a><br />
+<span class="index-where">(in <a href="oauth2client.appengine.OAuth2Decorator-class.html">OAuth2Decorator</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.http.MediaIoBaseUpload-class.html#getbytes">getbytes()</a><br />
+<span class="index-where">(in <a href="apiclient.http.MediaIoBaseUpload-class.html">MediaIoBaseUpload</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="apiclient.schema.Schemas-class.html#get">get()</a><br />
+<span class="index-where">(in <a href="apiclient.schema.Schemas-class.html">Schemas</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.django_orm.CredentialsField-class.html#get_db_prep_value">get_db_prep_value()</a><br />
<span class="index-where">(in <a href="oauth2client.django_orm.CredentialsField-class.html">CredentialsField</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.http.MediaUpload-class.html#getbytes">getbytes()</a><br />
<span class="index-where">(in <a href="apiclient.http.MediaUpload-class.html">MediaUpload</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="apiclient.schema.Schemas-class.html#get">get()</a><br />
-<span class="index-where">(in <a href="apiclient.schema.Schemas-class.html">Schemas</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client.MemoryCache-class.html#get">get()</a><br />
+<span class="index-where">(in <a href="oauth2client.client.MemoryCache-class.html">MemoryCache</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.django_orm.FlowField-class.html#get_db_prep_value">get_db_prep_value()</a><br />
<span class="index-where">(in <a href="oauth2client.django_orm.FlowField-class.html">FlowField</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client-module.html#GOOGLE_AUTH_URI">GOOGLE_AUTH_URI</a><br />
<span class="index-where">(in <a href="oauth2client-module.html">oauth2client</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="oauth2client.client.MemoryCache-class.html#get">get()</a><br />
-<span class="index-where">(in <a href="oauth2client.client.MemoryCache-class.html">MemoryCache</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.django_orm.CredentialsField-class.html#get_internal_type">get_internal_type()</a><br />
-<span class="index-where">(in <a href="oauth2client.django_orm.CredentialsField-class.html">CredentialsField</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client.Storage-class.html#get">get()</a><br />
+<span class="index-where">(in <a href="oauth2client.client.Storage-class.html">Storage</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.appengine.OAuth2Decorator-class.html#get_flow">get_flow()</a><br />
+<span class="index-where">(in <a href="oauth2client.appengine.OAuth2Decorator-class.html">OAuth2Decorator</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client-module.html#GOOGLE_REVOKE_URI">GOOGLE_REVOKE_URI</a><br />
<span class="index-where">(in <a href="oauth2client-module.html">oauth2client</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="oauth2client.client.Storage-class.html#get">get()</a><br />
-<span class="index-where">(in <a href="oauth2client.client.Storage-class.html">Storage</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.django_orm.FlowField-class.html#get_internal_type">get_internal_type()</a><br />
-<span class="index-where">(in <a href="oauth2client.django_orm.FlowField-class.html">FlowField</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.multistore_file-module.html#get_all_credential_keys">get_all_credential_keys()</a><br />
+<span class="index-where">(in <a href="oauth2client.multistore_file-module.html">oauth2client.multistore_file</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.django_orm.CredentialsField-class.html#get_internal_type">get_internal_type()</a><br />
+<span class="index-where">(in <a href="oauth2client.django_orm.CredentialsField-class.html">CredentialsField</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client-module.html#GOOGLE_TOKEN_URI">GOOGLE_TOKEN_URI</a><br />
<span class="index-where">(in <a href="oauth2client-module.html">oauth2client</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="oauth2client.multistore_file-module.html#get_credential_storage">get_credential_storage()</a><br />
<span class="index-where">(in <a href="oauth2client.multistore_file-module.html">oauth2client.multistore_file</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.appengine.CredentialsProperty-class.html#get_value_for_datastore">get_value_for_datastore()</a><br />
-<span class="index-where">(in <a href="oauth2client.appengine.CredentialsProperty-class.html">CredentialsProperty</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.django_orm.FlowField-class.html#get_internal_type">get_internal_type()</a><br />
+<span class="index-where">(in <a href="oauth2client.django_orm.FlowField-class.html">FlowField</a>)</span></td>
<td width="33%" class="link-index"> </td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="oauth2client.multistore_file-module.html#get_credential_storage_custom_key">get_credential_storage_custom_key()</a><br />
<span class="index-where">(in <a href="oauth2client.multistore_file-module.html">oauth2client.multistore_file</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.appengine.FlowProperty-class.html#get_value_for_datastore">get_value_for_datastore()</a><br />
-<span class="index-where">(in <a href="oauth2client.appengine.FlowProperty-class.html">FlowProperty</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.appengine.CredentialsProperty-class.html#get_value_for_datastore">get_value_for_datastore()</a><br />
+<span class="index-where">(in <a href="oauth2client.appengine.CredentialsProperty-class.html">CredentialsProperty</a>)</span></td>
<td width="33%" class="link-index"> </td>
</tr>
</table>
@@ -552,21 +552,13 @@
<tr>
<td width="33%" class="link-index"><a href="oauth2client.appengine.OAuth2Decorator-class.html#has_credentials">has_credentials()</a><br />
<span class="index-where">(in <a href="oauth2client.appengine.OAuth2Decorator-class.html">OAuth2Decorator</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.push.Headers-class.html">Headers</a><br />
-<span class="index-where">(in <a href="apiclient.push-module.html">apiclient.push</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.http.HttpMock-class.html">HttpMock</a><br />
-<span class="index-where">(in <a href="apiclient.http-module.html">apiclient.http</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="oauth2client.client-module.html#HAS_CRYPTO">HAS_CRYPTO</a><br />
-<span class="index-where">(in <a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.http-module.html">http</a><br />
<span class="index-where">(in <a href="apiclient-module.html">apiclient</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.http.HttpMockSequence-class.html">HttpMockSequence</a><br />
<span class="index-where">(in <a href="apiclient.http-module.html">apiclient.http</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="oauth2client.client-module.html#HAS_OPENSSL">HAS_OPENSSL</a><br />
+<td width="33%" class="link-index"><a href="oauth2client.client-module.html#HAS_CRYPTO">HAS_CRYPTO</a><br />
<span class="index-where">(in <a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.appengine.OAuth2Decorator-class.html#http">http()</a><br />
<span class="index-where">(in <a href="oauth2client.appengine.OAuth2Decorator-class.html">OAuth2Decorator</a>)</span></td>
@@ -574,20 +566,27 @@
<span class="index-where">(in <a href="apiclient.http-module.html">apiclient.http</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="apiclient.http.MediaIoBaseUpload-class.html#has_stream">has_stream()</a><br />
-<span class="index-where">(in <a href="apiclient.http.MediaIoBaseUpload-class.html">MediaIoBaseUpload</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client-module.html#HAS_OPENSSL">HAS_OPENSSL</a><br />
+<span class="index-where">(in <a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.discovery-module.html#HTTP_PAYLOAD_METHODS">HTTP_PAYLOAD_METHODS</a><br />
<span class="index-where">(in <a href="apiclient.discovery-module.html">apiclient.discovery</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.http.HttpRequestMock-class.html">HttpRequestMock</a><br />
<span class="index-where">(in <a href="apiclient.http-module.html">apiclient.http</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="apiclient.http.MediaUpload-class.html#has_stream">has_stream()</a><br />
-<span class="index-where">(in <a href="apiclient.http.MediaUpload-class.html">MediaUpload</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.http.MediaIoBaseUpload-class.html#has_stream">has_stream()</a><br />
+<span class="index-where">(in <a href="apiclient.http.MediaIoBaseUpload-class.html">MediaIoBaseUpload</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.errors.HttpError-class.html">HttpError</a><br />
<span class="index-where">(in <a href="apiclient.errors-module.html">apiclient.errors</a>)</span></td>
<td width="33%" class="link-index"> </td>
</tr>
+<tr>
+<td width="33%" class="link-index"><a href="apiclient.http.MediaUpload-class.html#has_stream">has_stream()</a><br />
+<span class="index-where">(in <a href="apiclient.http.MediaUpload-class.html">MediaUpload</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.http.HttpMock-class.html">HttpMock</a><br />
+<span class="index-where">(in <a href="apiclient.http-module.html">apiclient.http</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
</table>
</td></tr>
<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="I">I</a></h2></td>
@@ -596,14 +595,22 @@
<tr>
<td width="33%" class="link-index"><a href="oauth2client.client-module.html#ID_TOKEN_VERIFICATON_CERTS">ID_TOKEN_VERIFICATON_CERTS</a><br />
<span class="index-where">(in <a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.appengine.InvalidClientSecretsError-class.html">InvalidClientSecretsError</a><br />
+<span class="index-where">(in <a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.appengine.InvalidXsrfTokenError-class.html">InvalidXsrfTokenError</a><br />
+<span class="index-where">(in <a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="apiclient.schema._SchemaToStruct-class.html#indent">indent()</a><br />
+<span class="index-where">(in <a href="apiclient.schema._SchemaToStruct-class.html" onclick="show_private();">_SchemaToStruct</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.clientsecrets.InvalidClientSecretsError-class.html">InvalidClientSecretsError</a><br />
<span class="index-where">(in <a href="oauth2client.clientsecrets-module.html">oauth2client.clientsecrets</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.locked_file.LockedFile-class.html#is_locked">is_locked()</a><br />
<span class="index-where">(in <a href="oauth2client.locked_file.LockedFile-class.html">LockedFile</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="apiclient.schema._SchemaToStruct-class.html#indent">indent()</a><br />
-<span class="index-where">(in <a href="apiclient.schema._SchemaToStruct-class.html" onclick="show_private();">_SchemaToStruct</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.sample_tools-module.html#init">init()</a><br />
+<span class="index-where">(in <a href="apiclient.sample_tools-module.html">apiclient.sample_tools</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.errors.InvalidJsonError-class.html">InvalidJsonError</a><br />
<span class="index-where">(in <a href="apiclient.errors-module.html">apiclient.errors</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.locked_file._Opener-class.html#is_locked">is_locked()</a><br />
@@ -612,16 +619,8 @@
<tr>
<td width="33%" class="link-index"><a href="apiclient.errors.InvalidChunkSizeError-class.html">InvalidChunkSizeError</a><br />
<span class="index-where">(in <a href="apiclient.errors-module.html">apiclient.errors</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.push.InvalidSubscriptionRequestError-class.html">InvalidSubscriptionRequestError</a><br />
-<span class="index-where">(in <a href="apiclient.push-module.html">apiclient.push</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.push.Headers-class.html#items">items()</a><br />
-<span class="index-where">(in <a href="apiclient.push.Headers-class.html">Headers</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="oauth2client.appengine.InvalidClientSecretsError-class.html">InvalidClientSecretsError</a><br />
-<span class="index-where">(in <a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.appengine.InvalidXsrfTokenError-class.html">InvalidXsrfTokenError</a><br />
-<span class="index-where">(in <a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.errors.InvalidNotificationError-class.html">InvalidNotificationError</a><br />
+<span class="index-where">(in <a href="apiclient.errors-module.html">apiclient.errors</a>)</span></td>
<td width="33%" class="link-index"> </td>
</tr>
</table>
@@ -751,63 +750,64 @@
<span class="index-where">(in <a href="oauth2client.crypt-module.html">oauth2client.crypt</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.http.MediaFileUpload-class.html">MediaFileUpload</a><br />
<span class="index-where">(in <a href="apiclient.http-module.html">apiclient.http</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.gce-module.html#META">META</a><br />
-<span class="index-where">(in <a href="oauth2client.gce-module.html">oauth2client.gce</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.tools-module.html#message_if_missing">message_if_missing()</a><br />
+<span class="index-where">(in <a href="oauth2client.tools-module.html">oauth2client.tools</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="oauth2client.appengine.CredentialsProperty-class.html#make_value_from_datastore">make_value_from_datastore()</a><br />
<span class="index-where">(in <a href="oauth2client.appengine.CredentialsProperty-class.html">CredentialsProperty</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.http.MediaInMemoryUpload-class.html">MediaInMemoryUpload</a><br />
<span class="index-where">(in <a href="apiclient.http-module.html">apiclient.http</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.mimeparse-module.html">mimeparse</a><br />
-<span class="index-where">(in <a href="apiclient-module.html">apiclient</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.gce-module.html#META">META</a><br />
+<span class="index-where">(in <a href="oauth2client.gce-module.html">oauth2client.gce</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="oauth2client.appengine.FlowProperty-class.html#make_value_from_datastore">make_value_from_datastore()</a><br />
<span class="index-where">(in <a href="oauth2client.appengine.FlowProperty-class.html">FlowProperty</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.http.MediaIoBaseDownload-class.html">MediaIoBaseDownload</a><br />
<span class="index-where">(in <a href="apiclient.http-module.html">apiclient.http</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.http.MediaIoBaseUpload-class.html#mimetype">mimetype()</a><br />
-<span class="index-where">(in <a href="apiclient.http.MediaIoBaseUpload-class.html">MediaIoBaseUpload</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.mimeparse-module.html">mimeparse</a><br />
+<span class="index-where">(in <a href="apiclient-module.html">apiclient</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="apiclient.model-module.html#makepatch">makepatch()</a><br />
<span class="index-where">(in <a href="apiclient.model-module.html">apiclient.model</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.http.MediaIoBaseUpload-class.html">MediaIoBaseUpload</a><br />
<span class="index-where">(in <a href="apiclient.http-module.html">apiclient.http</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.http.MediaUpload-class.html#mimetype">mimetype()</a><br />
-<span class="index-where">(in <a href="apiclient.http.MediaUpload-class.html">MediaUpload</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.http.MediaIoBaseUpload-class.html#mimetype">mimetype()</a><br />
+<span class="index-where">(in <a href="apiclient.http.MediaIoBaseUpload-class.html">MediaIoBaseUpload</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="oauth2client.client.SignedJwtAssertionCredentials-class.html#MAX_TOKEN_LIFETIME_SECS">MAX_TOKEN_LIFETIME_SECS</a><br />
<span class="index-where">(in <a href="oauth2client.client.SignedJwtAssertionCredentials-class.html">SignedJwtAssertionCredentials</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.model.MediaModel-class.html">MediaModel</a><br />
<span class="index-where">(in <a href="apiclient.model-module.html">apiclient.model</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.model-module.html">model</a><br />
-<span class="index-where">(in <a href="apiclient-module.html">apiclient</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.http.MediaUpload-class.html#mimetype">mimetype()</a><br />
+<span class="index-where">(in <a href="apiclient.http.MediaUpload-class.html">MediaUpload</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="oauth2client.crypt-module.html#MAX_TOKEN_LIFETIME_SECS">MAX_TOKEN_LIFETIME_SECS</a><br />
<span class="index-where">(in <a href="oauth2client.crypt-module.html">oauth2client.crypt</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.http.MediaUpload-class.html">MediaUpload</a><br />
<span class="index-where">(in <a href="apiclient.http-module.html">apiclient.http</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.model.Model-class.html">Model</a><br />
-<span class="index-where">(in <a href="apiclient.model-module.html">apiclient.model</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.model-module.html">model</a><br />
+<span class="index-where">(in <a href="apiclient-module.html">apiclient</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="apiclient.http-module.html#MAX_URI_LENGTH">MAX_URI_LENGTH</a><br />
<span class="index-where">(in <a href="apiclient.http-module.html">apiclient.http</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.http.MediaUploadProgress-class.html">MediaUploadProgress</a><br />
<span class="index-where">(in <a href="apiclient.http-module.html">apiclient.http</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.multistore_file-module.html">multistore_file</a><br />
-<span class="index-where">(in <a href="oauth2client-module.html">oauth2client</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.model.Model-class.html">Model</a><br />
+<span class="index-where">(in <a href="apiclient.model-module.html">apiclient.model</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="apiclient.discovery-module.html#MEDIA_BODY_PARAMETER_DEFAULT_VALUE">MEDIA_BODY_PARAMETER_DEFAULT_VALUE</a><br />
<span class="index-where">(in <a href="apiclient.discovery-module.html">apiclient.discovery</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.errors.MediaUploadSizeError-class.html">MediaUploadSizeError</a><br />
<span class="index-where">(in <a href="apiclient.errors-module.html">apiclient.errors</a>)</span></td>
-<td width="33%" class="link-index"> </td>
+<td width="33%" class="link-index"><a href="oauth2client.multistore_file-module.html">multistore_file</a><br />
+<span class="index-where">(in <a href="oauth2client-module.html">oauth2client</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="apiclient.http.MediaDownloadProgress-class.html">MediaDownloadProgress</a><br />
@@ -824,40 +824,47 @@
<tr>
<td width="33%" class="link-index"><a href="oauth2client.appengine-module.html#ndb">ndb</a><br />
<span class="index-where">(in <a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.http.HttpRequest-class.html#next_chunk">next_chunk()</a><br />
-<span class="index-where">(in <a href="apiclient.http.HttpRequest-class.html">HttpRequest</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.model.ProtocolBufferModel-class.html#no_content_response">no_content_response()</a><br />
-<span class="index-where">(in <a href="apiclient.model.ProtocolBufferModel-class.html">ProtocolBufferModel</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="apiclient.http.MediaUpload-class.html#new_from_json">new_from_json()</a><br />
-<span class="index-where">(in <a href="apiclient.http.MediaUpload-class.html">MediaUpload</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.http.MediaIoBaseDownload-class.html#next_chunk">next_chunk()</a><br />
<span class="index-where">(in <a href="apiclient.http.MediaIoBaseDownload-class.html">MediaIoBaseDownload</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.model.RawModel-class.html#no_content_response">no_content_response()</a><br />
-<span class="index-where">(in <a href="apiclient.model.RawModel-class.html">RawModel</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="oauth2client.client.Credentials-class.html#new_from_json">new_from_json()</a><br />
-<span class="index-where">(in <a href="oauth2client.client.Credentials-class.html">Credentials</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.model.BaseModel-class.html#no_content_response">no_content_response</a><br />
-<span class="index-where">(in <a href="apiclient.model.BaseModel-class.html">BaseModel</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.client.Credentials-class.html#NON_SERIALIZED_MEMBERS">NON_SERIALIZED_MEMBERS</a><br />
<span class="index-where">(in <a href="oauth2client.client.Credentials-class.html">Credentials</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="apiclient.push-module.html#new_token">new_token()</a><br />
-<span class="index-where">(in <a href="apiclient.push-module.html">apiclient.push</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.model.JsonModel-class.html#no_content_response">no_content_response()</a><br />
-<span class="index-where">(in <a href="apiclient.model.JsonModel-class.html">JsonModel</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.http.MediaUpload-class.html#new_from_json">new_from_json()</a><br />
+<span class="index-where">(in <a href="apiclient.http.MediaUpload-class.html">MediaUpload</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.model.BaseModel-class.html#no_content_response">no_content_response</a><br />
+<span class="index-where">(in <a href="apiclient.model.BaseModel-class.html">BaseModel</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.client.NonAsciiHeaderError-class.html">NonAsciiHeaderError</a><br />
<span class="index-where">(in <a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="oauth2client.multistore_file.NewerCredentialStoreError-class.html">NewerCredentialStoreError</a><br />
-<span class="index-where">(in <a href="oauth2client.multistore_file-module.html">oauth2client.multistore_file</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client.Credentials-class.html#new_from_json">new_from_json()</a><br />
+<span class="index-where">(in <a href="oauth2client.client.Credentials-class.html">Credentials</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.model.JsonModel-class.html#no_content_response">no_content_response()</a><br />
+<span class="index-where">(in <a href="apiclient.model.JsonModel-class.html">JsonModel</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.channel.Notification-class.html">Notification</a><br />
+<span class="index-where">(in <a href="apiclient.channel-module.html">apiclient.channel</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="apiclient.channel-module.html#new_webhook_channel">new_webhook_channel()</a><br />
+<span class="index-where">(in <a href="apiclient.channel-module.html">apiclient.channel</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.model.MediaModel-class.html#no_content_response">no_content_response()</a><br />
<span class="index-where">(in <a href="apiclient.model.MediaModel-class.html">MediaModel</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.channel-module.html#notification_from_headers">notification_from_headers()</a><br />
+<span class="index-where">(in <a href="apiclient.channel-module.html">apiclient.channel</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="oauth2client.multistore_file.NewerCredentialStoreError-class.html">NewerCredentialStoreError</a><br />
+<span class="index-where">(in <a href="oauth2client.multistore_file-module.html">oauth2client.multistore_file</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.model.ProtocolBufferModel-class.html#no_content_response">no_content_response()</a><br />
+<span class="index-where">(in <a href="apiclient.model.ProtocolBufferModel-class.html">ProtocolBufferModel</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="apiclient.http.HttpRequest-class.html#next_chunk">next_chunk()</a><br />
+<span class="index-where">(in <a href="apiclient.http.HttpRequest-class.html">HttpRequest</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.model.RawModel-class.html#no_content_response">no_content_response()</a><br />
+<span class="index-where">(in <a href="apiclient.model.RawModel-class.html">RawModel</a>)</span></td>
<td width="33%" class="link-index"> </td>
</tr>
</table>
@@ -867,42 +874,48 @@
<table class="link-index" width="100%" border="1">
<tr>
<td width="33%" class="link-index"><a href="oauth2client-module.html">oauth2client</a></td>
-<td width="33%" class="link-index"><a href="oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html">OAuth2DecoratorFromClientSecrets</a><br />
-<span class="index-where">(in <a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.locked_file.LockedFile-class.html#open_and_lock">open_and_lock()</a><br />
-<span class="index-where">(in <a href="oauth2client.locked_file.LockedFile-class.html">LockedFile</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="oauth2client.appengine-module.html#OAUTH2CLIENT_NAMESPACE">OAUTH2CLIENT_NAMESPACE</a><br />
-<span class="index-where">(in <a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.client.OAuth2WebServerFlow-class.html">OAuth2WebServerFlow</a><br />
<span class="index-where">(in <a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.locked_file._Opener-class.html#open_and_lock">open_and_lock()</a><br />
<span class="index-where">(in <a href="oauth2client.locked_file._Opener-class.html" onclick="show_private();">_Opener</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="oauth2client.client.OAuth2Credentials-class.html">OAuth2Credentials</a><br />
-<span class="index-where">(in <a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.appengine-module.html#OAUTH2CLIENT_NAMESPACE">OAUTH2CLIENT_NAMESPACE</a><br />
+<span class="index-where">(in <a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.appengine.OAuth2Decorator-class.html#oauth_aware">oauth_aware()</a><br />
<span class="index-where">(in <a href="oauth2client.appengine.OAuth2Decorator-class.html">OAuth2Decorator</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.locked_file._PosixOpener-class.html#open_and_lock">open_and_lock()</a><br />
<span class="index-where">(in <a href="oauth2client.locked_file._PosixOpener-class.html" onclick="show_private();">_PosixOpener</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="oauth2client.appengine.OAuth2Decorator-class.html">OAuth2Decorator</a><br />
-<span class="index-where">(in <a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client.OAuth2Credentials-class.html">OAuth2Credentials</a><br />
+<span class="index-where">(in <a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.appengine.OAuth2Decorator-class.html#oauth_required">oauth_required()</a><br />
<span class="index-where">(in <a href="oauth2client.appengine.OAuth2Decorator-class.html">OAuth2Decorator</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.crypt-module.html#OpenSSLSigner">OpenSSLSigner</a><br />
<span class="index-where">(in <a href="oauth2client.crypt-module.html">oauth2client.crypt</a>)</span></td>
</tr>
<tr>
+<td width="33%" class="link-index"><a href="oauth2client.appengine.OAuth2Decorator-class.html">OAuth2Decorator</a><br />
+<span class="index-where">(in <a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.old_run-module.html">old_run</a><br />
+<span class="index-where">(in <a href="oauth2client-module.html">oauth2client</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.crypt-module.html#OpenSSLVerifier">OpenSSLVerifier</a><br />
+<span class="index-where">(in <a href="oauth2client.crypt-module.html">oauth2client.crypt</a>)</span></td>
+</tr>
+<tr>
<td width="33%" class="link-index"><a href="oauth2client.appengine-module.html#oauth2decorator_from_clientsecrets">oauth2decorator_from_clientsecrets()</a><br />
<span class="index-where">(in <a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.client-module.html#OOB_CALLBACK_URN">OOB_CALLBACK_URN</a><br />
<span class="index-where">(in <a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.crypt-module.html#OpenSSLVerifier">OpenSSLVerifier</a><br />
-<span class="index-where">(in <a href="oauth2client.crypt-module.html">oauth2client.crypt</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html">OAuth2DecoratorFromClientSecrets</a><br />
+<span class="index-where">(in <a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.locked_file.LockedFile-class.html#open_and_lock">open_and_lock()</a><br />
+<span class="index-where">(in <a href="oauth2client.locked_file.LockedFile-class.html">LockedFile</a>)</span></td>
+<td width="33%" class="link-index"> </td>
</tr>
</table>
</td></tr>
@@ -912,38 +925,47 @@
<tr>
<td width="33%" class="link-index"><a href="apiclient.mimeparse-module.html#parse_media_range">parse_media_range()</a><br />
<span class="index-where">(in <a href="apiclient.mimeparse-module.html">apiclient.mimeparse</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.http.MediaDownloadProgress-class.html#progress">progress()</a><br />
-<span class="index-where">(in <a href="apiclient.http.MediaDownloadProgress-class.html">MediaDownloadProgress</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.client.Storage-class.html#put">put()</a><br />
-<span class="index-where">(in <a href="oauth2client.client.Storage-class.html">Storage</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.util-module.html#POSITIONAL_SET">POSITIONAL_SET</a><br />
+<span class="index-where">(in <a href="oauth2client.util-module.html">oauth2client.util</a>)</span></td>
+<td width="33%" class="link-index"><a href="google.appengine.ext.db.PropertiedClass-class.html">PropertiedClass</a></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="apiclient.mimeparse-module.html#parse_mime_type">parse_mime_type()</a><br />
<span class="index-where">(in <a href="apiclient.mimeparse-module.html">apiclient.mimeparse</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.http.MediaUploadProgress-class.html#progress">progress()</a><br />
-<span class="index-where">(in <a href="apiclient.http.MediaUploadProgress-class.html">MediaUploadProgress</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.crypt-module.html#PyCryptoSigner">PyCryptoSigner</a><br />
-<span class="index-where">(in <a href="oauth2client.crypt-module.html">oauth2client.crypt</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.util-module.html#POSITIONAL_WARNING">POSITIONAL_WARNING</a><br />
+<span class="index-where">(in <a href="oauth2client.util-module.html">oauth2client.util</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.model.ProtocolBufferModel-class.html">ProtocolBufferModel</a><br />
+<span class="index-where">(in <a href="apiclient.model-module.html">apiclient.model</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="oauth2client.util-module.html#positional">positional()</a><br />
<span class="index-where">(in <a href="oauth2client.util-module.html">oauth2client.util</a>)</span></td>
-<td width="33%" class="link-index"><a href="google.appengine.ext.db.PropertiedClass-class.html">PropertiedClass</a></td>
+<td width="33%" class="link-index"><a href="apiclient.schema.Schemas-class.html#prettyPrintByName">prettyPrintByName()</a><br />
+<span class="index-where">(in <a href="apiclient.schema.Schemas-class.html">Schemas</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client.Storage-class.html#put">put()</a><br />
+<span class="index-where">(in <a href="oauth2client.client.Storage-class.html">Storage</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="oauth2client.util-module.html#POSITIONAL_EXCEPTION">POSITIONAL_EXCEPTION</a><br />
+<span class="index-where">(in <a href="oauth2client.util-module.html">oauth2client.util</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.schema.Schemas-class.html#prettyPrintSchema">prettyPrintSchema()</a><br />
+<span class="index-where">(in <a href="apiclient.schema.Schemas-class.html">Schemas</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.crypt-module.html#PyCryptoSigner">PyCryptoSigner</a><br />
+<span class="index-where">(in <a href="oauth2client.crypt-module.html">oauth2client.crypt</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="oauth2client.util-module.html#POSITIONAL_IGNORE">POSITIONAL_IGNORE</a><br />
+<span class="index-where">(in <a href="oauth2client.util-module.html">oauth2client.util</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.http.MediaDownloadProgress-class.html#progress">progress()</a><br />
+<span class="index-where">(in <a href="apiclient.http.MediaDownloadProgress-class.html">MediaDownloadProgress</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.crypt-module.html#PyCryptoVerifier">PyCryptoVerifier</a><br />
<span class="index-where">(in <a href="oauth2client.crypt-module.html">oauth2client.crypt</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="apiclient.schema.Schemas-class.html#prettyPrintByName">prettyPrintByName()</a><br />
-<span class="index-where">(in <a href="apiclient.schema.Schemas-class.html">Schemas</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.model.ProtocolBufferModel-class.html">ProtocolBufferModel</a><br />
-<span class="index-where">(in <a href="apiclient.model-module.html">apiclient.model</a>)</span></td>
-<td width="33%" class="link-index"> </td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="apiclient.schema.Schemas-class.html#prettyPrintSchema">prettyPrintSchema()</a><br />
-<span class="index-where">(in <a href="apiclient.schema.Schemas-class.html">Schemas</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.push-module.html">push</a><br />
-<span class="index-where">(in <a href="apiclient-module.html">apiclient</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.util-module.html#positional_parameters_enforcement">positional_parameters_enforcement</a><br />
+<span class="index-where">(in <a href="oauth2client.util-module.html">oauth2client.util</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.http.MediaUploadProgress-class.html#progress">progress()</a><br />
+<span class="index-where">(in <a href="apiclient.http.MediaUploadProgress-class.html">MediaUploadProgress</a>)</span></td>
<td width="33%" class="link-index"> </td>
</tr>
</table>
@@ -968,22 +990,14 @@
<tr>
<td width="33%" class="link-index"><a href="apiclient.model.RawModel-class.html">RawModel</a><br />
<span class="index-where">(in <a href="apiclient.model-module.html">apiclient.model</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore._Storage-class.html#release_lock">release_lock()</a><br />
-<span class="index-where">(in <a href="oauth2client.multistore_file._MultiStore._Storage-class.html" onclick="show_private();">_Storage</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.model.BaseModel-class.html#response">response()</a><br />
-<span class="index-where">(in <a href="apiclient.model.BaseModel-class.html">BaseModel</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="apiclient.http._StreamSlice-class.html#read">read()</a><br />
-<span class="index-where">(in <a href="apiclient.http._StreamSlice-class.html" onclick="show_private();">_StreamSlice</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.http.HttpMock-class.html#request">request()</a><br />
<span class="index-where">(in <a href="apiclient.http.HttpMock-class.html">HttpMock</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.model.Model-class.html#response">response()</a><br />
<span class="index-where">(in <a href="apiclient.model.Model-class.html">Model</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="apiclient.push.Headers-class.html#read">read()</a><br />
-<span class="index-where">(in <a href="apiclient.push.Headers-class.html">Headers</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.http._StreamSlice-class.html#read">read()</a><br />
+<span class="index-where">(in <a href="apiclient.http._StreamSlice-class.html" onclick="show_private();">_StreamSlice</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.http.HttpMockSequence-class.html#request">request()</a><br />
<span class="index-where">(in <a href="apiclient.http.HttpMockSequence-class.html">HttpMockSequence</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.http.MediaIoBaseUpload-class.html#resumable">resumable()</a><br />
@@ -1026,15 +1040,24 @@
<span class="index-where">(in <a href="oauth2client.file.Storage-class.html">Storage</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.discovery.Resource-class.html">Resource</a><br />
<span class="index-where">(in <a href="apiclient.discovery-module.html">apiclient.discovery</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.tools-module.html#run">run()</a><br />
-<span class="index-where">(in <a href="oauth2client.tools-module.html">oauth2client.tools</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.old_run-module.html#run">run()</a><br />
+<span class="index-where">(in <a href="oauth2client.old_run-module.html">oauth2client.old_run</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="oauth2client.keyring_storage.Storage-class.html#release_lock">release_lock()</a><br />
<span class="index-where">(in <a href="oauth2client.keyring_storage.Storage-class.html">Storage</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.discovery.ResourceMethodParameters-class.html">ResourceMethodParameters</a><br />
<span class="index-where">(in <a href="apiclient.discovery-module.html">apiclient.discovery</a>)</span></td>
-<td width="33%" class="link-index"> </td>
+<td width="33%" class="link-index"><a href="oauth2client.tools-module.html#run">run()</a><br />
+<span class="index-where">(in <a href="oauth2client.tools-module.html">oauth2client.tools</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore._Storage-class.html#release_lock">release_lock()</a><br />
+<span class="index-where">(in <a href="oauth2client.multistore_file._MultiStore._Storage-class.html" onclick="show_private();">_Storage</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.model.BaseModel-class.html#response">response()</a><br />
+<span class="index-where">(in <a href="apiclient.model.BaseModel-class.html">BaseModel</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.tools-module.html#run_flow">run_flow()</a><br />
+<span class="index-where">(in <a href="oauth2client.tools-module.html">oauth2client.tools</a>)</span></td>
</tr>
</table>
</td></tr>
@@ -1042,97 +1065,90 @@
<td valign="top">
<table class="link-index" width="100%" border="1">
<tr>
+<td width="33%" class="link-index"><a href="apiclient.sample_tools-module.html">sample_tools</a><br />
+<span class="index-where">(in <a href="apiclient-module.html">apiclient</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.appengine.OAuth2Decorator-class.html#set_flow">set_flow()</a><br />
+<span class="index-where">(in <a href="oauth2client.appengine.OAuth2Decorator-class.html">OAuth2Decorator</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.discovery-module.html#STACK_QUERY_PARAMETERS">STACK_QUERY_PARAMETERS</a><br />
+<span class="index-where">(in <a href="apiclient.discovery-module.html">apiclient.discovery</a>)</span></td>
+</tr>
+<tr>
<td width="33%" class="link-index"><a href="apiclient.schema-module.html">schema</a><br />
<span class="index-where">(in <a href="apiclient-module.html">apiclient</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.client.SignedJwtAssertionCredentials-class.html">SignedJwtAssertionCredentials</a><br />
-<span class="index-where">(in <a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.file.Storage-class.html">Storage</a><br />
-<span class="index-where">(in <a href="oauth2client.file-module.html">oauth2client.file</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.discovery.ResourceMethodParameters-class.html#set_parameters">set_parameters()</a><br />
+<span class="index-where">(in <a href="apiclient.discovery.ResourceMethodParameters-class.html" onclick="show_private();">ResourceMethodParameters</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client.OAuth2WebServerFlow-class.html#step1_get_authorize_url">step1_get_authorize_url()</a><br />
+<span class="index-where">(in <a href="oauth2client.client.OAuth2WebServerFlow-class.html">OAuth2WebServerFlow</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="apiclient.schema.Schemas-class.html">Schemas</a><br />
<span class="index-where">(in <a href="apiclient.schema-module.html">apiclient.schema</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.crypt-module.html#Signer">Signer</a><br />
-<span class="index-where">(in <a href="oauth2client.crypt-module.html">oauth2client.crypt</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.keyring_storage.Storage-class.html">Storage</a><br />
-<span class="index-where">(in <a href="oauth2client.keyring_storage-module.html">oauth2client.keyring_storage</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client.OAuth2Credentials-class.html#set_store">set_store()</a><br />
+<span class="index-where">(in <a href="oauth2client.client.OAuth2Credentials-class.html">OAuth2Credentials</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client.OAuth2WebServerFlow-class.html#step2_exchange">step2_exchange()</a><br />
+<span class="index-where">(in <a href="oauth2client.client.OAuth2WebServerFlow-class.html">OAuth2WebServerFlow</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="oauth2client.util-module.html#scopes_to_string">scopes_to_string()</a><br />
<span class="index-where">(in <a href="oauth2client.util-module.html">oauth2client.util</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.http-module.html#set_user_agent">set_user_agent()</a><br />
+<span class="index-where">(in <a href="apiclient.http-module.html">apiclient.http</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client.Storage-class.html">Storage</a><br />
+<span class="index-where">(in <a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="oauth2client.appengine.SiteXsrfSecretKey-class.html#secret">secret</a><br />
+<span class="index-where">(in <a href="oauth2client.appengine.SiteXsrfSecretKey-class.html">SiteXsrfSecretKey</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client.SignedJwtAssertionCredentials-class.html">SignedJwtAssertionCredentials</a><br />
+<span class="index-where">(in <a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.django_orm.Storage-class.html">Storage</a><br />
+<span class="index-where">(in <a href="oauth2client.django_orm-module.html">oauth2client.django_orm</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="oauth2client.appengine.SiteXsrfSecretKeyNDB-class.html#secret">secret</a><br />
+<span class="index-where">(in <a href="oauth2client.appengine.SiteXsrfSecretKeyNDB-class.html">SiteXsrfSecretKeyNDB</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.crypt-module.html#Signer">Signer</a><br />
+<span class="index-where">(in <a href="oauth2client.crypt-module.html">oauth2client.crypt</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.file.Storage-class.html">Storage</a><br />
+<span class="index-where">(in <a href="oauth2client.file-module.html">oauth2client.file</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="apiclient.model.BaseModel-class.html#serialize">serialize()</a><br />
+<span class="index-where">(in <a href="apiclient.model.BaseModel-class.html">BaseModel</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.appengine.SiteXsrfSecretKey-class.html">SiteXsrfSecretKey</a><br />
<span class="index-where">(in <a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.keyring_storage.Storage-class.html">Storage</a><br />
+<span class="index-where">(in <a href="oauth2client.keyring_storage-module.html">oauth2client.keyring_storage</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="apiclient.model.JsonModel-class.html#serialize">serialize()</a><br />
+<span class="index-where">(in <a href="apiclient.model.JsonModel-class.html">JsonModel</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.appengine.SiteXsrfSecretKeyNDB-class.html">SiteXsrfSecretKeyNDB</a><br />
+<span class="index-where">(in <a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.appengine.StorageByKeyName-class.html">StorageByKeyName</a><br />
<span class="index-where">(in <a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="oauth2client.appengine.SiteXsrfSecretKey-class.html#secret">secret</a><br />
-<span class="index-where">(in <a href="oauth2client.appengine.SiteXsrfSecretKey-class.html">SiteXsrfSecretKey</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.appengine.SiteXsrfSecretKeyNDB-class.html">SiteXsrfSecretKeyNDB</a><br />
-<span class="index-where">(in <a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.model.ProtocolBufferModel-class.html#serialize">serialize()</a><br />
+<span class="index-where">(in <a href="apiclient.model.ProtocolBufferModel-class.html">ProtocolBufferModel</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.http.MediaIoBaseUpload-class.html#size">size()</a><br />
+<span class="index-where">(in <a href="apiclient.http.MediaIoBaseUpload-class.html">MediaIoBaseUpload</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.http.MediaIoBaseUpload-class.html#stream">stream()</a><br />
<span class="index-where">(in <a href="apiclient.http.MediaIoBaseUpload-class.html">MediaIoBaseUpload</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="oauth2client.appengine.SiteXsrfSecretKeyNDB-class.html#secret">secret</a><br />
-<span class="index-where">(in <a href="oauth2client.appengine.SiteXsrfSecretKeyNDB-class.html">SiteXsrfSecretKeyNDB</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.http.MediaIoBaseUpload-class.html#size">size()</a><br />
-<span class="index-where">(in <a href="apiclient.http.MediaIoBaseUpload-class.html">MediaIoBaseUpload</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client.MemoryCache-class.html#set">set()</a><br />
+<span class="index-where">(in <a href="oauth2client.client.MemoryCache-class.html">MemoryCache</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.http.MediaUpload-class.html#size">size()</a><br />
+<span class="index-where">(in <a href="apiclient.http.MediaUpload-class.html">MediaUpload</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.http.MediaUpload-class.html#stream">stream()</a><br />
<span class="index-where">(in <a href="apiclient.http.MediaUpload-class.html">MediaUpload</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="apiclient.model.BaseModel-class.html#serialize">serialize()</a><br />
-<span class="index-where">(in <a href="apiclient.model.BaseModel-class.html">BaseModel</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.http.MediaUpload-class.html#size">size()</a><br />
-<span class="index-where">(in <a href="apiclient.http.MediaUpload-class.html">MediaUpload</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.push-module.html#SUBSCRIBE">SUBSCRIBE</a><br />
-<span class="index-where">(in <a href="apiclient.push-module.html">apiclient.push</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="apiclient.model.JsonModel-class.html#serialize">serialize()</a><br />
-<span class="index-where">(in <a href="apiclient.model.JsonModel-class.html">JsonModel</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.appengine.OAuth2Decorator-class.html#set_credentials">set_credentials()</a><br />
+<span class="index-where">(in <a href="oauth2client.appengine.OAuth2Decorator-class.html">OAuth2Decorator</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.discovery-module.html#STACK_QUERY_PARAMETER_DEFAULT_VALUE">STACK_QUERY_PARAMETER_DEFAULT_VALUE</a><br />
<span class="index-where">(in <a href="apiclient.discovery-module.html">apiclient.discovery</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.push.Subscription-class.html#subscribe">subscribe()</a><br />
-<span class="index-where">(in <a href="apiclient.push.Subscription-class.html">Subscription</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="apiclient.model.ProtocolBufferModel-class.html#serialize">serialize()</a><br />
-<span class="index-where">(in <a href="apiclient.model.ProtocolBufferModel-class.html">ProtocolBufferModel</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.discovery-module.html#STACK_QUERY_PARAMETERS">STACK_QUERY_PARAMETERS</a><br />
-<span class="index-where">(in <a href="apiclient.discovery-module.html">apiclient.discovery</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.push.Subscription-class.html">Subscription</a><br />
-<span class="index-where">(in <a href="apiclient.push-module.html">apiclient.push</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="oauth2client.client.MemoryCache-class.html#set">set()</a><br />
-<span class="index-where">(in <a href="oauth2client.client.MemoryCache-class.html">MemoryCache</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.client.OAuth2WebServerFlow-class.html#step1_get_authorize_url">step1_get_authorize_url()</a><br />
-<span class="index-where">(in <a href="oauth2client.client.OAuth2WebServerFlow-class.html">OAuth2WebServerFlow</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.push-module.html#SUBSCRIPTION_ID">SUBSCRIPTION_ID</a><br />
-<span class="index-where">(in <a href="apiclient.push-module.html">apiclient.push</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="apiclient.discovery.ResourceMethodParameters-class.html#set_parameters">set_parameters()</a><br />
-<span class="index-where">(in <a href="apiclient.discovery.ResourceMethodParameters-class.html" onclick="show_private();">ResourceMethodParameters</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.client.OAuth2WebServerFlow-class.html#step2_exchange">step2_exchange()</a><br />
-<span class="index-where">(in <a href="oauth2client.client.OAuth2WebServerFlow-class.html">OAuth2WebServerFlow</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.push.Subscription-class.html#subscription_id">subscription_id()</a><br />
-<span class="index-where">(in <a href="apiclient.push.Subscription-class.html">Subscription</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="oauth2client.client.OAuth2Credentials-class.html#set_store">set_store()</a><br />
-<span class="index-where">(in <a href="oauth2client.client.OAuth2Credentials-class.html">OAuth2Credentials</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.client.Storage-class.html">Storage</a><br />
-<span class="index-where">(in <a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
-<td width="33%" class="link-index"> </td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="apiclient.http-module.html#set_user_agent">set_user_agent()</a><br />
-<span class="index-where">(in <a href="apiclient.http-module.html">apiclient.http</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.django_orm.Storage-class.html">Storage</a><br />
-<span class="index-where">(in <a href="oauth2client.django_orm-module.html">oauth2client.django_orm</a>)</span></td>
<td width="33%" class="link-index"> </td>
</tr>
</table>
@@ -1143,51 +1159,42 @@
<tr>
<td width="33%" class="link-index"><a href="apiclient.http.HttpRequest-class.html#to_json">to_json()</a><br />
<span class="index-where">(in <a href="apiclient.http.HttpRequest-class.html">HttpRequest</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.django_orm.CredentialsField-class.html#to_python">to_python()</a><br />
-<span class="index-where">(in <a href="oauth2client.django_orm.CredentialsField-class.html">CredentialsField</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.push.Subscription-class.html#topic_id">topic_id()</a><br />
-<span class="index-where">(in <a href="apiclient.push.Subscription-class.html">Subscription</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client.OAuth2Credentials-class.html#to_json">to_json()</a><br />
+<span class="index-where">(in <a href="oauth2client.client.OAuth2Credentials-class.html">OAuth2Credentials</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.tools-module.html">tools</a><br />
+<span class="index-where">(in <a href="oauth2client-module.html">oauth2client</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="apiclient.http.MediaFileUpload-class.html#to_json">to_json()</a><br />
<span class="index-where">(in <a href="apiclient.http.MediaFileUpload-class.html">MediaFileUpload</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.django_orm.FlowField-class.html#to_python">to_python()</a><br />
-<span class="index-where">(in <a href="oauth2client.django_orm.FlowField-class.html">FlowField</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.push-module.html#TOPIC_URI">TOPIC_URI</a><br />
-<span class="index-where">(in <a href="apiclient.push-module.html">apiclient.push</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="apiclient.http.MediaIoBaseUpload-class.html#to_json">to_json()</a><br />
-<span class="index-where">(in <a href="apiclient.http.MediaIoBaseUpload-class.html">MediaIoBaseUpload</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.schema._SchemaToStruct-class.html#to_str">to_str()</a><br />
-<span class="index-where">(in <a href="apiclient.schema._SchemaToStruct-class.html" onclick="show_private();">_SchemaToStruct</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.push.Subscription-class.html#topic_uri">topic_uri()</a><br />
-<span class="index-where">(in <a href="apiclient.push.Subscription-class.html">Subscription</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="apiclient.http.MediaUpload-class.html#to_json">to_json()</a><br />
-<span class="index-where">(in <a href="apiclient.http.MediaUpload-class.html">MediaUpload</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.client.TokenRevokeError-class.html">TokenRevokeError</a><br />
-<span class="index-where">(in <a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.django_orm.CredentialsField-class.html#to_python">to_python()</a><br />
+<span class="index-where">(in <a href="oauth2client.django_orm.CredentialsField-class.html">CredentialsField</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.http-module.html#tunnel_patch">tunnel_patch()</a><br />
<span class="index-where">(in <a href="apiclient.http-module.html">apiclient.http</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="oauth2client.client.Credentials-class.html#to_json">to_json()</a><br />
-<span class="index-where">(in <a href="oauth2client.client.Credentials-class.html">Credentials</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.tools-module.html">tools</a><br />
-<span class="index-where">(in <a href="oauth2client-module.html">oauth2client</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.http.MediaIoBaseUpload-class.html#to_json">to_json()</a><br />
+<span class="index-where">(in <a href="apiclient.http.MediaIoBaseUpload-class.html">MediaIoBaseUpload</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.django_orm.FlowField-class.html#to_python">to_python()</a><br />
+<span class="index-where">(in <a href="oauth2client.django_orm.FlowField-class.html">FlowField</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.clientsecrets-module.html#TYPE_INSTALLED">TYPE_INSTALLED</a><br />
<span class="index-where">(in <a href="oauth2client.clientsecrets-module.html">oauth2client.clientsecrets</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="oauth2client.client.OAuth2Credentials-class.html#to_json">to_json()</a><br />
-<span class="index-where">(in <a href="oauth2client.client.OAuth2Credentials-class.html">OAuth2Credentials</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.push-module.html#TOPIC_ID">TOPIC_ID</a><br />
-<span class="index-where">(in <a href="apiclient.push-module.html">apiclient.push</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.http.MediaUpload-class.html#to_json">to_json()</a><br />
+<span class="index-where">(in <a href="apiclient.http.MediaUpload-class.html">MediaUpload</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.schema._SchemaToStruct-class.html#to_str">to_str()</a><br />
+<span class="index-where">(in <a href="apiclient.schema._SchemaToStruct-class.html" onclick="show_private();">_SchemaToStruct</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.clientsecrets-module.html#TYPE_WEB">TYPE_WEB</a><br />
<span class="index-where">(in <a href="oauth2client.clientsecrets-module.html">oauth2client.clientsecrets</a>)</span></td>
</tr>
+<tr>
+<td width="33%" class="link-index"><a href="oauth2client.client.Credentials-class.html#to_json">to_json()</a><br />
+<span class="index-where">(in <a href="oauth2client.client.Credentials-class.html">Credentials</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client.TokenRevokeError-class.html">TokenRevokeError</a><br />
+<span class="index-where">(in <a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
</table>
</td></tr>
<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="U">U</a></h2></td>
@@ -1206,32 +1213,31 @@
<span class="index-where">(in <a href="apiclient.schema._SchemaToStruct-class.html" onclick="show_private();">_SchemaToStruct</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.errors.UnknownFileType-class.html">UnknownFileType</a><br />
<span class="index-where">(in <a href="apiclient.errors-module.html">apiclient.errors</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.push-module.html#UNSUBSCRIBE">UNSUBSCRIBE</a><br />
-<span class="index-where">(in <a href="apiclient.push-module.html">apiclient.push</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.channel.Channel-class.html#update">update()</a><br />
+<span class="index-where">(in <a href="apiclient.channel.Channel-class.html">Channel</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="apiclient.errors.UnexpectedBodyError-class.html">UnexpectedBodyError</a><br />
<span class="index-where">(in <a href="apiclient.errors-module.html">apiclient.errors</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.errors.UnknownLinkType-class.html">UnknownLinkType</a><br />
<span class="index-where">(in <a href="apiclient.errors-module.html">apiclient.errors</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.push.Subscription-class.html#unsubscribe">unsubscribe()</a><br />
-<span class="index-where">(in <a href="apiclient.push.Subscription-class.html">Subscription</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.discovery-module.html#URITEMPLATE">URITEMPLATE</a><br />
+<span class="index-where">(in <a href="apiclient.discovery-module.html">apiclient.discovery</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="apiclient.errors.UnexpectedMethodError-class.html">UnexpectedMethodError</a><br />
<span class="index-where">(in <a href="apiclient.errors-module.html">apiclient.errors</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.locked_file.LockedFile-class.html#unlock_and_close">unlock_and_close()</a><br />
<span class="index-where">(in <a href="oauth2client.locked_file.LockedFile-class.html">LockedFile</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.discovery-module.html#URITEMPLATE">URITEMPLATE</a><br />
-<span class="index-where">(in <a href="apiclient.discovery-module.html">apiclient.discovery</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.util-module.html">util</a><br />
+<span class="index-where">(in <a href="oauth2client-module.html">oauth2client</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="apiclient.errors.UnknownApiNameOrVersion-class.html">UnknownApiNameOrVersion</a><br />
<span class="index-where">(in <a href="apiclient.errors-module.html">apiclient.errors</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.locked_file._Opener-class.html#unlock_and_close">unlock_and_close()</a><br />
<span class="index-where">(in <a href="oauth2client.locked_file._Opener-class.html" onclick="show_private();">_Opener</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.util-module.html">util</a><br />
-<span class="index-where">(in <a href="oauth2client-module.html">oauth2client</a>)</span></td>
+<td width="33%" class="link-index"> </td>
</tr>
</table>
</td></tr>
@@ -1243,60 +1249,59 @@
<span class="index-where">(in <a href="oauth2client.clientsecrets-module.html">oauth2client.clientsecrets</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.xsrfutil-module.html#validate_token">validate_token()</a><br />
<span class="index-where">(in <a href="oauth2client.xsrfutil-module.html">oauth2client.xsrfutil</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.client-module.html#verify_id_token">verify_id_token()</a><br />
-<span class="index-where">(in <a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.crypt-module.html#verify_signed_jwt_with_certs">verify_signed_jwt_with_certs()</a><br />
+<span class="index-where">(in <a href="oauth2client.crypt-module.html">oauth2client.crypt</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="oauth2client.appengine.CredentialsProperty-class.html#validate">validate()</a><br />
<span class="index-where">(in <a href="oauth2client.appengine.CredentialsProperty-class.html">CredentialsProperty</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.discovery-module.html#VARNAME">VARNAME</a><br />
<span class="index-where">(in <a href="apiclient.discovery-module.html">apiclient.discovery</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.crypt-module.html#verify_signed_jwt_with_certs">verify_signed_jwt_with_certs()</a><br />
-<span class="index-where">(in <a href="oauth2client.crypt-module.html">oauth2client.crypt</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client.VerifyJwtTokenError-class.html">VerifyJwtTokenError</a><br />
+<span class="index-where">(in <a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="oauth2client.appengine.FlowProperty-class.html#validate">validate()</a><br />
<span class="index-where">(in <a href="oauth2client.appengine.FlowProperty-class.html">FlowProperty</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.crypt-module.html#Verifier">Verifier</a><br />
<span class="index-where">(in <a href="oauth2client.crypt-module.html">oauth2client.crypt</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.client.VerifyJwtTokenError-class.html">VerifyJwtTokenError</a><br />
-<span class="index-where">(in <a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
+<td width="33%" class="link-index"> </td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="oauth2client.locked_file-module.html#validate_file">validate_file()</a><br />
<span class="index-where">(in <a href="oauth2client.locked_file-module.html">oauth2client.locked_file</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.push.Subscription-class.html#verify">verify()</a><br />
-<span class="index-where">(in <a href="apiclient.push.Subscription-class.html">Subscription</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client-module.html#verify_id_token">verify_id_token()</a><br />
+<span class="index-where">(in <a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
<td width="33%" class="link-index"> </td>
</tr>
</table>
</td></tr>
-<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="W">W</a></h2></td>
-<td valign="top">
-<table class="link-index" width="100%" border="1">
-<tr>
-<td width="33%" class="link-index"><a href="apiclient.push.WebhookChannel-class.html">WebhookChannel</a><br />
-<span class="index-where">(in <a href="apiclient.push-module.html">apiclient.push</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.push.Headers-class.html#write">write()</a><br />
-<span class="index-where">(in <a href="apiclient.push.Headers-class.html">Headers</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.push.Channel-class.html#write_header">write_header()</a><br />
-<span class="index-where">(in <a href="apiclient.push.Channel-class.html">Channel</a>)</span></td>
-</tr>
-<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
-</table>
-</td></tr>
<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="X">X</a></h2></td>
<td valign="top">
<table class="link-index" width="100%" border="1">
<tr>
-<td width="33%" class="link-index"><a href="oauth2client.appengine-module.html#XSRF_MEMCACHE_ID">XSRF_MEMCACHE_ID</a><br />
-<span class="index-where">(in <a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.channel-module.html#X_GOOG_CHANNEL_ID">X_GOOG_CHANNEL_ID</a><br />
+<span class="index-where">(in <a href="apiclient.channel-module.html">apiclient.channel</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.channel-module.html#X_GOOG_RESOURCE_STATE">X_GOOG_RESOURCE_STATE</a><br />
+<span class="index-where">(in <a href="apiclient.channel-module.html">apiclient.channel</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.appengine-module.html#xsrf_secret_key">xsrf_secret_key()</a><br />
<span class="index-where">(in <a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="apiclient.channel-module.html#X_GOOG_MESSAGE_NUMBER">X_GOOG_MESSAGE_NUMBER</a><br />
+<span class="index-where">(in <a href="apiclient.channel-module.html">apiclient.channel</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.channel-module.html#X_GOOG_RESOURCE_URI">X_GOOG_RESOURCE_URI</a><br />
+<span class="index-where">(in <a href="apiclient.channel-module.html">apiclient.channel</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.xsrfutil-module.html">xsrfutil</a><br />
<span class="index-where">(in <a href="oauth2client-module.html">oauth2client</a>)</span></td>
</tr>
-<tr><td class="link-index"> </td><td class="link-index"> </td><td class="link-index"> </td></tr>
+<tr>
+<td width="33%" class="link-index"><a href="apiclient.channel-module.html#X_GOOG_RESOURCE_ID">X_GOOG_RESOURCE_ID</a><br />
+<span class="index-where">(in <a href="apiclient.channel-module.html">apiclient.channel</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.appengine-module.html#XSRF_MEMCACHE_ID">XSRF_MEMCACHE_ID</a><br />
+<span class="index-where">(in <a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
</table>
</td></tr>
<tr valign="top"><td valign="top" width="1%"><h2 class="epydoc"><a name="_">_</a></h2></td>
@@ -1305,273 +1310,249 @@
<tr>
<td width="33%" class="link-index"><a href="apiclient.http.RequestMockBuilder-class.html#__call__">__call__()</a><br />
<span class="index-where">(in <a href="apiclient.http.RequestMockBuilder-class.html">RequestMockBuilder</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.django_orm.CredentialsField-class.html#__metaclass__">__metaclass__</a><br />
-<span class="index-where">(in <a href="oauth2client.django_orm.CredentialsField-class.html">CredentialsField</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore-class.html#_locked_json_read">_locked_json_read()</a><br />
+<td width="33%" class="link-index"><a href="apiclient.errors.HttpError-class.html#__repr__">__repr__()</a><br />
+<span class="index-where">(in <a href="apiclient.errors.HttpError-class.html">HttpError</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore-class.html#_locked_json_write">_locked_json_write()</a><br />
<span class="index-where">(in <a href="oauth2client.multistore_file._MultiStore-class.html" onclick="show_private();">_MultiStore</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="apiclient.mimeparse-module.html#__credits__">__credits__</a><br />
<span class="index-where">(in <a href="apiclient.mimeparse-module.html">apiclient.mimeparse</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.django_orm.FlowField-class.html#__metaclass__">__metaclass__</a><br />
-<span class="index-where">(in <a href="oauth2client.django_orm.FlowField-class.html">FlowField</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore-class.html#_locked_json_write">_locked_json_write()</a><br />
-<span class="index-where">(in <a href="oauth2client.multistore_file._MultiStore-class.html" onclick="show_private();">_MultiStore</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="apiclient.mimeparse-module.html#__email__">__email__</a><br />
-<span class="index-where">(in <a href="apiclient.mimeparse-module.html">apiclient.mimeparse</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.errors.BatchError-class.html#__repr__">__repr__()</a><br />
-<span class="index-where">(in <a href="apiclient.errors.BatchError-class.html">BatchError</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.discovery.Resource-class.html#__setstate__">__setstate__()</a><br />
+<span class="index-where">(in <a href="apiclient.discovery.Resource-class.html" onclick="show_private();">Resource</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.model.BaseModel-class.html#_log_request">_log_request()</a><br />
<span class="index-where">(in <a href="apiclient.model.BaseModel-class.html">BaseModel</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="apiclient.push.Headers-class.html#__getitem__">__getitem__()</a><br />
-<span class="index-where">(in <a href="apiclient.push.Headers-class.html">Headers</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.errors.HttpError-class.html#__repr__">__repr__()</a><br />
-<span class="index-where">(in <a href="apiclient.errors.HttpError-class.html">HttpError</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.mimeparse-module.html#__email__">__email__</a><br />
+<span class="index-where">(in <a href="apiclient.mimeparse-module.html">apiclient.mimeparse</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client.OAuth2Credentials-class.html#__setstate__">__setstate__()</a><br />
+<span class="index-where">(in <a href="oauth2client.client.OAuth2Credentials-class.html">OAuth2Credentials</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.model.BaseModel-class.html#_log_response">_log_response()</a><br />
<span class="index-where">(in <a href="apiclient.model.BaseModel-class.html">BaseModel</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="apiclient.discovery.Resource-class.html#__getstate__">__getstate__()</a><br />
<span class="index-where">(in <a href="apiclient.discovery.Resource-class.html" onclick="show_private();">Resource</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.push.Headers-class.html#__setitem__">__setitem__()</a><br />
-<span class="index-where">(in <a href="apiclient.push.Headers-class.html">Headers</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.model-module.html#_abstract">_abstract()</a><br />
+<span class="index-where">(in <a href="apiclient.model-module.html">apiclient.model</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.discovery-module.html#_media_path_url_from_info">_media_path_url_from_info()</a><br />
<span class="index-where">(in <a href="apiclient.discovery-module.html">apiclient.discovery</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="oauth2client.client.OAuth2Credentials-class.html#__getstate__">__getstate__()</a><br />
<span class="index-where">(in <a href="oauth2client.client.OAuth2Credentials-class.html">OAuth2Credentials</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.discovery.Resource-class.html#__setstate__">__setstate__()</a><br />
-<span class="index-where">(in <a href="apiclient.discovery.Resource-class.html" onclick="show_private();">Resource</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client-module.html#_abstract">_abstract()</a><br />
+<span class="index-where">(in <a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.discovery-module.html#_MEDIA_SIZE_BIT_SHIFTS">_MEDIA_SIZE_BIT_SHIFTS</a><br />
<span class="index-where">(in <a href="apiclient.discovery-module.html">apiclient.discovery</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="apiclient.discovery.Resource-class.html#__init__">__init__()</a><br />
+<td width="33%" class="link-index"><a href="apiclient.channel.Channel-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="apiclient.channel.Channel-class.html">Channel</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.discovery.Resource-class.html#_add_basic_methods">_add_basic_methods()</a><br />
<span class="index-where">(in <a href="apiclient.discovery.Resource-class.html" onclick="show_private();">Resource</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.client.OAuth2Credentials-class.html#__setstate__">__setstate__()</a><br />
-<span class="index-where">(in <a href="oauth2client.client.OAuth2Credentials-class.html">OAuth2Credentials</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.discovery-module.html#_media_size_to_long">_media_size_to_long()</a><br />
<span class="index-where">(in <a href="apiclient.discovery-module.html">apiclient.discovery</a>)</span></td>
</tr>
<tr>
+<td width="33%" class="link-index"><a href="apiclient.channel.Notification-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="apiclient.channel.Notification-class.html">Notification</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.discovery.Resource-class.html#_add_nested_resources">_add_nested_resources()</a><br />
+<span class="index-where">(in <a href="apiclient.discovery.Resource-class.html" onclick="show_private();">Resource</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore-class.html">_MultiStore</a><br />
+<span class="index-where">(in <a href="oauth2client.multistore_file-module.html">oauth2client.multistore_file</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="apiclient.discovery.Resource-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="apiclient.discovery.Resource-class.html" onclick="show_private();">Resource</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.discovery.Resource-class.html#_add_next_methods">_add_next_methods()</a><br />
+<span class="index-where">(in <a href="apiclient.discovery.Resource-class.html" onclick="show_private();">Resource</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.multistore_file-module.html#_multistores">_multistores</a><br />
+<span class="index-where">(in <a href="oauth2client.multistore_file-module.html">oauth2client.multistore_file</a>)</span></td>
+</tr>
+<tr>
<td width="33%" class="link-index"><a href="apiclient.discovery.ResourceMethodParameters-class.html#__init__">__init__()</a><br />
<span class="index-where">(in <a href="apiclient.discovery.ResourceMethodParameters-class.html" onclick="show_private();">ResourceMethodParameters</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.model-module.html#_abstract">_abstract()</a><br />
-<span class="index-where">(in <a href="apiclient.model-module.html">apiclient.model</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore-class.html">_MultiStore</a><br />
+<td width="33%" class="link-index"><a href="oauth2client.util-module.html#_add_query_parameter">_add_query_parameter()</a><br />
+<span class="index-where">(in <a href="oauth2client.util-module.html">oauth2client.util</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.multistore_file-module.html#_multistores_lock">_multistores_lock</a><br />
<span class="index-where">(in <a href="oauth2client.multistore_file-module.html">oauth2client.multistore_file</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="apiclient.errors.BatchError-class.html#__init__">__init__()</a><br />
<span class="index-where">(in <a href="apiclient.errors.BatchError-class.html">BatchError</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.client-module.html#_abstract">_abstract()</a><br />
-<span class="index-where">(in <a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.multistore_file-module.html#_multistores">_multistores</a><br />
-<span class="index-where">(in <a href="oauth2client.multistore_file-module.html">oauth2client.multistore_file</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="apiclient.errors.HttpError-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in <a href="apiclient.errors.HttpError-class.html">HttpError</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.discovery.Resource-class.html#_add_basic_methods">_add_basic_methods()</a><br />
-<span class="index-where">(in <a href="apiclient.discovery.Resource-class.html" onclick="show_private();">Resource</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.multistore_file-module.html#_multistores_lock">_multistores_lock</a><br />
-<span class="index-where">(in <a href="oauth2client.multistore_file-module.html">oauth2client.multistore_file</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="apiclient.errors.UnexpectedBodyError-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in <a href="apiclient.errors.UnexpectedBodyError-class.html">UnexpectedBodyError</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.discovery.Resource-class.html#_add_nested_resources">_add_nested_resources()</a><br />
-<span class="index-where">(in <a href="apiclient.discovery.Resource-class.html" onclick="show_private();">Resource</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.model.BaseModel-class.html#_build_query">_build_query()</a><br />
+<span class="index-where">(in <a href="apiclient.model.BaseModel-class.html">BaseModel</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.http.BatchHttpRequest-class.html#_new_id">_new_id()</a><br />
<span class="index-where">(in <a href="apiclient.http.BatchHttpRequest-class.html">BatchHttpRequest</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="apiclient.errors.UnexpectedMethodError-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in <a href="apiclient.errors.UnexpectedMethodError-class.html">UnexpectedMethodError</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.discovery.Resource-class.html#_add_next_methods">_add_next_methods()</a><br />
-<span class="index-where">(in <a href="apiclient.discovery.Resource-class.html" onclick="show_private();">Resource</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.push.Headers-class.html#_normalize_key">_normalize_key()</a><br />
-<span class="index-where">(in <a href="apiclient.push.Headers-class.html">Headers</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="apiclient.http.BatchHttpRequest-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in <a href="apiclient.http.BatchHttpRequest-class.html">BatchHttpRequest</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.util-module.html#_add_query_parameter">_add_query_parameter()</a><br />
-<span class="index-where">(in <a href="oauth2client.util-module.html">oauth2client.util</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.errors.HttpError-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="apiclient.errors.HttpError-class.html">HttpError</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.appengine-module.html#_build_state_value">_build_state_value()</a><br />
+<span class="index-where">(in <a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.locked_file._Opener-class.html">_Opener</a><br />
<span class="index-where">(in <a href="oauth2client.locked_file-module.html">oauth2client.locked_file</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="apiclient.http.HttpMock-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in <a href="apiclient.http.HttpMock-class.html">HttpMock</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.model.BaseModel-class.html#_build_query">_build_query()</a><br />
-<span class="index-where">(in <a href="apiclient.model.BaseModel-class.html">BaseModel</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.errors.UnexpectedBodyError-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="apiclient.errors.UnexpectedBodyError-class.html">UnexpectedBodyError</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client-module.html#_cached_http">_cached_http</a><br />
+<span class="index-where">(in <a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.client-module.html#_parse_exchange_token_response">_parse_exchange_token_response()</a><br />
<span class="index-where">(in <a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="apiclient.http.HttpMockSequence-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in <a href="apiclient.http.HttpMockSequence-class.html">HttpMockSequence</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.appengine-module.html#_build_state_value">_build_state_value()</a><br />
-<span class="index-where">(in <a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.errors.UnexpectedMethodError-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="apiclient.errors.UnexpectedMethodError-class.html">UnexpectedMethodError</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.discovery-module.html#_cast">_cast()</a><br />
+<span class="index-where">(in <a href="apiclient.discovery-module.html">apiclient.discovery</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.appengine-module.html#_parse_state_value">_parse_state_value()</a><br />
<span class="index-where">(in <a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="apiclient.http.HttpRequest-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in <a href="apiclient.http.HttpRequest-class.html">HttpRequest</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.client-module.html#_cached_http">_cached_http</a><br />
-<span class="index-where">(in <a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.http.BatchHttpRequest-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="apiclient.http.BatchHttpRequest-class.html">BatchHttpRequest</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.tools-module.html#_CLIENT_SECRETS_MESSAGE">_CLIENT_SECRETS_MESSAGE</a><br />
+<span class="index-where">(in <a href="oauth2client.tools-module.html">oauth2client.tools</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.locked_file._PosixOpener-class.html#_posix_lockfile">_posix_lockfile()</a><br />
<span class="index-where">(in <a href="oauth2client.locked_file._PosixOpener-class.html" onclick="show_private();">_PosixOpener</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="apiclient.http.HttpRequestMock-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in <a href="apiclient.http.HttpRequestMock-class.html">HttpRequestMock</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.discovery-module.html#_cast">_cast()</a><br />
-<span class="index-where">(in <a href="apiclient.discovery-module.html">apiclient.discovery</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.http.HttpMock-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="apiclient.http.HttpMock-class.html">HttpMock</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.file.Storage-class.html#_create_file_if_needed">_create_file_if_needed()</a><br />
+<span class="index-where">(in <a href="oauth2client.file.Storage-class.html">Storage</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.locked_file._PosixOpener-class.html">_PosixOpener</a><br />
<span class="index-where">(in <a href="oauth2client.locked_file-module.html">oauth2client.locked_file</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="apiclient.http.MediaDownloadProgress-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in <a href="apiclient.http.MediaDownloadProgress-class.html">MediaDownloadProgress</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.file.Storage-class.html#_create_file_if_needed">_create_file_if_needed()</a><br />
-<span class="index-where">(in <a href="oauth2client.file.Storage-class.html">Storage</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.http.HttpMockSequence-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="apiclient.http.HttpMockSequence-class.html">HttpMockSequence</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore-class.html#_create_file_if_needed">_create_file_if_needed()</a><br />
+<span class="index-where">(in <a href="oauth2client.multistore_file._MultiStore-class.html" onclick="show_private();">_MultiStore</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.schema.Schemas-class.html#_prettyPrintByName">_prettyPrintByName()</a><br />
<span class="index-where">(in <a href="apiclient.schema.Schemas-class.html">Schemas</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="apiclient.http.MediaFileUpload-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in <a href="apiclient.http.MediaFileUpload-class.html">MediaFileUpload</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore-class.html#_create_file_if_needed">_create_file_if_needed()</a><br />
-<span class="index-where">(in <a href="oauth2client.multistore_file._MultiStore-class.html" onclick="show_private();">_MultiStore</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.http.HttpRequest-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="apiclient.http.HttpRequest-class.html">HttpRequest</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.appengine.OAuth2Decorator-class.html#_create_flow">_create_flow()</a><br />
+<span class="index-where">(in <a href="oauth2client.appengine.OAuth2Decorator-class.html">OAuth2Decorator</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.schema.Schemas-class.html#_prettyPrintSchema">_prettyPrintSchema()</a><br />
<span class="index-where">(in <a href="apiclient.schema.Schemas-class.html">Schemas</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="apiclient.http.MediaInMemoryUpload-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in <a href="apiclient.http.MediaInMemoryUpload-class.html">MediaInMemoryUpload</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.appengine.OAuth2Decorator-class.html#_create_flow">_create_flow()</a><br />
-<span class="index-where">(in <a href="oauth2client.appengine.OAuth2Decorator-class.html">OAuth2Decorator</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.http.HttpRequestMock-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="apiclient.http.HttpRequestMock-class.html">HttpRequestMock</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore-class.html#_decode_credential_from_json">_decode_credential_from_json()</a><br />
+<span class="index-where">(in <a href="oauth2client.multistore_file._MultiStore-class.html" onclick="show_private();">_MultiStore</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.http.HttpRequest-class.html#_process_response">_process_response()</a><br />
<span class="index-where">(in <a href="apiclient.http.HttpRequest-class.html">HttpRequest</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="apiclient.http.MediaIoBaseDownload-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in <a href="apiclient.http.MediaIoBaseDownload-class.html">MediaIoBaseDownload</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore-class.html#_decode_credential_from_json">_decode_credential_from_json()</a><br />
+<td width="33%" class="link-index"><a href="apiclient.http.MediaDownloadProgress-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="apiclient.http.MediaDownloadProgress-class.html">MediaDownloadProgress</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore-class.html#_delete_credential">_delete_credential()</a><br />
<span class="index-where">(in <a href="oauth2client.multistore_file._MultiStore-class.html" onclick="show_private();">_MultiStore</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.appengine.AppAssertionCredentials-class.html#_refresh">_refresh()</a><br />
<span class="index-where">(in <a href="oauth2client.appengine.AppAssertionCredentials-class.html">AppAssertionCredentials</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="apiclient.http.MediaIoBaseUpload-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in <a href="apiclient.http.MediaIoBaseUpload-class.html">MediaIoBaseUpload</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore-class.html#_delete_credential">_delete_credential()</a><br />
-<span class="index-where">(in <a href="oauth2client.multistore_file._MultiStore-class.html" onclick="show_private();">_MultiStore</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.http.MediaFileUpload-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="apiclient.http.MediaFileUpload-class.html">MediaFileUpload</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.appengine.StorageByKeyName-class.html#_delete_entity">_delete_entity()</a><br />
+<span class="index-where">(in <a href="oauth2client.appengine.StorageByKeyName-class.html">StorageByKeyName</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.client.AccessTokenCredentials-class.html#_refresh">_refresh()</a><br />
<span class="index-where">(in <a href="oauth2client.client.AccessTokenCredentials-class.html">AccessTokenCredentials</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="apiclient.http.MediaUploadProgress-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in <a href="apiclient.http.MediaUploadProgress-class.html">MediaUploadProgress</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.appengine.StorageByKeyName-class.html#_delete_entity">_delete_entity()</a><br />
-<span class="index-where">(in <a href="oauth2client.appengine.StorageByKeyName-class.html">StorageByKeyName</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.http.MediaInMemoryUpload-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="apiclient.http.MediaInMemoryUpload-class.html">MediaInMemoryUpload</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.http.BatchHttpRequest-class.html#_deserialize_response">_deserialize_response()</a><br />
+<span class="index-where">(in <a href="apiclient.http.BatchHttpRequest-class.html">BatchHttpRequest</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.client.OAuth2Credentials-class.html#_refresh">_refresh()</a><br />
<span class="index-where">(in <a href="oauth2client.client.OAuth2Credentials-class.html">OAuth2Credentials</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="apiclient.http.RequestMockBuilder-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in <a href="apiclient.http.RequestMockBuilder-class.html">RequestMockBuilder</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.http.BatchHttpRequest-class.html#_deserialize_response">_deserialize_response()</a><br />
-<span class="index-where">(in <a href="apiclient.http.BatchHttpRequest-class.html">BatchHttpRequest</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.http.MediaIoBaseDownload-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="apiclient.http.MediaIoBaseDownload-class.html">MediaIoBaseDownload</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.appengine.OAuth2Decorator-class.html#_display_error_message">_display_error_message()</a><br />
+<span class="index-where">(in <a href="oauth2client.appengine.OAuth2Decorator-class.html">OAuth2Decorator</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.gce.AppAssertionCredentials-class.html#_refresh">_refresh()</a><br />
<span class="index-where">(in <a href="oauth2client.gce.AppAssertionCredentials-class.html">AppAssertionCredentials</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="apiclient.http._StreamSlice-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in <a href="apiclient.http._StreamSlice-class.html" onclick="show_private();">_StreamSlice</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.appengine.OAuth2Decorator-class.html#_display_error_message">_display_error_message()</a><br />
-<span class="index-where">(in <a href="oauth2client.appengine.OAuth2Decorator-class.html">OAuth2Decorator</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.http.MediaIoBaseUpload-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="apiclient.http.MediaIoBaseUpload-class.html">MediaIoBaseUpload</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client.OAuth2Credentials-class.html#_do_refresh_request">_do_refresh_request()</a><br />
+<span class="index-where">(in <a href="oauth2client.client.OAuth2Credentials-class.html">OAuth2Credentials</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.http.BatchHttpRequest-class.html#_refresh_and_apply_credentials">_refresh_and_apply_credentials()</a><br />
<span class="index-where">(in <a href="apiclient.http.BatchHttpRequest-class.html">BatchHttpRequest</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="apiclient.model.JsonModel-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in <a href="apiclient.model.JsonModel-class.html">JsonModel</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.client.OAuth2Credentials-class.html#_do_refresh_request">_do_refresh_request()</a><br />
+<td width="33%" class="link-index"><a href="apiclient.http.MediaUploadProgress-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="apiclient.http.MediaUploadProgress-class.html">MediaUploadProgress</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client.OAuth2Credentials-class.html#_do_revoke">_do_revoke()</a><br />
<span class="index-where">(in <a href="oauth2client.client.OAuth2Credentials-class.html">OAuth2Credentials</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore-class.html#_refresh_data_cache">_refresh_data_cache()</a><br />
<span class="index-where">(in <a href="oauth2client.multistore_file._MultiStore-class.html" onclick="show_private();">_MultiStore</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="apiclient.model.ProtocolBufferModel-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in <a href="apiclient.model.ProtocolBufferModel-class.html">ProtocolBufferModel</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.client.OAuth2Credentials-class.html#_do_revoke">_do_revoke()</a><br />
-<span class="index-where">(in <a href="oauth2client.client.OAuth2Credentials-class.html">OAuth2Credentials</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.http.RequestMockBuilder-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="apiclient.http.RequestMockBuilder-class.html">RequestMockBuilder</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.http.BatchHttpRequest-class.html#_execute">_execute()</a><br />
+<span class="index-where">(in <a href="apiclient.http.BatchHttpRequest-class.html">BatchHttpRequest</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.client.AccessTokenCredentials-class.html#_revoke">_revoke()</a><br />
<span class="index-where">(in <a href="oauth2client.client.AccessTokenCredentials-class.html">AccessTokenCredentials</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="apiclient.push.Channel-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in <a href="apiclient.push.Channel-class.html">Channel</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.http.BatchHttpRequest-class.html#_execute">_execute()</a><br />
-<span class="index-where">(in <a href="apiclient.http.BatchHttpRequest-class.html">BatchHttpRequest</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.http._StreamSlice-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="apiclient.http._StreamSlice-class.html" onclick="show_private();">_StreamSlice</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client-module.html#_extract_id_token">_extract_id_token()</a><br />
+<span class="index-where">(in <a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.client.AssertionCredentials-class.html#_revoke">_revoke()</a><br />
<span class="index-where">(in <a href="oauth2client.client.AssertionCredentials-class.html">AssertionCredentials</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="apiclient.push.Headers-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in <a href="apiclient.push.Headers-class.html">Headers</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.client-module.html#_extract_id_token">_extract_id_token()</a><br />
-<span class="index-where">(in <a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.model.JsonModel-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="apiclient.model.JsonModel-class.html">JsonModel</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.locked_file-module.html#_FcntlOpener">_FcntlOpener</a><br />
+<span class="index-where">(in <a href="oauth2client.locked_file-module.html">oauth2client.locked_file</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.client.OAuth2Credentials-class.html#_revoke">_revoke()</a><br />
<span class="index-where">(in <a href="oauth2client.client.OAuth2Credentials-class.html">OAuth2Credentials</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="apiclient.push.Subscription-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in <a href="apiclient.push.Subscription-class.html">Subscription</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.locked_file-module.html#_FcntlOpener">_FcntlOpener</a><br />
-<span class="index-where">(in <a href="oauth2client.locked_file-module.html">oauth2client.locked_file</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.appengine-module.html#_safe_html">_safe_html()</a><br />
-<span class="index-where">(in <a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="apiclient.push.WebhookChannel-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in <a href="apiclient.push.WebhookChannel-class.html">WebhookChannel</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.model.ProtocolBufferModel-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="apiclient.model.ProtocolBufferModel-class.html">ProtocolBufferModel</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.mimeparse-module.html#_filter_blank">_filter_blank()</a><br />
<span class="index-where">(in <a href="apiclient.mimeparse-module.html">apiclient.mimeparse</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.schema._SchemaToStruct-class.html">_SchemaToStruct</a><br />
-<span class="index-where">(in <a href="apiclient.schema-module.html">apiclient.schema</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.appengine-module.html#_safe_html">_safe_html()</a><br />
+<span class="index-where">(in <a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="apiclient.schema.Schemas-class.html#__init__">__init__()</a><br />
<span class="index-where">(in <a href="apiclient.schema.Schemas-class.html">Schemas</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.discovery-module.html#_fix_up_media_upload">_fix_up_media_upload()</a><br />
<span class="index-where">(in <a href="apiclient.discovery-module.html">apiclient.discovery</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.http.BatchHttpRequest-class.html#_serialize_request">_serialize_request()</a><br />
-<span class="index-where">(in <a href="apiclient.http.BatchHttpRequest-class.html">BatchHttpRequest</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.schema._SchemaToStruct-class.html">_SchemaToStruct</a><br />
+<span class="index-where">(in <a href="apiclient.schema-module.html">apiclient.schema</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="apiclient.schema._SchemaToStruct-class.html#__init__">__init__()</a><br />
<span class="index-where">(in <a href="apiclient.schema._SchemaToStruct-class.html" onclick="show_private();">_SchemaToStruct</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.discovery-module.html#_fix_up_method_description">_fix_up_method_description()</a><br />
<span class="index-where">(in <a href="apiclient.discovery-module.html">apiclient.discovery</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.discovery.Resource-class.html#_set_dynamic_attr">_set_dynamic_attr()</a><br />
-<span class="index-where">(in <a href="apiclient.discovery.Resource-class.html" onclick="show_private();">Resource</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.http.BatchHttpRequest-class.html#_serialize_request">_serialize_request()</a><br />
+<span class="index-where">(in <a href="apiclient.http.BatchHttpRequest-class.html">BatchHttpRequest</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="oauth2client.appengine.AppAssertionCredentials-class.html#__init__">__init__()</a><br />
<span class="index-where">(in <a href="oauth2client.appengine.AppAssertionCredentials-class.html">AppAssertionCredentials</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.discovery-module.html#_fix_up_parameters">_fix_up_parameters()</a><br />
<span class="index-where">(in <a href="apiclient.discovery-module.html">apiclient.discovery</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.discovery.Resource-class.html#_set_service_methods">_set_service_methods()</a><br />
+<td width="33%" class="link-index"><a href="apiclient.discovery.Resource-class.html#_set_dynamic_attr">_set_dynamic_attr()</a><br />
<span class="index-where">(in <a href="apiclient.discovery.Resource-class.html" onclick="show_private();">Resource</a>)</span></td>
</tr>
<tr>
@@ -1579,153 +1560,176 @@
<span class="index-where">(in <a href="oauth2client.appengine.OAuth2Decorator-class.html">OAuth2Decorator</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.appengine.CredentialsNDBProperty-class.html#_from_base_type">_from_base_type()</a><br />
<span class="index-where">(in <a href="oauth2client.appengine.CredentialsNDBProperty-class.html">CredentialsNDBProperty</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore._Storage-class.html">_Storage</a><br />
-<span class="index-where">(in <a href="oauth2client.multistore_file._MultiStore-class.html" onclick="show_private();">_MultiStore</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.discovery.Resource-class.html#_set_service_methods">_set_service_methods()</a><br />
+<span class="index-where">(in <a href="apiclient.discovery.Resource-class.html" onclick="show_private();">Resource</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html#__init__">__init__()</a><br />
<span class="index-where">(in <a href="oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html">OAuth2DecoratorFromClientSecrets</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.client.AssertionCredentials-class.html#_generate_assertion">_generate_assertion()</a><br />
<span class="index-where">(in <a href="oauth2client.client.AssertionCredentials-class.html">AssertionCredentials</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.http._StreamSlice-class.html">_StreamSlice</a><br />
-<span class="index-where">(in <a href="apiclient.http-module.html">apiclient.http</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore._Storage-class.html">_Storage</a><br />
+<span class="index-where">(in <a href="oauth2client.multistore_file._MultiStore-class.html" onclick="show_private();">_MultiStore</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="oauth2client.appengine.StorageByKeyName-class.html#__init__">__init__()</a><br />
<span class="index-where">(in <a href="oauth2client.appengine.StorageByKeyName-class.html">StorageByKeyName</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.client.SignedJwtAssertionCredentials-class.html#_generate_assertion">_generate_assertion()</a><br />
<span class="index-where">(in <a href="oauth2client.client.SignedJwtAssertionCredentials-class.html">SignedJwtAssertionCredentials</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.appengine.CredentialsNDBProperty-class.html#_to_base_type">_to_base_type()</a><br />
-<span class="index-where">(in <a href="oauth2client.appengine.CredentialsNDBProperty-class.html">CredentialsNDBProperty</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.http._StreamSlice-class.html">_StreamSlice</a><br />
+<span class="index-where">(in <a href="apiclient.http-module.html">apiclient.http</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="oauth2client.client.AccessTokenCredentials-class.html#__init__">__init__()</a><br />
<span class="index-where">(in <a href="oauth2client.client.AccessTokenCredentials-class.html">AccessTokenCredentials</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.appengine-module.html#_generate_new_xsrf_secret_key">_generate_new_xsrf_secret_key()</a><br />
<span class="index-where">(in <a href="oauth2client.appengine-module.html">oauth2client.appengine</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.http.MediaUpload-class.html#_to_json">_to_json()</a><br />
-<span class="index-where">(in <a href="apiclient.http.MediaUpload-class.html">MediaUpload</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.appengine.CredentialsNDBProperty-class.html#_to_base_type">_to_base_type()</a><br />
+<span class="index-where">(in <a href="oauth2client.appengine.CredentialsNDBProperty-class.html">CredentialsNDBProperty</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="oauth2client.client.AssertionCredentials-class.html#__init__">__init__()</a><br />
<span class="index-where">(in <a href="oauth2client.client.AssertionCredentials-class.html">AssertionCredentials</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.client.AssertionCredentials-class.html#_generate_refresh_request_body">_generate_refresh_request_body()</a><br />
<span class="index-where">(in <a href="oauth2client.client.AssertionCredentials-class.html">AssertionCredentials</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.client.Credentials-class.html#_to_json">_to_json()</a><br />
-<span class="index-where">(in <a href="oauth2client.client.Credentials-class.html">Credentials</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.http.MediaUpload-class.html#_to_json">_to_json()</a><br />
+<span class="index-where">(in <a href="apiclient.http.MediaUpload-class.html">MediaUpload</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="oauth2client.client.MemoryCache-class.html#__init__">__init__()</a><br />
<span class="index-where">(in <a href="oauth2client.client.MemoryCache-class.html">MemoryCache</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.client.OAuth2Credentials-class.html#_generate_refresh_request_body">_generate_refresh_request_body()</a><br />
<span class="index-where">(in <a href="oauth2client.client.OAuth2Credentials-class.html">OAuth2Credentials</a>)</span></td>
-<td width="33%" class="link-index"><a href="apiclient.schema._SchemaToStruct-class.html#_to_str_impl">_to_str_impl()</a><br />
-<span class="index-where">(in <a href="apiclient.schema._SchemaToStruct-class.html" onclick="show_private();">_SchemaToStruct</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.client.Credentials-class.html#_to_json">_to_json()</a><br />
+<span class="index-where">(in <a href="oauth2client.client.Credentials-class.html">Credentials</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="oauth2client.client.OAuth2Credentials-class.html#__init__">__init__()</a><br />
<span class="index-where">(in <a href="oauth2client.client.OAuth2Credentials-class.html">OAuth2Credentials</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.client.OAuth2Credentials-class.html#_generate_refresh_request_headers">_generate_refresh_request_headers()</a><br />
<span class="index-where">(in <a href="oauth2client.client.OAuth2Credentials-class.html">OAuth2Credentials</a>)</span></td>
-<td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore-class.html#_unlock">_unlock()</a><br />
-<span class="index-where">(in <a href="oauth2client.multistore_file._MultiStore-class.html" onclick="show_private();">_MultiStore</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.schema._SchemaToStruct-class.html#_to_str_impl">_to_str_impl()</a><br />
+<span class="index-where">(in <a href="apiclient.schema._SchemaToStruct-class.html" onclick="show_private();">_SchemaToStruct</a>)</span></td>
</tr>
<tr>
<td width="33%" class="link-index"><a href="oauth2client.client.OAuth2WebServerFlow-class.html#__init__">__init__()</a><br />
<span class="index-where">(in <a href="oauth2client.client.OAuth2WebServerFlow-class.html">OAuth2WebServerFlow</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore-class.html#_get_all_credential_keys">_get_all_credential_keys()</a><br />
+<span class="index-where">(in <a href="oauth2client.multistore_file._MultiStore-class.html" onclick="show_private();">_MultiStore</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore-class.html#_unlock">_unlock()</a><br />
+<span class="index-where">(in <a href="oauth2client.multistore_file._MultiStore-class.html" onclick="show_private();">_MultiStore</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="oauth2client.client.SignedJwtAssertionCredentials-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="oauth2client.client.SignedJwtAssertionCredentials-class.html">SignedJwtAssertionCredentials</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore-class.html#_get_credential">_get_credential()</a><br />
<span class="index-where">(in <a href="oauth2client.multistore_file._MultiStore-class.html" onclick="show_private();">_MultiStore</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore-class.html#_update_credential">_update_credential()</a><br />
<span class="index-where">(in <a href="oauth2client.multistore_file._MultiStore-class.html" onclick="show_private();">_MultiStore</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="oauth2client.client.SignedJwtAssertionCredentials-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in <a href="oauth2client.client.SignedJwtAssertionCredentials-class.html">SignedJwtAssertionCredentials</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.django_orm.CredentialsField-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="oauth2client.django_orm.CredentialsField-class.html">CredentialsField</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.appengine.StorageByKeyName-class.html#_get_entity">_get_entity()</a><br />
<span class="index-where">(in <a href="oauth2client.appengine.StorageByKeyName-class.html">StorageByKeyName</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.client-module.html#_update_query_params">_update_query_params()</a><br />
<span class="index-where">(in <a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="oauth2client.django_orm.CredentialsField-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in <a href="oauth2client.django_orm.CredentialsField-class.html">CredentialsField</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.django_orm.FlowField-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="oauth2client.django_orm.FlowField-class.html">FlowField</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.appengine.CredentialsNDBModel-class.html#_get_kind">_get_kind()</a><br />
<span class="index-where">(in <a href="oauth2client.appengine.CredentialsNDBModel-class.html">CredentialsNDBModel</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.client.OAuth2Credentials-class.html#_updateFromCredential">_updateFromCredential()</a><br />
<span class="index-where">(in <a href="oauth2client.client.OAuth2Credentials-class.html">OAuth2Credentials</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="oauth2client.django_orm.FlowField-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in <a href="oauth2client.django_orm.FlowField-class.html">FlowField</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.django_orm.Storage-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="oauth2client.django_orm.Storage-class.html">Storage</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.appengine.SiteXsrfSecretKeyNDB-class.html#_get_kind">_get_kind()</a><br />
<span class="index-where">(in <a href="oauth2client.appengine.SiteXsrfSecretKeyNDB-class.html">SiteXsrfSecretKeyNDB</a>)</span></td>
+<td width="33%" class="link-index"><a href="apiclient.channel-module.html#_upper_header_keys">_upper_header_keys()</a><br />
+<span class="index-where">(in <a href="apiclient.channel-module.html">apiclient.channel</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="oauth2client.file.Storage-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="oauth2client.file.Storage-class.html">Storage</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.multistore_file-module.html#_get_multistore">_get_multistore()</a><br />
+<span class="index-where">(in <a href="oauth2client.multistore_file-module.html">oauth2client.multistore_file</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.client-module.html#_urlsafe_b64decode">_urlsafe_b64decode()</a><br />
<span class="index-where">(in <a href="oauth2client.client-module.html">oauth2client.client</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="oauth2client.django_orm.Storage-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in <a href="oauth2client.django_orm.Storage-class.html">Storage</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.gce.AppAssertionCredentials-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="oauth2client.gce.AppAssertionCredentials-class.html">AppAssertionCredentials</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.errors.HttpError-class.html#_get_reason">_get_reason()</a><br />
<span class="index-where">(in <a href="apiclient.errors.HttpError-class.html">HttpError</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.crypt-module.html#_urlsafe_b64decode">_urlsafe_b64decode()</a><br />
<span class="index-where">(in <a href="oauth2client.crypt-module.html">oauth2client.crypt</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="oauth2client.file.Storage-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in <a href="oauth2client.file.Storage-class.html">Storage</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.keyring_storage.Storage-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="oauth2client.keyring_storage.Storage-class.html">Storage</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore-class.html#_get_storage">_get_storage()</a><br />
<span class="index-where">(in <a href="oauth2client.multistore_file._MultiStore-class.html" onclick="show_private();">_MultiStore</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.crypt-module.html#_urlsafe_b64encode">_urlsafe_b64encode()</a><br />
<span class="index-where">(in <a href="oauth2client.crypt-module.html">oauth2client.crypt</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="oauth2client.gce.AppAssertionCredentials-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in <a href="oauth2client.gce.AppAssertionCredentials-class.html">AppAssertionCredentials</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.locked_file.LockedFile-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="oauth2client.locked_file.LockedFile-class.html">LockedFile</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.http.BatchHttpRequest-class.html#_header_to_id">_header_to_id()</a><br />
<span class="index-where">(in <a href="apiclient.http.BatchHttpRequest-class.html">BatchHttpRequest</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.appengine.CredentialsNDBProperty-class.html#_validate">_validate()</a><br />
<span class="index-where">(in <a href="oauth2client.appengine.CredentialsNDBProperty-class.html">CredentialsNDBProperty</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="oauth2client.keyring_storage.Storage-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in <a href="oauth2client.keyring_storage.Storage-class.html">Storage</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.locked_file._Opener-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="oauth2client.locked_file._Opener-class.html" onclick="show_private();">_Opener</a>)</span></td>
<td width="33%" class="link-index"><a href="apiclient.http.BatchHttpRequest-class.html#_id_to_header">_id_to_header()</a><br />
<span class="index-where">(in <a href="apiclient.http.BatchHttpRequest-class.html">BatchHttpRequest</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.appengine.FlowNDBProperty-class.html#_validate">_validate()</a><br />
<span class="index-where">(in <a href="oauth2client.appengine.FlowNDBProperty-class.html">FlowNDBProperty</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="oauth2client.locked_file.LockedFile-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in <a href="oauth2client.locked_file.LockedFile-class.html">LockedFile</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore._Storage-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="oauth2client.multistore_file._MultiStore._Storage-class.html" onclick="show_private();">_Storage</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.appengine.StorageByKeyName-class.html#_is_ndb">_is_ndb()</a><br />
<span class="index-where">(in <a href="oauth2client.appengine.StorageByKeyName-class.html">StorageByKeyName</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.clientsecrets-module.html#_validate_clientsecrets">_validate_clientsecrets()</a><br />
<span class="index-where">(in <a href="oauth2client.clientsecrets-module.html">oauth2client.clientsecrets</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="oauth2client.locked_file._Opener-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in <a href="oauth2client.locked_file._Opener-class.html" onclick="show_private();">_Opener</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore-class.html#__init__">__init__()</a><br />
+<span class="index-where">(in <a href="oauth2client.multistore_file._MultiStore-class.html" onclick="show_private();">_MultiStore</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.crypt-module.html#_json_encode">_json_encode()</a><br />
<span class="index-where">(in <a href="oauth2client.crypt-module.html">oauth2client.crypt</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.file.Storage-class.html#_validate_file">_validate_file()</a><br />
<span class="index-where">(in <a href="oauth2client.file.Storage-class.html">Storage</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore._Storage-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in <a href="oauth2client.multistore_file._MultiStore._Storage-class.html" onclick="show_private();">_Storage</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.django_orm.CredentialsField-class.html#__metaclass__">__metaclass__</a><br />
+<span class="index-where">(in <a href="oauth2client.django_orm.CredentialsField-class.html">CredentialsField</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.clientsecrets-module.html#_loadfile">_loadfile()</a><br />
<span class="index-where">(in <a href="oauth2client.clientsecrets-module.html">oauth2client.clientsecrets</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.locked_file-module.html#_Win32Opener">_Win32Opener</a><br />
<span class="index-where">(in <a href="oauth2client.locked_file-module.html">oauth2client.locked_file</a>)</span></td>
</tr>
<tr>
-<td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore-class.html#__init__">__init__()</a><br />
-<span class="index-where">(in <a href="oauth2client.multistore_file._MultiStore-class.html" onclick="show_private();">_MultiStore</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.django_orm.FlowField-class.html#__metaclass__">__metaclass__</a><br />
+<span class="index-where">(in <a href="oauth2client.django_orm.FlowField-class.html">FlowField</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore-class.html#_lock">_lock()</a><br />
<span class="index-where">(in <a href="oauth2client.multistore_file._MultiStore-class.html" onclick="show_private();">_MultiStore</a>)</span></td>
<td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore-class.html#_write">_write()</a><br />
<span class="index-where">(in <a href="oauth2client.multistore_file._MultiStore-class.html" onclick="show_private();">_MultiStore</a>)</span></td>
</tr>
+<tr>
+<td width="33%" class="link-index"><a href="apiclient.errors.BatchError-class.html#__repr__">__repr__()</a><br />
+<span class="index-where">(in <a href="apiclient.errors.BatchError-class.html">BatchError</a>)</span></td>
+<td width="33%" class="link-index"><a href="oauth2client.multistore_file._MultiStore-class.html#_locked_json_read">_locked_json_read()</a><br />
+<span class="index-where">(in <a href="oauth2client.multistore_file._MultiStore-class.html" onclick="show_private();">_MultiStore</a>)</span></td>
+<td width="33%" class="link-index"> </td>
+</tr>
</table>
</td></tr>
</table>
@@ -1752,7 +1756,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:22 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:42 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/module-tree.html b/docs/epy/module-tree.html
index 2385908..0803ec8 100644
--- a/docs/epy/module-tree.html
+++ b/docs/epy/module-tree.html
@@ -54,13 +54,13 @@
<ul class="nomargin-top">
<li> <strong class="uidlink"><a href="apiclient-module.html">apiclient</a></strong>
<ul>
+ <li> <strong class="uidlink"><a href="apiclient.channel-module.html">apiclient.channel</a></strong>: <em class="summary">Channel notifications support.</em> </li>
<li> <strong class="uidlink"><a href="apiclient.discovery-module.html">apiclient.discovery</a></strong>: <em class="summary">Client for discovery based APIs.</em> </li>
<li> <strong class="uidlink"><a href="apiclient.errors-module.html">apiclient.errors</a></strong>: <em class="summary">Errors for the library.</em> </li>
- <li> <strong class="uidlink"><a href="apiclient.ext-module.html">apiclient.ext</a></strong> </li>
<li> <strong class="uidlink"><a href="apiclient.http-module.html">apiclient.http</a></strong>: <em class="summary">Classes to encapsulate a single HTTP request.</em> </li>
<li> <strong class="uidlink"><a href="apiclient.mimeparse-module.html">apiclient.mimeparse</a></strong>: <em class="summary">MIME-Type Parser</em> </li>
<li> <strong class="uidlink"><a href="apiclient.model-module.html">apiclient.model</a></strong>: <em class="summary">Model objects for requests and responses.</em> </li>
- <li> <strong class="uidlink"><a href="apiclient.push-module.html">apiclient.push</a></strong>: <em class="summary">Push notifications support.</em> </li>
+ <li> <strong class="uidlink"><a href="apiclient.sample_tools-module.html">apiclient.sample_tools</a></strong>: <em class="summary">Utilities for making samples.</em> </li>
<li> <strong class="uidlink"><a href="apiclient.schema-module.html">apiclient.schema</a></strong>: <em class="summary">Schema processing for discovery based APIs</em> </li>
</ul>
</li>
@@ -77,6 +77,8 @@
<li> <strong class="uidlink"><a href="oauth2client.keyring_storage-module.html">oauth2client.keyring_storage</a></strong>: <em class="summary">A keyring based Storage.</em> </li>
<li> <strong class="uidlink"><a href="oauth2client.locked_file-module.html">oauth2client.locked_file</a></strong>: <em class="summary">Locked file interface that should work on Unix and Windows pythons.</em> </li>
<li> <strong class="uidlink"><a href="oauth2client.multistore_file-module.html">oauth2client.multistore_file</a></strong>: <em class="summary">Multi-credential file store with lock support.</em> </li>
+ <li> <strong class="uidlink"><a href="oauth2client.old_run-module.html">oauth2client.old_run</a></strong>: <em class="summary">This module holds the old run() function which is deprecated, the
+tools.run_flow() function should be used in its place.</em> </li>
<li> <strong class="uidlink"><a href="oauth2client.tools-module.html">oauth2client.tools</a></strong>: <em class="summary">Command-line tools for authenticating via OAuth 2.0</em> </li>
<li> <strong class="uidlink"><a href="oauth2client.util-module.html">oauth2client.util</a></strong>: <em class="summary">Common utility library.</em> </li>
<li> <strong class="uidlink"><a href="oauth2client.xsrfutil-module.html">oauth2client.xsrfutil</a></strong>: <em class="summary">Helper methods for creating & verifying XSRF tokens.</em> </li>
@@ -106,7 +108,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:22 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:42 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client-module.html b/docs/epy/oauth2client-module.html
index f223090..7134419 100644
--- a/docs/epy/oauth2client-module.html
+++ b/docs/epy/oauth2client-module.html
@@ -54,7 +54,7 @@
<h1 class="epydoc">Package oauth2client</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client-pysrc.html">source code</a></span></p>
<hr />
<div class="fields"> <p><strong>Version:</strong>
- 1.1
+ 1.2
</p>
</div><!-- ==================== SUBMODULES ==================== -->
<a name="section-Submodules"></a>
@@ -86,6 +86,8 @@
<li> <strong class="uidlink"><a href="oauth2client.keyring_storage-module.html">oauth2client.keyring_storage</a></strong>: <em class="summary">A keyring based Storage.</em> </li>
<li> <strong class="uidlink"><a href="oauth2client.locked_file-module.html">oauth2client.locked_file</a></strong>: <em class="summary">Locked file interface that should work on Unix and Windows pythons.</em> </li>
<li> <strong class="uidlink"><a href="oauth2client.multistore_file-module.html">oauth2client.multistore_file</a></strong>: <em class="summary">Multi-credential file store with lock support.</em> </li>
+ <li> <strong class="uidlink"><a href="oauth2client.old_run-module.html">oauth2client.old_run</a></strong>: <em class="summary">This module holds the old run() function which is deprecated, the
+tools.run_flow() function should be used in its place.</em> </li>
<li> <strong class="uidlink"><a href="oauth2client.tools-module.html">oauth2client.tools</a></strong>: <em class="summary">Command-line tools for authenticating via OAuth 2.0</em> </li>
<li> <strong class="uidlink"><a href="oauth2client.util-module.html">oauth2client.util</a></strong>: <em class="summary">Common utility library.</em> </li>
<li> <strong class="uidlink"><a href="oauth2client.xsrfutil-module.html">oauth2client.xsrfutil</a></strong>: <em class="summary">Helper methods for creating & verifying XSRF tokens.</em> </li>
@@ -155,7 +157,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:23 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:42 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client-pysrc.html b/docs/epy/oauth2client-pysrc.html
index 846861a..3eac81e 100644
--- a/docs/epy/oauth2client-pysrc.html
+++ b/docs/epy/oauth2client-pysrc.html
@@ -52,7 +52,7 @@
</table>
<h1 class="epydoc">Source Code for <a href="oauth2client-module.html">Package oauth2client</a></h1>
<pre class="py-src">
-<a name="L1"></a><tt class="py-lineno">1</tt> <tt class="py-line"><tt class="py-name">__version__</tt> <tt class="py-op">=</tt> <tt class="py-docstring">"1.1"</tt> </tt>
+<a name="L1"></a><tt class="py-lineno">1</tt> <tt class="py-line"><tt class="py-name">__version__</tt> <tt class="py-op">=</tt> <tt class="py-docstring">"1.2"</tt> </tt>
<a name="L2"></a><tt class="py-lineno">2</tt> <tt class="py-line"> </tt>
<a name="L3"></a><tt class="py-lineno">3</tt> <tt class="py-line"><tt id="link-0" class="py-name" targets="Variable oauth2client.GOOGLE_AUTH_URI=oauth2client-module.html#GOOGLE_AUTH_URI"><a title="oauth2client.GOOGLE_AUTH_URI" class="py-name" href="#" onclick="return doclink('link-0', 'GOOGLE_AUTH_URI', 'link-0');">GOOGLE_AUTH_URI</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'https://accounts.google.com/o/oauth2/auth'</tt> </tt>
<a name="L4"></a><tt class="py-lineno">4</tt> <tt class="py-line"><tt id="link-1" class="py-name" targets="Variable oauth2client.GOOGLE_REVOKE_URI=oauth2client-module.html#GOOGLE_REVOKE_URI"><a title="oauth2client.GOOGLE_REVOKE_URI" class="py-name" href="#" onclick="return doclink('link-1', 'GOOGLE_REVOKE_URI', 'link-1');">GOOGLE_REVOKE_URI</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'https://accounts.google.com/o/oauth2/revoke'</tt> </tt>
@@ -87,7 +87,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:26 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:47 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.anyjson-module.html b/docs/epy/oauth2client.anyjson-module.html
index c4a7dfb..8c3c142 100644
--- a/docs/epy/oauth2client.anyjson-module.html
+++ b/docs/epy/oauth2client.anyjson-module.html
@@ -88,7 +88,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:23 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:42 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.anyjson-pysrc.html b/docs/epy/oauth2client.anyjson-pysrc.html
index 0158dbd..28d0740 100644
--- a/docs/epy/oauth2client.anyjson-pysrc.html
+++ b/docs/epy/oauth2client.anyjson-pysrc.html
@@ -115,7 +115,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:26 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:47 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.appengine-module.html b/docs/epy/oauth2client.appengine-module.html
index 598e682..aa99fff 100644
--- a/docs/epy/oauth2client.appengine-module.html
+++ b/docs/epy/oauth2client.appengine-module.html
@@ -573,7 +573,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:23 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:42 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.appengine-pysrc.html b/docs/epy/oauth2client.appengine-pysrc.html
index 17ab61f..20b6f29 100644
--- a/docs/epy/oauth2client.appengine-pysrc.html
+++ b/docs/epy/oauth2client.appengine-pysrc.html
@@ -80,167 +80,170 @@
<a name="L25"></a><tt class="py-lineno"> 25</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt> </tt>
<a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">os</tt> </tt>
<a name="L27"></a><tt class="py-lineno"> 27</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">pickle</tt> </tt>
-<a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">time</tt> </tt>
-<a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"> </tt>
-<a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">google</tt><tt class="py-op">.</tt><tt id="link-0" class="py-name" targets="Module oauth2client.appengine=oauth2client.appengine-module.html"><a title="oauth2client.appengine" class="py-name" href="#" onclick="return doclink('link-0', 'appengine', 'link-0');">appengine</a></tt><tt class="py-op">.</tt><tt class="py-name">api</tt> <tt class="py-keyword">import</tt> <tt class="py-name">app_identity</tt> </tt>
-<a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">google</tt><tt class="py-op">.</tt><tt id="link-1" class="py-name"><a title="oauth2client.appengine" class="py-name" href="#" onclick="return doclink('link-1', 'appengine', 'link-0');">appengine</a></tt><tt class="py-op">.</tt><tt class="py-name">api</tt> <tt class="py-keyword">import</tt> <tt class="py-name">memcache</tt> </tt>
-<a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">google</tt><tt class="py-op">.</tt><tt id="link-2" class="py-name"><a title="oauth2client.appengine" class="py-name" href="#" onclick="return doclink('link-2', 'appengine', 'link-0');">appengine</a></tt><tt class="py-op">.</tt><tt class="py-name">api</tt> <tt class="py-keyword">import</tt> <tt class="py-name">users</tt> </tt>
-<a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">google</tt><tt class="py-op">.</tt><tt id="link-3" class="py-name"><a title="oauth2client.appengine" class="py-name" href="#" onclick="return doclink('link-3', 'appengine', 'link-0');">appengine</a></tt><tt class="py-op">.</tt><tt id="link-4" class="py-name" targets="Package apiclient.ext=apiclient.ext-module.html"><a title="apiclient.ext" class="py-name" href="#" onclick="return doclink('link-4', 'ext', 'link-4');">ext</a></tt> <tt class="py-keyword">import</tt> <tt class="py-name">db</tt> </tt>
-<a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">google</tt><tt class="py-op">.</tt><tt id="link-5" class="py-name"><a title="oauth2client.appengine" class="py-name" href="#" onclick="return doclink('link-5', 'appengine', 'link-0');">appengine</a></tt><tt class="py-op">.</tt><tt id="link-6" class="py-name"><a title="apiclient.ext" class="py-name" href="#" onclick="return doclink('link-6', 'ext', 'link-4');">ext</a></tt> <tt class="py-keyword">import</tt> <tt class="py-name">webapp</tt> </tt>
-<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">google</tt><tt class="py-op">.</tt><tt id="link-7" class="py-name"><a title="oauth2client.appengine" class="py-name" href="#" onclick="return doclink('link-7', 'appengine', 'link-0');">appengine</a></tt><tt class="py-op">.</tt><tt id="link-8" class="py-name"><a title="apiclient.ext" class="py-name" href="#" onclick="return doclink('link-8', 'ext', 'link-4');">ext</a></tt><tt class="py-op">.</tt><tt class="py-name">webapp</tt><tt class="py-op">.</tt><tt id="link-9" class="py-name" targets="Module oauth2client.util=oauth2client.util-module.html"><a title="oauth2client.util" class="py-name" href="#" onclick="return doclink('link-9', 'util', 'link-9');">util</a></tt> <tt class="py-keyword">import</tt> <tt class="py-name">login_required</tt> </tt>
-<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">google</tt><tt class="py-op">.</tt><tt id="link-10" class="py-name"><a title="oauth2client.appengine" class="py-name" href="#" onclick="return doclink('link-10', 'appengine', 'link-0');">appengine</a></tt><tt class="py-op">.</tt><tt id="link-11" class="py-name"><a title="apiclient.ext" class="py-name" href="#" onclick="return doclink('link-11', 'ext', 'link-4');">ext</a></tt><tt class="py-op">.</tt><tt class="py-name">webapp</tt><tt class="py-op">.</tt><tt id="link-12" class="py-name"><a title="oauth2client.util" class="py-name" href="#" onclick="return doclink('link-12', 'util', 'link-9');">util</a></tt> <tt class="py-keyword">import</tt> <tt class="py-name">run_wsgi_app</tt> </tt>
-<a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-13" class="py-name" targets="Package oauth2client=oauth2client-module.html"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-13', 'oauth2client', 'link-13');">oauth2client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-14" class="py-name" targets="Variable oauth2client.GOOGLE_AUTH_URI=oauth2client-module.html#GOOGLE_AUTH_URI"><a title="oauth2client.GOOGLE_AUTH_URI" class="py-name" href="#" onclick="return doclink('link-14', 'GOOGLE_AUTH_URI', 'link-14');">GOOGLE_AUTH_URI</a></tt> </tt>
-<a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-15" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-15', 'oauth2client', 'link-13');">oauth2client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-16" class="py-name" targets="Variable oauth2client.GOOGLE_REVOKE_URI=oauth2client-module.html#GOOGLE_REVOKE_URI"><a title="oauth2client.GOOGLE_REVOKE_URI" class="py-name" href="#" onclick="return doclink('link-16', 'GOOGLE_REVOKE_URI', 'link-16');">GOOGLE_REVOKE_URI</a></tt> </tt>
-<a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-17" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-17', 'oauth2client', 'link-13');">oauth2client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-18" class="py-name" targets="Variable oauth2client.GOOGLE_TOKEN_URI=oauth2client-module.html#GOOGLE_TOKEN_URI"><a title="oauth2client.GOOGLE_TOKEN_URI" class="py-name" href="#" onclick="return doclink('link-18', 'GOOGLE_TOKEN_URI', 'link-18');">GOOGLE_TOKEN_URI</a></tt> </tt>
-<a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-19" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-19', 'oauth2client', 'link-13');">oauth2client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-20" class="py-name" targets="Module oauth2client.clientsecrets=oauth2client.clientsecrets-module.html"><a title="oauth2client.clientsecrets" class="py-name" href="#" onclick="return doclink('link-20', 'clientsecrets', 'link-20');">clientsecrets</a></tt> </tt>
-<a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-21" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-21', 'oauth2client', 'link-13');">oauth2client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-22" class="py-name"><a title="oauth2client.util" class="py-name" href="#" onclick="return doclink('link-22', 'util', 'link-9');">util</a></tt> </tt>
-<a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-23" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-23', 'oauth2client', 'link-13');">oauth2client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-24" class="py-name" targets="Module oauth2client.xsrfutil=oauth2client.xsrfutil-module.html"><a title="oauth2client.xsrfutil" class="py-name" href="#" onclick="return doclink('link-24', 'xsrfutil', 'link-24');">xsrfutil</a></tt> </tt>
-<a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-25" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-25', 'oauth2client', 'link-13');">oauth2client</a></tt><tt class="py-op">.</tt><tt id="link-26" class="py-name" targets="Module oauth2client.anyjson=oauth2client.anyjson-module.html"><a title="oauth2client.anyjson" class="py-name" href="#" onclick="return doclink('link-26', 'anyjson', 'link-26');">anyjson</a></tt> <tt class="py-keyword">import</tt> <tt class="py-name">simplejson</tt> </tt>
-<a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-27" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-27', 'oauth2client', 'link-13');">oauth2client</a></tt><tt class="py-op">.</tt><tt id="link-28" class="py-name" targets="Module oauth2client.client=oauth2client.client-module.html"><a title="oauth2client.client" class="py-name" href="#" onclick="return doclink('link-28', 'client', 'link-28');">client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-29" class="py-name" targets="Class oauth2client.client.AccessTokenRefreshError=oauth2client.client.AccessTokenRefreshError-class.html"><a title="oauth2client.client.AccessTokenRefreshError" class="py-name" href="#" onclick="return doclink('link-29', 'AccessTokenRefreshError', 'link-29');">AccessTokenRefreshError</a></tt> </tt>
-<a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-30" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-30', 'oauth2client', 'link-13');">oauth2client</a></tt><tt class="py-op">.</tt><tt id="link-31" class="py-name"><a title="oauth2client.client" class="py-name" href="#" onclick="return doclink('link-31', 'client', 'link-28');">client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-32" class="py-name" targets="Class oauth2client.client.AssertionCredentials=oauth2client.client.AssertionCredentials-class.html"><a title="oauth2client.client.AssertionCredentials" class="py-name" href="#" onclick="return doclink('link-32', 'AssertionCredentials', 'link-32');">AssertionCredentials</a></tt> </tt>
-<a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-33" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-33', 'oauth2client', 'link-13');">oauth2client</a></tt><tt class="py-op">.</tt><tt id="link-34" class="py-name"><a title="oauth2client.client" class="py-name" href="#" onclick="return doclink('link-34', 'client', 'link-28');">client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-35" class="py-name" targets="Class oauth2client.client.Credentials=oauth2client.client.Credentials-class.html"><a title="oauth2client.client.Credentials" class="py-name" href="#" onclick="return doclink('link-35', 'Credentials', 'link-35');">Credentials</a></tt> </tt>
-<a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-36" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-36', 'oauth2client', 'link-13');">oauth2client</a></tt><tt class="py-op">.</tt><tt id="link-37" class="py-name"><a title="oauth2client.client" class="py-name" href="#" onclick="return doclink('link-37', 'client', 'link-28');">client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-38" class="py-name" targets="Class oauth2client.client.Flow=oauth2client.client.Flow-class.html"><a title="oauth2client.client.Flow" class="py-name" href="#" onclick="return doclink('link-38', 'Flow', 'link-38');">Flow</a></tt> </tt>
-<a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-39" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-39', 'oauth2client', 'link-13');">oauth2client</a></tt><tt class="py-op">.</tt><tt id="link-40" class="py-name"><a title="oauth2client.client" class="py-name" href="#" onclick="return doclink('link-40', 'client', 'link-28');">client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-41" class="py-name" targets="Class oauth2client.client.OAuth2WebServerFlow=oauth2client.client.OAuth2WebServerFlow-class.html"><a title="oauth2client.client.OAuth2WebServerFlow" class="py-name" href="#" onclick="return doclink('link-41', 'OAuth2WebServerFlow', 'link-41');">OAuth2WebServerFlow</a></tt> </tt>
-<a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-42" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-42', 'oauth2client', 'link-13');">oauth2client</a></tt><tt class="py-op">.</tt><tt id="link-43" class="py-name"><a title="oauth2client.client" class="py-name" href="#" onclick="return doclink('link-43', 'client', 'link-28');">client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-44" class="py-name" targets="Class oauth2client.client.Storage=oauth2client.client.Storage-class.html,Class oauth2client.django_orm.Storage=oauth2client.django_orm.Storage-class.html,Class oauth2client.file.Storage=oauth2client.file.Storage-class.html,Class oauth2client.keyring_storage.Storage=oauth2client.keyring_storage.Storage-class.html"><a title="oauth2client.client.Storage
+<a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">threading</tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">time</tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">google</tt><tt class="py-op">.</tt><tt id="link-0" class="py-name" targets="Module oauth2client.appengine=oauth2client.appengine-module.html"><a title="oauth2client.appengine" class="py-name" href="#" onclick="return doclink('link-0', 'appengine', 'link-0');">appengine</a></tt><tt class="py-op">.</tt><tt class="py-name">api</tt> <tt class="py-keyword">import</tt> <tt class="py-name">app_identity</tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">google</tt><tt class="py-op">.</tt><tt id="link-1" class="py-name"><a title="oauth2client.appengine" class="py-name" href="#" onclick="return doclink('link-1', 'appengine', 'link-0');">appengine</a></tt><tt class="py-op">.</tt><tt class="py-name">api</tt> <tt class="py-keyword">import</tt> <tt class="py-name">memcache</tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">google</tt><tt class="py-op">.</tt><tt id="link-2" class="py-name"><a title="oauth2client.appengine" class="py-name" href="#" onclick="return doclink('link-2', 'appengine', 'link-0');">appengine</a></tt><tt class="py-op">.</tt><tt class="py-name">api</tt> <tt class="py-keyword">import</tt> <tt class="py-name">users</tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">google</tt><tt class="py-op">.</tt><tt id="link-3" class="py-name"><a title="oauth2client.appengine" class="py-name" href="#" onclick="return doclink('link-3', 'appengine', 'link-0');">appengine</a></tt><tt class="py-op">.</tt><tt class="py-name">ext</tt> <tt class="py-keyword">import</tt> <tt class="py-name">db</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">google</tt><tt class="py-op">.</tt><tt id="link-4" class="py-name"><a title="oauth2client.appengine" class="py-name" href="#" onclick="return doclink('link-4', 'appengine', 'link-0');">appengine</a></tt><tt class="py-op">.</tt><tt class="py-name">ext</tt> <tt class="py-keyword">import</tt> <tt class="py-name">webapp</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">google</tt><tt class="py-op">.</tt><tt id="link-5" class="py-name"><a title="oauth2client.appengine" class="py-name" href="#" onclick="return doclink('link-5', 'appengine', 'link-0');">appengine</a></tt><tt class="py-op">.</tt><tt class="py-name">ext</tt><tt class="py-op">.</tt><tt class="py-name">webapp</tt><tt class="py-op">.</tt><tt id="link-6" class="py-name" targets="Module oauth2client.util=oauth2client.util-module.html"><a title="oauth2client.util" class="py-name" href="#" onclick="return doclink('link-6', 'util', 'link-6');">util</a></tt> <tt class="py-keyword">import</tt> <tt class="py-name">login_required</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt class="py-name">google</tt><tt class="py-op">.</tt><tt id="link-7" class="py-name"><a title="oauth2client.appengine" class="py-name" href="#" onclick="return doclink('link-7', 'appengine', 'link-0');">appengine</a></tt><tt class="py-op">.</tt><tt class="py-name">ext</tt><tt class="py-op">.</tt><tt class="py-name">webapp</tt><tt class="py-op">.</tt><tt id="link-8" class="py-name"><a title="oauth2client.util" class="py-name" href="#" onclick="return doclink('link-8', 'util', 'link-6');">util</a></tt> <tt class="py-keyword">import</tt> <tt class="py-name">run_wsgi_app</tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-9" class="py-name" targets="Package oauth2client=oauth2client-module.html"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-9', 'oauth2client', 'link-9');">oauth2client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-10" class="py-name" targets="Variable oauth2client.GOOGLE_AUTH_URI=oauth2client-module.html#GOOGLE_AUTH_URI"><a title="oauth2client.GOOGLE_AUTH_URI" class="py-name" href="#" onclick="return doclink('link-10', 'GOOGLE_AUTH_URI', 'link-10');">GOOGLE_AUTH_URI</a></tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-11" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-11', 'oauth2client', 'link-9');">oauth2client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-12" class="py-name" targets="Variable oauth2client.GOOGLE_REVOKE_URI=oauth2client-module.html#GOOGLE_REVOKE_URI"><a title="oauth2client.GOOGLE_REVOKE_URI" class="py-name" href="#" onclick="return doclink('link-12', 'GOOGLE_REVOKE_URI', 'link-12');">GOOGLE_REVOKE_URI</a></tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-13" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-13', 'oauth2client', 'link-9');">oauth2client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-14" class="py-name" targets="Variable oauth2client.GOOGLE_TOKEN_URI=oauth2client-module.html#GOOGLE_TOKEN_URI"><a title="oauth2client.GOOGLE_TOKEN_URI" class="py-name" href="#" onclick="return doclink('link-14', 'GOOGLE_TOKEN_URI', 'link-14');">GOOGLE_TOKEN_URI</a></tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-15" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-15', 'oauth2client', 'link-9');">oauth2client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-16" class="py-name" targets="Module oauth2client.clientsecrets=oauth2client.clientsecrets-module.html"><a title="oauth2client.clientsecrets" class="py-name" href="#" onclick="return doclink('link-16', 'clientsecrets', 'link-16');">clientsecrets</a></tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-17" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-17', 'oauth2client', 'link-9');">oauth2client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-18" class="py-name"><a title="oauth2client.util" class="py-name" href="#" onclick="return doclink('link-18', 'util', 'link-6');">util</a></tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-19" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-19', 'oauth2client', 'link-9');">oauth2client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-20" class="py-name" targets="Module oauth2client.xsrfutil=oauth2client.xsrfutil-module.html"><a title="oauth2client.xsrfutil" class="py-name" href="#" onclick="return doclink('link-20', 'xsrfutil', 'link-20');">xsrfutil</a></tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-21" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-21', 'oauth2client', 'link-9');">oauth2client</a></tt><tt class="py-op">.</tt><tt id="link-22" class="py-name" targets="Module oauth2client.anyjson=oauth2client.anyjson-module.html"><a title="oauth2client.anyjson" class="py-name" href="#" onclick="return doclink('link-22', 'anyjson', 'link-22');">anyjson</a></tt> <tt class="py-keyword">import</tt> <tt class="py-name">simplejson</tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-23" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-23', 'oauth2client', 'link-9');">oauth2client</a></tt><tt class="py-op">.</tt><tt id="link-24" class="py-name" targets="Module oauth2client.client=oauth2client.client-module.html"><a title="oauth2client.client" class="py-name" href="#" onclick="return doclink('link-24', 'client', 'link-24');">client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-25" class="py-name" targets="Class oauth2client.client.AccessTokenRefreshError=oauth2client.client.AccessTokenRefreshError-class.html"><a title="oauth2client.client.AccessTokenRefreshError" class="py-name" href="#" onclick="return doclink('link-25', 'AccessTokenRefreshError', 'link-25');">AccessTokenRefreshError</a></tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-26" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-26', 'oauth2client', 'link-9');">oauth2client</a></tt><tt class="py-op">.</tt><tt id="link-27" class="py-name"><a title="oauth2client.client" class="py-name" href="#" onclick="return doclink('link-27', 'client', 'link-24');">client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-28" class="py-name" targets="Class oauth2client.client.AssertionCredentials=oauth2client.client.AssertionCredentials-class.html"><a title="oauth2client.client.AssertionCredentials" class="py-name" href="#" onclick="return doclink('link-28', 'AssertionCredentials', 'link-28');">AssertionCredentials</a></tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-29" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-29', 'oauth2client', 'link-9');">oauth2client</a></tt><tt class="py-op">.</tt><tt id="link-30" class="py-name"><a title="oauth2client.client" class="py-name" href="#" onclick="return doclink('link-30', 'client', 'link-24');">client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-31" class="py-name" targets="Class oauth2client.client.Credentials=oauth2client.client.Credentials-class.html"><a title="oauth2client.client.Credentials" class="py-name" href="#" onclick="return doclink('link-31', 'Credentials', 'link-31');">Credentials</a></tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-32" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-32', 'oauth2client', 'link-9');">oauth2client</a></tt><tt class="py-op">.</tt><tt id="link-33" class="py-name"><a title="oauth2client.client" class="py-name" href="#" onclick="return doclink('link-33', 'client', 'link-24');">client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-34" class="py-name" targets="Class oauth2client.client.Flow=oauth2client.client.Flow-class.html"><a title="oauth2client.client.Flow" class="py-name" href="#" onclick="return doclink('link-34', 'Flow', 'link-34');">Flow</a></tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-35" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-35', 'oauth2client', 'link-9');">oauth2client</a></tt><tt class="py-op">.</tt><tt id="link-36" class="py-name"><a title="oauth2client.client" class="py-name" href="#" onclick="return doclink('link-36', 'client', 'link-24');">client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-37" class="py-name" targets="Class oauth2client.client.OAuth2WebServerFlow=oauth2client.client.OAuth2WebServerFlow-class.html"><a title="oauth2client.client.OAuth2WebServerFlow" class="py-name" href="#" onclick="return doclink('link-37', 'OAuth2WebServerFlow', 'link-37');">OAuth2WebServerFlow</a></tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-38" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-38', 'oauth2client', 'link-9');">oauth2client</a></tt><tt class="py-op">.</tt><tt id="link-39" class="py-name"><a title="oauth2client.client" class="py-name" href="#" onclick="return doclink('link-39', 'client', 'link-24');">client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-40" class="py-name" targets="Class oauth2client.client.Storage=oauth2client.client.Storage-class.html,Class oauth2client.django_orm.Storage=oauth2client.django_orm.Storage-class.html,Class oauth2client.file.Storage=oauth2client.file.Storage-class.html,Class oauth2client.keyring_storage.Storage=oauth2client.keyring_storage.Storage-class.html"><a title="oauth2client.client.Storage
oauth2client.django_orm.Storage
oauth2client.file.Storage
-oauth2client.keyring_storage.Storage" class="py-name" href="#" onclick="return doclink('link-44', 'Storage', 'link-44');">Storage</a></tt> </tt>
-<a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"> </tt>
-<a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"><tt class="py-comment"># TODO(dhermes): Resolve import issue.</tt> </tt>
-<a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"><tt class="py-comment"># This is a temporary fix for a Google internal issue.</tt> </tt>
-<a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"> <tt class="py-keyword">from</tt> <tt class="py-name">google</tt><tt class="py-op">.</tt><tt id="link-45" class="py-name"><a title="oauth2client.appengine" class="py-name" href="#" onclick="return doclink('link-45', 'appengine', 'link-0');">appengine</a></tt><tt class="py-op">.</tt><tt id="link-46" class="py-name"><a title="apiclient.ext" class="py-name" href="#" onclick="return doclink('link-46', 'ext', 'link-4');">ext</a></tt> <tt class="py-keyword">import</tt> <tt id="link-47" class="py-name" targets="Variable oauth2client.appengine.ndb=oauth2client.appengine-module.html#ndb"><a title="oauth2client.appengine.ndb" class="py-name" href="#" onclick="return doclink('link-47', 'ndb', 'link-47');">ndb</a></tt> </tt>
-<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>
-<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"> <tt id="link-48" class="py-name"><a title="oauth2client.appengine.ndb" class="py-name" href="#" onclick="return doclink('link-48', 'ndb', 'link-47');">ndb</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"> </tt>
+oauth2client.keyring_storage.Storage" class="py-name" href="#" onclick="return doclink('link-40', 'Storage', 'link-40');">Storage</a></tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"><tt class="py-comment"># TODO(dhermes): Resolve import issue.</tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"><tt class="py-comment"># This is a temporary fix for a Google internal issue.</tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"> <tt class="py-keyword">from</tt> <tt class="py-name">google</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name"><a title="oauth2client.appengine" class="py-name" href="#" onclick="return doclink('link-41', 'appengine', 'link-0');">appengine</a></tt><tt class="py-op">.</tt><tt class="py-name">ext</tt> <tt class="py-keyword">import</tt> <tt id="link-42" class="py-name" targets="Variable oauth2client.appengine.ndb=oauth2client.appengine-module.html#ndb"><a title="oauth2client.appengine.ndb" class="py-name" href="#" onclick="return doclink('link-42', 'ndb', 'link-42');">ndb</a></tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"> <tt id="link-43" class="py-name"><a title="oauth2client.appengine.ndb" class="py-name" href="#" onclick="return doclink('link-43', 'ndb', 'link-42');">ndb</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
<a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"> </tt>
-<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"><tt id="link-49" class="py-name" targets="Variable apiclient.discovery.logger=apiclient.discovery-module.html#logger,Variable oauth2client.appengine.logger=oauth2client.appengine-module.html#logger,Variable oauth2client.client.logger=oauth2client.client-module.html#logger,Variable oauth2client.crypt.logger=oauth2client.crypt-module.html#logger,Variable oauth2client.gce.logger=oauth2client.gce-module.html#logger,Variable oauth2client.locked_file.logger=oauth2client.locked_file-module.html#logger,Variable oauth2client.multistore_file.logger=oauth2client.multistore_file-module.html#logger,Variable oauth2client.util.logger=oauth2client.util-module.html#logger"><a title="apiclient.discovery.logger
+<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"><tt id="link-44" class="py-name" targets="Variable apiclient.discovery.logger=apiclient.discovery-module.html#logger,Variable oauth2client.appengine.logger=oauth2client.appengine-module.html#logger,Variable oauth2client.client.logger=oauth2client.client-module.html#logger,Variable oauth2client.crypt.logger=oauth2client.crypt-module.html#logger,Variable oauth2client.gce.logger=oauth2client.gce-module.html#logger,Variable oauth2client.locked_file.logger=oauth2client.locked_file-module.html#logger,Variable oauth2client.multistore_file.logger=oauth2client.multistore_file-module.html#logger,Variable oauth2client.util.logger=oauth2client.util-module.html#logger"><a title="apiclient.discovery.logger
oauth2client.appengine.logger
oauth2client.client.logger
oauth2client.crypt.logger
oauth2client.gce.logger
oauth2client.locked_file.logger
oauth2client.multistore_file.logger
-oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-49', 'logger', 'link-49');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-name">__name__</tt><tt class="py-op">)</tt> </tt>
-<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"> </tt>
-<a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"><tt id="link-50" class="py-name" targets="Variable oauth2client.appengine.OAUTH2CLIENT_NAMESPACE=oauth2client.appengine-module.html#OAUTH2CLIENT_NAMESPACE"><a title="oauth2client.appengine.OAUTH2CLIENT_NAMESPACE" class="py-name" href="#" onclick="return doclink('link-50', 'OAUTH2CLIENT_NAMESPACE', 'link-50');">OAUTH2CLIENT_NAMESPACE</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'oauth2client#ns'</tt> </tt>
-<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"> </tt>
-<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"><tt id="link-51" class="py-name" targets="Variable oauth2client.appengine.XSRF_MEMCACHE_ID=oauth2client.appengine-module.html#XSRF_MEMCACHE_ID"><a title="oauth2client.appengine.XSRF_MEMCACHE_ID" class="py-name" href="#" onclick="return doclink('link-51', 'XSRF_MEMCACHE_ID', 'link-51');">XSRF_MEMCACHE_ID</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'xsrf_secret_key'</tt> </tt>
-<a name="_safe_html"></a><div id="_safe_html-def"><a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"> </tt>
-<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"> </tt>
-<a name="L66"></a><tt class="py-lineno"> 66</tt> <a class="py-toggle" href="#" id="_safe_html-toggle" onclick="return toggle('_safe_html');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine-module.html#_safe_html">_safe_html</a><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_safe_html-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_safe_html-expanded"><a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"> <tt class="py-docstring">"""Escape text to make it safe to display.</tt> </tt>
-<a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"><tt class="py-docstring"> s: string, The text to escape.</tt> </tt>
-<a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"><tt class="py-docstring"> The escaped text as a string.</tt> </tt>
-<a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">cgi</tt><tt class="py-op">.</tt><tt class="py-name">escape</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">,</tt> <tt class="py-name">quote</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">"'"</tt><tt class="py-op">,</tt> <tt class="py-string">'&#39;'</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"> </tt>
-<a name="InvalidClientSecretsError"></a><div id="InvalidClientSecretsError-def"><a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"> </tt>
-<a name="L78"></a><tt class="py-lineno"> 78</tt> <a class="py-toggle" href="#" id="InvalidClientSecretsError-toggle" onclick="return toggle('InvalidClientSecretsError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.appengine.InvalidClientSecretsError-class.html">InvalidClientSecretsError</a><tt class="py-op">(</tt><tt class="py-base-class">Exception</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="InvalidClientSecretsError-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="InvalidClientSecretsError-expanded"><a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"> <tt class="py-docstring">"""The client_secrets.json file is malformed or missing required fields."""</tt> </tt>
-</div><a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"> </tt>
-<a name="InvalidXsrfTokenError"></a><div id="InvalidXsrfTokenError-def"><a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"> </tt>
-<a name="L82"></a><tt class="py-lineno"> 82</tt> <a class="py-toggle" href="#" id="InvalidXsrfTokenError-toggle" onclick="return toggle('InvalidXsrfTokenError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.appengine.InvalidXsrfTokenError-class.html">InvalidXsrfTokenError</a><tt class="py-op">(</tt><tt class="py-base-class">Exception</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="InvalidXsrfTokenError-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="InvalidXsrfTokenError-expanded"><a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"> <tt class="py-docstring">"""The XSRF token is invalid or expired."""</tt> </tt>
-</div><a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"> </tt>
-<a name="SiteXsrfSecretKey"></a><div id="SiteXsrfSecretKey-def"><a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"> </tt>
-<a name="L86"></a><tt class="py-lineno"> 86</tt> <a class="py-toggle" href="#" id="SiteXsrfSecretKey-toggle" onclick="return toggle('SiteXsrfSecretKey');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.appengine.SiteXsrfSecretKey-class.html">SiteXsrfSecretKey</a><tt class="py-op">(</tt><tt class="py-base-class">db</tt><tt class="py-op">.</tt><tt class="py-base-class">Model</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="SiteXsrfSecretKey-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="SiteXsrfSecretKey-expanded"><a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"> <tt class="py-docstring">"""Storage for the sites XSRF secret key.</tt> </tt>
-<a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"><tt class="py-docstring"> There will only be one instance stored of this model, the one used for the</tt> </tt>
-<a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"><tt class="py-docstring"> site.</tt> </tt>
-<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"> <tt id="link-52" class="py-name" targets="Variable oauth2client.appengine.SiteXsrfSecretKey.secret=oauth2client.appengine.SiteXsrfSecretKey-class.html#secret,Variable oauth2client.appengine.SiteXsrfSecretKeyNDB.secret=oauth2client.appengine.SiteXsrfSecretKeyNDB-class.html#secret"><a title="oauth2client.appengine.SiteXsrfSecretKey.secret
-oauth2client.appengine.SiteXsrfSecretKeyNDB.secret" class="py-name" href="#" onclick="return doclink('link-52', 'secret', 'link-52');">secret</a></tt> <tt class="py-op">=</tt> <tt class="py-name">db</tt><tt class="py-op">.</tt><tt class="py-name">StringProperty</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"> </tt>
-<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"><tt class="py-keyword">if</tt> <tt id="link-53" class="py-name"><a title="oauth2client.appengine.ndb" class="py-name" href="#" onclick="return doclink('link-53', 'ndb', 'link-47');">ndb</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="SiteXsrfSecretKeyNDB"></a><div id="SiteXsrfSecretKeyNDB-def"><a name="L95"></a><tt class="py-lineno"> 95</tt> <a class="py-toggle" href="#" id="SiteXsrfSecretKeyNDB-toggle" onclick="return toggle('SiteXsrfSecretKeyNDB');">-</a><tt class="py-line"> <tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.appengine.SiteXsrfSecretKeyNDB-class.html">SiteXsrfSecretKeyNDB</a><tt class="py-op">(</tt><tt class="py-base-class">ndb</tt><tt class="py-op">.</tt><tt class="py-base-class">Model</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="SiteXsrfSecretKeyNDB-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="SiteXsrfSecretKeyNDB-expanded"><a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"> <tt class="py-docstring">"""NDB Model for storage for the sites XSRF secret key.</tt> </tt>
-<a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"><tt class="py-docstring"> Since this model uses the same kind as SiteXsrfSecretKey, it can be used</tt> </tt>
-<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"><tt class="py-docstring"> interchangeably. This simply provides an NDB model for interacting with the</tt> </tt>
-<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"><tt class="py-docstring"> same data the DB model interacts with.</tt> </tt>
-<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"><tt class="py-docstring"> There should only be one instance stored of this model, the one used for the</tt> </tt>
-<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"><tt class="py-docstring"> site.</tt> </tt>
-<a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"> <tt id="link-54" class="py-name"><a title="oauth2client.appengine.SiteXsrfSecretKey.secret
-oauth2client.appengine.SiteXsrfSecretKeyNDB.secret" class="py-name" href="#" onclick="return doclink('link-54', 'secret', 'link-52');">secret</a></tt> <tt class="py-op">=</tt> <tt id="link-55" class="py-name"><a title="oauth2client.appengine.ndb" class="py-name" href="#" onclick="return doclink('link-55', 'ndb', 'link-47');">ndb</a></tt><tt class="py-op">.</tt><tt class="py-name">StringProperty</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"> </tt>
-<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">classmethod</tt> </tt>
-<a name="SiteXsrfSecretKeyNDB._get_kind"></a><div id="SiteXsrfSecretKeyNDB._get_kind-def"><a name="L108"></a><tt class="py-lineno">108</tt> <a class="py-toggle" href="#" id="SiteXsrfSecretKeyNDB._get_kind-toggle" onclick="return toggle('SiteXsrfSecretKeyNDB._get_kind');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.SiteXsrfSecretKeyNDB-class.html#_get_kind">_get_kind</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="SiteXsrfSecretKeyNDB._get_kind-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="SiteXsrfSecretKeyNDB._get_kind-expanded"><a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"> <tt class="py-docstring">"""Return the kind name for this class."""</tt> </tt>
-<a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">'SiteXsrfSecretKey'</tt> </tt>
-</div></div><a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"> </tt>
-<a name="_generate_new_xsrf_secret_key"></a><div id="_generate_new_xsrf_secret_key-def"><a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"> </tt>
-<a name="L113"></a><tt class="py-lineno">113</tt> <a class="py-toggle" href="#" id="_generate_new_xsrf_secret_key-toggle" onclick="return toggle('_generate_new_xsrf_secret_key');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine-module.html#_generate_new_xsrf_secret_key">_generate_new_xsrf_secret_key</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_generate_new_xsrf_secret_key-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_generate_new_xsrf_secret_key-expanded"><a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"> <tt class="py-docstring">"""Returns a random XSRF secret key.</tt> </tt>
-<a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">urandom</tt><tt class="py-op">(</tt><tt class="py-number">16</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">"hex"</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"> </tt>
-<a name="xsrf_secret_key"></a><div id="xsrf_secret_key-def"><a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"> </tt>
-<a name="L119"></a><tt class="py-lineno">119</tt> <a class="py-toggle" href="#" id="xsrf_secret_key-toggle" onclick="return toggle('xsrf_secret_key');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine-module.html#xsrf_secret_key">xsrf_secret_key</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="xsrf_secret_key-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="xsrf_secret_key-expanded"><a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"> <tt class="py-docstring">"""Return the secret key for use for XSRF protection.</tt> </tt>
-<a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"><tt class="py-docstring"> If the Site entity does not have a secret key, this method will also create</tt> </tt>
-<a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"><tt class="py-docstring"> one and persist it.</tt> </tt>
-<a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"><tt class="py-docstring"> The secret key.</tt> </tt>
-<a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"> <tt id="link-56" class="py-name"><a title="oauth2client.appengine.SiteXsrfSecretKey.secret
-oauth2client.appengine.SiteXsrfSecretKeyNDB.secret" class="py-name" href="#" onclick="return doclink('link-56', 'secret', 'link-52');">secret</a></tt> <tt class="py-op">=</tt> <tt class="py-name">memcache</tt><tt class="py-op">.</tt><tt id="link-57" class="py-name" targets="Method apiclient.schema.Schemas.get()=apiclient.schema.Schemas-class.html#get,Method oauth2client.client.MemoryCache.get()=oauth2client.client.MemoryCache-class.html#get,Method oauth2client.client.Storage.get()=oauth2client.client.Storage-class.html#get"><a title="apiclient.schema.Schemas.get
+oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-44', 'logger', 'link-44');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-name">__name__</tt><tt class="py-op">)</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"><tt id="link-45" class="py-name" targets="Variable oauth2client.appengine.OAUTH2CLIENT_NAMESPACE=oauth2client.appengine-module.html#OAUTH2CLIENT_NAMESPACE"><a title="oauth2client.appengine.OAUTH2CLIENT_NAMESPACE" class="py-name" href="#" onclick="return doclink('link-45', 'OAUTH2CLIENT_NAMESPACE', 'link-45');">OAUTH2CLIENT_NAMESPACE</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'oauth2client#ns'</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"><tt id="link-46" class="py-name" targets="Variable oauth2client.appengine.XSRF_MEMCACHE_ID=oauth2client.appengine-module.html#XSRF_MEMCACHE_ID"><a title="oauth2client.appengine.XSRF_MEMCACHE_ID" class="py-name" href="#" onclick="return doclink('link-46', 'XSRF_MEMCACHE_ID', 'link-46');">XSRF_MEMCACHE_ID</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'xsrf_secret_key'</tt> </tt>
+<a name="_safe_html"></a><div id="_safe_html-def"><a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt> <a class="py-toggle" href="#" id="_safe_html-toggle" onclick="return toggle('_safe_html');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine-module.html#_safe_html">_safe_html</a><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_safe_html-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_safe_html-expanded"><a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"> <tt class="py-docstring">"""Escape text to make it safe to display.</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"><tt class="py-docstring"> s: string, The text to escape.</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"><tt class="py-docstring"> The escaped text as a string.</tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">cgi</tt><tt class="py-op">.</tt><tt class="py-name">escape</tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">,</tt> <tt class="py-name">quote</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">replace</tt><tt class="py-op">(</tt><tt class="py-string">"'"</tt><tt class="py-op">,</tt> <tt class="py-string">'&#39;'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"> </tt>
+<a name="InvalidClientSecretsError"></a><div id="InvalidClientSecretsError-def"><a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt> <a class="py-toggle" href="#" id="InvalidClientSecretsError-toggle" onclick="return toggle('InvalidClientSecretsError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.appengine.InvalidClientSecretsError-class.html">InvalidClientSecretsError</a><tt class="py-op">(</tt><tt class="py-base-class">Exception</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="InvalidClientSecretsError-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="InvalidClientSecretsError-expanded"><a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"> <tt class="py-docstring">"""The client_secrets.json file is malformed or missing required fields."""</tt> </tt>
+</div><a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"> </tt>
+<a name="InvalidXsrfTokenError"></a><div id="InvalidXsrfTokenError-def"><a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt> <a class="py-toggle" href="#" id="InvalidXsrfTokenError-toggle" onclick="return toggle('InvalidXsrfTokenError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.appengine.InvalidXsrfTokenError-class.html">InvalidXsrfTokenError</a><tt class="py-op">(</tt><tt class="py-base-class">Exception</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="InvalidXsrfTokenError-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="InvalidXsrfTokenError-expanded"><a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"> <tt class="py-docstring">"""The XSRF token is invalid or expired."""</tt> </tt>
+</div><a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"> </tt>
+<a name="SiteXsrfSecretKey"></a><div id="SiteXsrfSecretKey-def"><a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt> <a class="py-toggle" href="#" id="SiteXsrfSecretKey-toggle" onclick="return toggle('SiteXsrfSecretKey');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.appengine.SiteXsrfSecretKey-class.html">SiteXsrfSecretKey</a><tt class="py-op">(</tt><tt class="py-base-class">db</tt><tt class="py-op">.</tt><tt class="py-base-class">Model</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SiteXsrfSecretKey-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="SiteXsrfSecretKey-expanded"><a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"> <tt class="py-docstring">"""Storage for the sites XSRF secret key.</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"><tt class="py-docstring"> There will only be one instance stored of this model, the one used for the</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"><tt class="py-docstring"> site.</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"> <tt id="link-47" class="py-name" targets="Variable oauth2client.appengine.SiteXsrfSecretKey.secret=oauth2client.appengine.SiteXsrfSecretKey-class.html#secret,Variable oauth2client.appengine.SiteXsrfSecretKeyNDB.secret=oauth2client.appengine.SiteXsrfSecretKeyNDB-class.html#secret"><a title="oauth2client.appengine.SiteXsrfSecretKey.secret
+oauth2client.appengine.SiteXsrfSecretKeyNDB.secret" class="py-name" href="#" onclick="return doclink('link-47', 'secret', 'link-47');">secret</a></tt> <tt class="py-op">=</tt> <tt class="py-name">db</tt><tt class="py-op">.</tt><tt class="py-name">StringProperty</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"><tt class="py-keyword">if</tt> <tt id="link-48" class="py-name"><a title="oauth2client.appengine.ndb" class="py-name" href="#" onclick="return doclink('link-48', 'ndb', 'link-42');">ndb</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="SiteXsrfSecretKeyNDB"></a><div id="SiteXsrfSecretKeyNDB-def"><a name="L96"></a><tt class="py-lineno"> 96</tt> <a class="py-toggle" href="#" id="SiteXsrfSecretKeyNDB-toggle" onclick="return toggle('SiteXsrfSecretKeyNDB');">-</a><tt class="py-line"> <tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.appengine.SiteXsrfSecretKeyNDB-class.html">SiteXsrfSecretKeyNDB</a><tt class="py-op">(</tt><tt class="py-base-class">ndb</tt><tt class="py-op">.</tt><tt class="py-base-class">Model</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SiteXsrfSecretKeyNDB-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="SiteXsrfSecretKeyNDB-expanded"><a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"> <tt class="py-docstring">"""NDB Model for storage for the sites XSRF secret key.</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"><tt class="py-docstring"> Since this model uses the same kind as SiteXsrfSecretKey, it can be used</tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"><tt class="py-docstring"> interchangeably. This simply provides an NDB model for interacting with the</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"><tt class="py-docstring"> same data the DB model interacts with.</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"><tt class="py-docstring"> There should only be one instance stored of this model, the one used for the</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"><tt class="py-docstring"> site.</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"> <tt id="link-49" class="py-name"><a title="oauth2client.appengine.SiteXsrfSecretKey.secret
+oauth2client.appengine.SiteXsrfSecretKeyNDB.secret" class="py-name" href="#" onclick="return doclink('link-49', 'secret', 'link-47');">secret</a></tt> <tt class="py-op">=</tt> <tt id="link-50" class="py-name"><a title="oauth2client.appengine.ndb" class="py-name" href="#" onclick="return doclink('link-50', 'ndb', 'link-42');">ndb</a></tt><tt class="py-op">.</tt><tt class="py-name">StringProperty</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">classmethod</tt> </tt>
+<a name="SiteXsrfSecretKeyNDB._get_kind"></a><div id="SiteXsrfSecretKeyNDB._get_kind-def"><a name="L109"></a><tt class="py-lineno">109</tt> <a class="py-toggle" href="#" id="SiteXsrfSecretKeyNDB._get_kind-toggle" onclick="return toggle('SiteXsrfSecretKeyNDB._get_kind');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.SiteXsrfSecretKeyNDB-class.html#_get_kind">_get_kind</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="SiteXsrfSecretKeyNDB._get_kind-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="SiteXsrfSecretKeyNDB._get_kind-expanded"><a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"> <tt class="py-docstring">"""Return the kind name for this class."""</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">'SiteXsrfSecretKey'</tt> </tt>
+</div></div><a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"> </tt>
+<a name="_generate_new_xsrf_secret_key"></a><div id="_generate_new_xsrf_secret_key-def"><a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt> <a class="py-toggle" href="#" id="_generate_new_xsrf_secret_key-toggle" onclick="return toggle('_generate_new_xsrf_secret_key');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine-module.html#_generate_new_xsrf_secret_key">_generate_new_xsrf_secret_key</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_generate_new_xsrf_secret_key-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_generate_new_xsrf_secret_key-expanded"><a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> <tt class="py-docstring">"""Returns a random XSRF secret key.</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">urandom</tt><tt class="py-op">(</tt><tt class="py-number">16</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">"hex"</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"> </tt>
+<a name="xsrf_secret_key"></a><div id="xsrf_secret_key-def"><a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt> <a class="py-toggle" href="#" id="xsrf_secret_key-toggle" onclick="return toggle('xsrf_secret_key');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine-module.html#xsrf_secret_key">xsrf_secret_key</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="xsrf_secret_key-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="xsrf_secret_key-expanded"><a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"> <tt class="py-docstring">"""Return the secret key for use for XSRF protection.</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"><tt class="py-docstring"> If the Site entity does not have a secret key, this method will also create</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"><tt class="py-docstring"> one and persist it.</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"><tt class="py-docstring"> The secret key.</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"> <tt id="link-51" class="py-name"><a title="oauth2client.appengine.SiteXsrfSecretKey.secret
+oauth2client.appengine.SiteXsrfSecretKeyNDB.secret" class="py-name" href="#" onclick="return doclink('link-51', 'secret', 'link-47');">secret</a></tt> <tt class="py-op">=</tt> <tt class="py-name">memcache</tt><tt class="py-op">.</tt><tt id="link-52" class="py-name" targets="Method apiclient.schema.Schemas.get()=apiclient.schema.Schemas-class.html#get,Method oauth2client.client.MemoryCache.get()=oauth2client.client.MemoryCache-class.html#get,Method oauth2client.client.Storage.get()=oauth2client.client.Storage-class.html#get"><a title="apiclient.schema.Schemas.get
oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-57', 'get', 'link-57');">get</a></tt><tt class="py-op">(</tt><tt id="link-58" class="py-name"><a title="oauth2client.appengine.XSRF_MEMCACHE_ID" class="py-name" href="#" onclick="return doclink('link-58', 'XSRF_MEMCACHE_ID', 'link-51');">XSRF_MEMCACHE_ID</a></tt><tt class="py-op">,</tt> <tt class="py-name">namespace</tt><tt class="py-op">=</tt><tt id="link-59" class="py-name"><a title="oauth2client.appengine.OAUTH2CLIENT_NAMESPACE" class="py-name" href="#" onclick="return doclink('link-59', 'OAUTH2CLIENT_NAMESPACE', 'link-50');">OAUTH2CLIENT_NAMESPACE</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-60" class="py-name"><a title="oauth2client.appengine.SiteXsrfSecretKey.secret
-oauth2client.appengine.SiteXsrfSecretKeyNDB.secret" class="py-name" href="#" onclick="return doclink('link-60', 'secret', 'link-52');">secret</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"> <tt class="py-comment"># Load the one and only instance of SiteXsrfSecretKey.</tt> </tt>
-<a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"> <tt id="link-61" class="py-name" targets="Module apiclient.model=apiclient.model-module.html"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-61', 'model', 'link-61');">model</a></tt> <tt class="py-op">=</tt> <tt id="link-62" class="py-name" targets="Class oauth2client.appengine.SiteXsrfSecretKey=oauth2client.appengine.SiteXsrfSecretKey-class.html"><a title="oauth2client.appengine.SiteXsrfSecretKey" class="py-name" href="#" onclick="return doclink('link-62', 'SiteXsrfSecretKey', 'link-62');">SiteXsrfSecretKey</a></tt><tt class="py-op">.</tt><tt class="py-name">get_or_insert</tt><tt class="py-op">(</tt><tt class="py-name">key_name</tt><tt class="py-op">=</tt><tt class="py-string">'site'</tt><tt class="py-op">)</tt> </tt>
-<a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-63" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-63', 'model', 'link-61');">model</a></tt><tt class="py-op">.</tt><tt id="link-64" class="py-name"><a title="oauth2client.appengine.SiteXsrfSecretKey.secret
-oauth2client.appengine.SiteXsrfSecretKeyNDB.secret" class="py-name" href="#" onclick="return doclink('link-64', 'secret', 'link-52');">secret</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"> <tt id="link-65" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-65', 'model', 'link-61');">model</a></tt><tt class="py-op">.</tt><tt id="link-66" class="py-name"><a title="oauth2client.appengine.SiteXsrfSecretKey.secret
-oauth2client.appengine.SiteXsrfSecretKeyNDB.secret" class="py-name" href="#" onclick="return doclink('link-66', 'secret', 'link-52');">secret</a></tt> <tt class="py-op">=</tt> <tt id="link-67" class="py-name" targets="Function oauth2client.appengine._generate_new_xsrf_secret_key()=oauth2client.appengine-module.html#_generate_new_xsrf_secret_key"><a title="oauth2client.appengine._generate_new_xsrf_secret_key" class="py-name" href="#" onclick="return doclink('link-67', '_generate_new_xsrf_secret_key', 'link-67');">_generate_new_xsrf_secret_key</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"> <tt id="link-68" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-68', 'model', 'link-61');">model</a></tt><tt class="py-op">.</tt><tt id="link-69" class="py-name" targets="Method oauth2client.client.Storage.put()=oauth2client.client.Storage-class.html#put"><a title="oauth2client.client.Storage.put" class="py-name" href="#" onclick="return doclink('link-69', 'put', 'link-69');">put</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"> <tt id="link-70" class="py-name"><a title="oauth2client.appengine.SiteXsrfSecretKey.secret
-oauth2client.appengine.SiteXsrfSecretKeyNDB.secret" class="py-name" href="#" onclick="return doclink('link-70', 'secret', 'link-52');">secret</a></tt> <tt class="py-op">=</tt> <tt id="link-71" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-71', 'model', 'link-61');">model</a></tt><tt class="py-op">.</tt><tt id="link-72" class="py-name"><a title="oauth2client.appengine.SiteXsrfSecretKey.secret
-oauth2client.appengine.SiteXsrfSecretKeyNDB.secret" class="py-name" href="#" onclick="return doclink('link-72', 'secret', 'link-52');">secret</a></tt> </tt>
-<a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"> <tt class="py-name">memcache</tt><tt class="py-op">.</tt><tt id="link-73" class="py-name" targets="Method apiclient.http.BatchHttpRequest.add()=apiclient.http.BatchHttpRequest-class.html#add"><a title="apiclient.http.BatchHttpRequest.add" class="py-name" href="#" onclick="return doclink('link-73', 'add', 'link-73');">add</a></tt><tt class="py-op">(</tt><tt id="link-74" class="py-name"><a title="oauth2client.appengine.XSRF_MEMCACHE_ID" class="py-name" href="#" onclick="return doclink('link-74', 'XSRF_MEMCACHE_ID', 'link-51');">XSRF_MEMCACHE_ID</a></tt><tt class="py-op">,</tt> <tt id="link-75" class="py-name"><a title="oauth2client.appengine.SiteXsrfSecretKey.secret
-oauth2client.appengine.SiteXsrfSecretKeyNDB.secret" class="py-name" href="#" onclick="return doclink('link-75', 'secret', 'link-52');">secret</a></tt><tt class="py-op">,</tt> <tt class="py-name">namespace</tt><tt class="py-op">=</tt><tt id="link-76" class="py-name"><a title="oauth2client.appengine.OAUTH2CLIENT_NAMESPACE" class="py-name" href="#" onclick="return doclink('link-76', 'OAUTH2CLIENT_NAMESPACE', 'link-50');">OAUTH2CLIENT_NAMESPACE</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"> </tt>
-<a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt id="link-77" class="py-name"><a title="oauth2client.appengine.SiteXsrfSecretKey.secret
-oauth2client.appengine.SiteXsrfSecretKeyNDB.secret" class="py-name" href="#" onclick="return doclink('link-77', 'secret', 'link-52');">secret</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"> </tt>
-<a name="AppAssertionCredentials"></a><div id="AppAssertionCredentials-def"><a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"> </tt>
-<a name="L141"></a><tt class="py-lineno">141</tt> <a class="py-toggle" href="#" id="AppAssertionCredentials-toggle" onclick="return toggle('AppAssertionCredentials');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.appengine.AppAssertionCredentials-class.html">AppAssertionCredentials</a><tt class="py-op">(</tt><tt class="py-base-class">AssertionCredentials</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="AppAssertionCredentials-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="AppAssertionCredentials-expanded"><a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"> <tt class="py-docstring">"""Credentials object for App Engine Assertion Grants</tt> </tt>
-<a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"><tt class="py-docstring"> This object will allow an App Engine application to identify itself to Google</tt> </tt>
-<a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"><tt class="py-docstring"> and other OAuth 2.0 servers that can verify assertions. It can be used for the</tt> </tt>
-<a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"><tt class="py-docstring"> purpose of accessing data stored under an account assigned to the App Engine</tt> </tt>
-<a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"><tt class="py-docstring"> application itself.</tt> </tt>
-<a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"><tt class="py-docstring"> This credential does not require a flow to instantiate because it represents</tt> </tt>
-<a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"><tt class="py-docstring"> a two legged flow, and therefore has all of the required information to</tt> </tt>
-<a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"><tt class="py-docstring"> generate and refresh its own access tokens.</tt> </tt>
-<a name="L152"></a><tt class="py-lineno">152</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"> </tt>
-<a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-78" class="py-name" targets="Function oauth2client.util.positional()=oauth2client.util-module.html#positional"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-78', 'positional', 'link-78');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
-<a name="AppAssertionCredentials.__init__"></a><div id="AppAssertionCredentials.__init__-def"><a name="L155"></a><tt class="py-lineno">155</tt> <a class="py-toggle" href="#" id="AppAssertionCredentials.__init__-toggle" onclick="return toggle('AppAssertionCredentials.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.AppAssertionCredentials-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">scope</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="AppAssertionCredentials.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="AppAssertionCredentials.__init__-expanded"><a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"> <tt class="py-docstring">"""Constructor for AppAssertionCredentials</tt> </tt>
-<a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L158"></a><tt class="py-lineno">158</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"><tt class="py-docstring"> scope: string or iterable of strings, scope(s) of the credentials being</tt> </tt>
-<a name="L160"></a><tt class="py-lineno">160</tt> <tt class="py-line"><tt class="py-docstring"> requested.</tt> </tt>
-<a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">scope</tt> <tt class="py-op">=</tt> <tt id="link-79" class="py-name"><a title="oauth2client.util" class="py-name" href="#" onclick="return doclink('link-79', 'util', 'link-9');">util</a></tt><tt class="py-op">.</tt><tt id="link-80" class="py-name" targets="Function oauth2client.util.scopes_to_string()=oauth2client.util-module.html#scopes_to_string"><a title="oauth2client.util.scopes_to_string" class="py-name" href="#" onclick="return doclink('link-80', 'scopes_to_string', 'link-80');">scopes_to_string</a></tt><tt class="py-op">(</tt><tt class="py-name">scope</tt><tt class="py-op">)</tt> </tt>
-<a name="L163"></a><tt class="py-lineno">163</tt> <tt class="py-line"> </tt>
-<a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"> <tt class="py-comment"># Assertion type is no longer used, but still in the parent class signature.</tt> </tt>
-<a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-81" class="py-name" targets="Class oauth2client.appengine.AppAssertionCredentials=oauth2client.appengine.AppAssertionCredentials-class.html,Class oauth2client.gce.AppAssertionCredentials=oauth2client.gce.AppAssertionCredentials-class.html"><a title="oauth2client.appengine.AppAssertionCredentials
-oauth2client.gce.AppAssertionCredentials" class="py-name" href="#" onclick="return doclink('link-81', 'AppAssertionCredentials', 'link-81');">AppAssertionCredentials</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-82" class="py-name" targets="Method apiclient.discovery.Resource.__init__()=apiclient.discovery.Resource-class.html#__init__,Method apiclient.discovery.ResourceMethodParameters.__init__()=apiclient.discovery.ResourceMethodParameters-class.html#__init__,Method apiclient.errors.BatchError.__init__()=apiclient.errors.BatchError-class.html#__init__,Method apiclient.errors.HttpError.__init__()=apiclient.errors.HttpError-class.html#__init__,Method apiclient.errors.UnexpectedBodyError.__init__()=apiclient.errors.UnexpectedBodyError-class.html#__init__,Method apiclient.errors.UnexpectedMethodError.__init__()=apiclient.errors.UnexpectedMethodError-class.html#__init__,Method apiclient.http.BatchHttpRequest.__init__()=apiclient.http.BatchHttpRequest-class.html#__init__,Method apiclient.http.HttpMock.__init__()=apiclient.http.HttpMock-class.html#__init__,Method apiclient.http.HttpMockSequence.__init__()=apiclient.http.HttpMockSequence-class.html#__init__,Method apiclient.http.HttpRequest.__init__()=apiclient.http.HttpRequest-class.html#__init__,Method apiclient.http.HttpRequestMock.__init__()=apiclient.http.HttpRequestMock-class.html#__init__,Method apiclient.http.MediaDownloadProgress.__init__()=apiclient.http.MediaDownloadProgress-class.html#__init__,Method apiclient.http.MediaFileUpload.__init__()=apiclient.http.MediaFileUpload-class.html#__init__,Method apiclient.http.MediaInMemoryUpload.__init__()=apiclient.http.MediaInMemoryUpload-class.html#__init__,Method apiclient.http.MediaIoBaseDownload.__init__()=apiclient.http.MediaIoBaseDownload-class.html#__init__,Method apiclient.http.MediaIoBaseUpload.__init__()=apiclient.http.MediaIoBaseUpload-class.html#__init__,Method apiclient.http.MediaUploadProgress.__init__()=apiclient.http.MediaUploadProgress-class.html#__init__,Method apiclient.http.RequestMockBuilder.__init__()=apiclient.http.RequestMockBuilder-class.html#__init__,Method apiclient.http._StreamSlice.__init__()=apiclient.http._StreamSlice-class.html#__init__,Method apiclient.model.JsonModel.__init__()=apiclient.model.JsonModel-class.html#__init__,Method apiclient.model.ProtocolBufferModel.__init__()=apiclient.model.ProtocolBufferModel-class.html#__init__,Method apiclient.push.Channel.__init__()=apiclient.push.Channel-class.html#__init__,Method apiclient.push.Headers.__init__()=apiclient.push.Headers-class.html#__init__,Method apiclient.push.Subscription.__init__()=apiclient.push.Subscription-class.html#__init__,Method apiclient.push.WebhookChannel.__init__()=apiclient.push.WebhookChannel-class.html#__init__,Method apiclient.schema.Schemas.__init__()=apiclient.schema.Schemas-class.html#__init__,Method apiclient.schema._SchemaToStruct.__init__()=apiclient.schema._SchemaToStruct-class.html#__init__,Method oauth2client.appengine.AppAssertionCredentials.__init__()=oauth2client.appengine.AppAssertionCredentials-class.html#__init__,Method oauth2client.appengine.OAuth2Decorator.__init__()=oauth2client.appengine.OAuth2Decorator-class.html#__init__,Method oauth2client.appengine.OAuth2DecoratorFromClientSecrets.__init__()=oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html#__init__,Method oauth2client.appengine.StorageByKeyName.__init__()=oauth2client.appengine.StorageByKeyName-class.html#__init__,Method oauth2client.client.AccessTokenCredentials.__init__()=oauth2client.client.AccessTokenCredentials-class.html#__init__,Method oauth2client.client.AssertionCredentials.__init__()=oauth2client.client.AssertionCredentials-class.html#__init__,Method oauth2client.client.MemoryCache.__init__()=oauth2client.client.MemoryCache-class.html#__init__,Method oauth2client.client.OAuth2Credentials.__init__()=oauth2client.client.OAuth2Credentials-class.html#__init__,Method oauth2client.client.OAuth2WebServerFlow.__init__()=oauth2client.client.OAuth2WebServerFlow-class.html#__init__,Method oauth2client.client.SignedJwtAssertionCredentials.__init__()=oauth2client.client.SignedJwtAssertionCredentials-class.html#__init__,Method oauth2client.django_orm.CredentialsField.__init__()=oauth2client.django_orm.CredentialsField-class.html#__init__,Method oauth2client.django_orm.FlowField.__init__()=oauth2client.django_orm.FlowField-class.html#__init__,Method oauth2client.django_orm.Storage.__init__()=oauth2client.django_orm.Storage-class.html#__init__,Method oauth2client.file.Storage.__init__()=oauth2client.file.Storage-class.html#__init__,Method oauth2client.gce.AppAssertionCredentials.__init__()=oauth2client.gce.AppAssertionCredentials-class.html#__init__,Method oauth2client.keyring_storage.Storage.__init__()=oauth2client.keyring_storage.Storage-class.html#__init__,Method oauth2client.locked_file.LockedFile.__init__()=oauth2client.locked_file.LockedFile-class.html#__init__,Method oauth2client.locked_file._Opener.__init__()=oauth2client.locked_file._Opener-class.html#__init__,Method oauth2client.multistore_file._MultiStore._Storage.__init__()=oauth2client.multistore_file._MultiStore._Storage-class.html#__init__,Method oauth2client.multistore_file._MultiStore.__init__()=oauth2client.multistore_file._MultiStore-class.html#__init__"><a title="apiclient.discovery.Resource.__init__
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-52', 'get', 'link-52');">get</a></tt><tt class="py-op">(</tt><tt id="link-53" class="py-name"><a title="oauth2client.appengine.XSRF_MEMCACHE_ID" class="py-name" href="#" onclick="return doclink('link-53', 'XSRF_MEMCACHE_ID', 'link-46');">XSRF_MEMCACHE_ID</a></tt><tt class="py-op">,</tt> <tt class="py-name">namespace</tt><tt class="py-op">=</tt><tt id="link-54" class="py-name"><a title="oauth2client.appengine.OAUTH2CLIENT_NAMESPACE" class="py-name" href="#" onclick="return doclink('link-54', 'OAUTH2CLIENT_NAMESPACE', 'link-45');">OAUTH2CLIENT_NAMESPACE</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-55" class="py-name"><a title="oauth2client.appengine.SiteXsrfSecretKey.secret
+oauth2client.appengine.SiteXsrfSecretKeyNDB.secret" class="py-name" href="#" onclick="return doclink('link-55', 'secret', 'link-47');">secret</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"> <tt class="py-comment"># Load the one and only instance of SiteXsrfSecretKey.</tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"> <tt id="link-56" class="py-name" targets="Module apiclient.model=apiclient.model-module.html"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-56', 'model', 'link-56');">model</a></tt> <tt class="py-op">=</tt> <tt id="link-57" class="py-name" targets="Class oauth2client.appengine.SiteXsrfSecretKey=oauth2client.appengine.SiteXsrfSecretKey-class.html"><a title="oauth2client.appengine.SiteXsrfSecretKey" class="py-name" href="#" onclick="return doclink('link-57', 'SiteXsrfSecretKey', 'link-57');">SiteXsrfSecretKey</a></tt><tt class="py-op">.</tt><tt class="py-name">get_or_insert</tt><tt class="py-op">(</tt><tt class="py-name">key_name</tt><tt class="py-op">=</tt><tt class="py-string">'site'</tt><tt class="py-op">)</tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-58" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-58', 'model', 'link-56');">model</a></tt><tt class="py-op">.</tt><tt id="link-59" class="py-name"><a title="oauth2client.appengine.SiteXsrfSecretKey.secret
+oauth2client.appengine.SiteXsrfSecretKeyNDB.secret" class="py-name" href="#" onclick="return doclink('link-59', 'secret', 'link-47');">secret</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"> <tt id="link-60" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-60', 'model', 'link-56');">model</a></tt><tt class="py-op">.</tt><tt id="link-61" class="py-name"><a title="oauth2client.appengine.SiteXsrfSecretKey.secret
+oauth2client.appengine.SiteXsrfSecretKeyNDB.secret" class="py-name" href="#" onclick="return doclink('link-61', 'secret', 'link-47');">secret</a></tt> <tt class="py-op">=</tt> <tt id="link-62" class="py-name" targets="Function oauth2client.appengine._generate_new_xsrf_secret_key()=oauth2client.appengine-module.html#_generate_new_xsrf_secret_key"><a title="oauth2client.appengine._generate_new_xsrf_secret_key" class="py-name" href="#" onclick="return doclink('link-62', '_generate_new_xsrf_secret_key', 'link-62');">_generate_new_xsrf_secret_key</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"> <tt id="link-63" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-63', 'model', 'link-56');">model</a></tt><tt class="py-op">.</tt><tt id="link-64" class="py-name" targets="Method oauth2client.client.Storage.put()=oauth2client.client.Storage-class.html#put"><a title="oauth2client.client.Storage.put" class="py-name" href="#" onclick="return doclink('link-64', 'put', 'link-64');">put</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"> <tt id="link-65" class="py-name"><a title="oauth2client.appengine.SiteXsrfSecretKey.secret
+oauth2client.appengine.SiteXsrfSecretKeyNDB.secret" class="py-name" href="#" onclick="return doclink('link-65', 'secret', 'link-47');">secret</a></tt> <tt class="py-op">=</tt> <tt id="link-66" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-66', 'model', 'link-56');">model</a></tt><tt class="py-op">.</tt><tt id="link-67" class="py-name"><a title="oauth2client.appengine.SiteXsrfSecretKey.secret
+oauth2client.appengine.SiteXsrfSecretKeyNDB.secret" class="py-name" href="#" onclick="return doclink('link-67', 'secret', 'link-47');">secret</a></tt> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"> <tt class="py-name">memcache</tt><tt class="py-op">.</tt><tt id="link-68" class="py-name" targets="Method apiclient.http.BatchHttpRequest.add()=apiclient.http.BatchHttpRequest-class.html#add"><a title="apiclient.http.BatchHttpRequest.add" class="py-name" href="#" onclick="return doclink('link-68', 'add', 'link-68');">add</a></tt><tt class="py-op">(</tt><tt id="link-69" class="py-name"><a title="oauth2client.appengine.XSRF_MEMCACHE_ID" class="py-name" href="#" onclick="return doclink('link-69', 'XSRF_MEMCACHE_ID', 'link-46');">XSRF_MEMCACHE_ID</a></tt><tt class="py-op">,</tt> <tt id="link-70" class="py-name"><a title="oauth2client.appengine.SiteXsrfSecretKey.secret
+oauth2client.appengine.SiteXsrfSecretKeyNDB.secret" class="py-name" href="#" onclick="return doclink('link-70', 'secret', 'link-47');">secret</a></tt><tt class="py-op">,</tt> <tt class="py-name">namespace</tt><tt class="py-op">=</tt><tt id="link-71" class="py-name"><a title="oauth2client.appengine.OAUTH2CLIENT_NAMESPACE" class="py-name" href="#" onclick="return doclink('link-71', 'OAUTH2CLIENT_NAMESPACE', 'link-45');">OAUTH2CLIENT_NAMESPACE</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt id="link-72" class="py-name"><a title="oauth2client.appengine.SiteXsrfSecretKey.secret
+oauth2client.appengine.SiteXsrfSecretKeyNDB.secret" class="py-name" href="#" onclick="return doclink('link-72', 'secret', 'link-47');">secret</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"> </tt>
+<a name="AppAssertionCredentials"></a><div id="AppAssertionCredentials-def"><a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt> <a class="py-toggle" href="#" id="AppAssertionCredentials-toggle" onclick="return toggle('AppAssertionCredentials');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.appengine.AppAssertionCredentials-class.html">AppAssertionCredentials</a><tt class="py-op">(</tt><tt class="py-base-class">AssertionCredentials</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="AppAssertionCredentials-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="AppAssertionCredentials-expanded"><a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"> <tt class="py-docstring">"""Credentials object for App Engine Assertion Grants</tt> </tt>
+<a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"><tt class="py-docstring"> This object will allow an App Engine application to identify itself to Google</tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"><tt class="py-docstring"> and other OAuth 2.0 servers that can verify assertions. It can be used for the</tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"><tt class="py-docstring"> purpose of accessing data stored under an account assigned to the App Engine</tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"><tt class="py-docstring"> application itself.</tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"><tt class="py-docstring"> This credential does not require a flow to instantiate because it represents</tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"><tt class="py-docstring"> a two legged flow, and therefore has all of the required information to</tt> </tt>
+<a name="L152"></a><tt class="py-lineno">152</tt> <tt class="py-line"><tt class="py-docstring"> generate and refresh its own access tokens.</tt> </tt>
+<a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"> </tt>
+<a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-73" class="py-name" targets="Function oauth2client.util.positional()=oauth2client.util-module.html#positional"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-73', 'positional', 'link-73');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="AppAssertionCredentials.__init__"></a><div id="AppAssertionCredentials.__init__-def"><a name="L156"></a><tt class="py-lineno">156</tt> <a class="py-toggle" href="#" id="AppAssertionCredentials.__init__-toggle" onclick="return toggle('AppAssertionCredentials.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.AppAssertionCredentials-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">scope</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="AppAssertionCredentials.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="AppAssertionCredentials.__init__-expanded"><a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"> <tt class="py-docstring">"""Constructor for AppAssertionCredentials</tt> </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt> <tt class="py-line"><tt class="py-docstring"> scope: string or iterable of strings, scope(s) of the credentials being</tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"><tt class="py-docstring"> requested.</tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L163"></a><tt class="py-lineno">163</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">scope</tt> <tt class="py-op">=</tt> <tt id="link-74" class="py-name"><a title="oauth2client.util" class="py-name" href="#" onclick="return doclink('link-74', 'util', 'link-6');">util</a></tt><tt class="py-op">.</tt><tt id="link-75" class="py-name" targets="Function oauth2client.util.scopes_to_string()=oauth2client.util-module.html#scopes_to_string"><a title="oauth2client.util.scopes_to_string" class="py-name" href="#" onclick="return doclink('link-75', 'scopes_to_string', 'link-75');">scopes_to_string</a></tt><tt class="py-op">(</tt><tt class="py-name">scope</tt><tt class="py-op">)</tt> </tt>
+<a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"> </tt>
+<a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"> <tt class="py-comment"># Assertion type is no longer used, but still in the parent class signature.</tt> </tt>
+<a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-76" class="py-name" targets="Class oauth2client.appengine.AppAssertionCredentials=oauth2client.appengine.AppAssertionCredentials-class.html,Class oauth2client.gce.AppAssertionCredentials=oauth2client.gce.AppAssertionCredentials-class.html"><a title="oauth2client.appengine.AppAssertionCredentials
+oauth2client.gce.AppAssertionCredentials" class="py-name" href="#" onclick="return doclink('link-76', 'AppAssertionCredentials', 'link-76');">AppAssertionCredentials</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-77" class="py-name" targets="Method apiclient.channel.Channel.__init__()=apiclient.channel.Channel-class.html#__init__,Method apiclient.channel.Notification.__init__()=apiclient.channel.Notification-class.html#__init__,Method apiclient.discovery.Resource.__init__()=apiclient.discovery.Resource-class.html#__init__,Method apiclient.discovery.ResourceMethodParameters.__init__()=apiclient.discovery.ResourceMethodParameters-class.html#__init__,Method apiclient.errors.BatchError.__init__()=apiclient.errors.BatchError-class.html#__init__,Method apiclient.errors.HttpError.__init__()=apiclient.errors.HttpError-class.html#__init__,Method apiclient.errors.UnexpectedBodyError.__init__()=apiclient.errors.UnexpectedBodyError-class.html#__init__,Method apiclient.errors.UnexpectedMethodError.__init__()=apiclient.errors.UnexpectedMethodError-class.html#__init__,Method apiclient.http.BatchHttpRequest.__init__()=apiclient.http.BatchHttpRequest-class.html#__init__,Method apiclient.http.HttpMock.__init__()=apiclient.http.HttpMock-class.html#__init__,Method apiclient.http.HttpMockSequence.__init__()=apiclient.http.HttpMockSequence-class.html#__init__,Method apiclient.http.HttpRequest.__init__()=apiclient.http.HttpRequest-class.html#__init__,Method apiclient.http.HttpRequestMock.__init__()=apiclient.http.HttpRequestMock-class.html#__init__,Method apiclient.http.MediaDownloadProgress.__init__()=apiclient.http.MediaDownloadProgress-class.html#__init__,Method apiclient.http.MediaFileUpload.__init__()=apiclient.http.MediaFileUpload-class.html#__init__,Method apiclient.http.MediaInMemoryUpload.__init__()=apiclient.http.MediaInMemoryUpload-class.html#__init__,Method apiclient.http.MediaIoBaseDownload.__init__()=apiclient.http.MediaIoBaseDownload-class.html#__init__,Method apiclient.http.MediaIoBaseUpload.__init__()=apiclient.http.MediaIoBaseUpload-class.html#__init__,Method apiclient.http.MediaUploadProgress.__init__()=apiclient.http.MediaUploadProgress-class.html#__init__,Method apiclient.http.RequestMockBuilder.__init__()=apiclient.http.RequestMockBuilder-class.html#__init__,Method apiclient.http._StreamSlice.__init__()=apiclient.http._StreamSlice-class.html#__init__,Method apiclient.model.JsonModel.__init__()=apiclient.model.JsonModel-class.html#__init__,Method apiclient.model.ProtocolBufferModel.__init__()=apiclient.model.ProtocolBufferModel-class.html#__init__,Method apiclient.schema.Schemas.__init__()=apiclient.schema.Schemas-class.html#__init__,Method apiclient.schema._SchemaToStruct.__init__()=apiclient.schema._SchemaToStruct-class.html#__init__,Method oauth2client.appengine.AppAssertionCredentials.__init__()=oauth2client.appengine.AppAssertionCredentials-class.html#__init__,Method oauth2client.appengine.OAuth2Decorator.__init__()=oauth2client.appengine.OAuth2Decorator-class.html#__init__,Method oauth2client.appengine.OAuth2DecoratorFromClientSecrets.__init__()=oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html#__init__,Method oauth2client.appengine.StorageByKeyName.__init__()=oauth2client.appengine.StorageByKeyName-class.html#__init__,Method oauth2client.client.AccessTokenCredentials.__init__()=oauth2client.client.AccessTokenCredentials-class.html#__init__,Method oauth2client.client.AssertionCredentials.__init__()=oauth2client.client.AssertionCredentials-class.html#__init__,Method oauth2client.client.MemoryCache.__init__()=oauth2client.client.MemoryCache-class.html#__init__,Method oauth2client.client.OAuth2Credentials.__init__()=oauth2client.client.OAuth2Credentials-class.html#__init__,Method oauth2client.client.OAuth2WebServerFlow.__init__()=oauth2client.client.OAuth2WebServerFlow-class.html#__init__,Method oauth2client.client.SignedJwtAssertionCredentials.__init__()=oauth2client.client.SignedJwtAssertionCredentials-class.html#__init__,Method oauth2client.django_orm.CredentialsField.__init__()=oauth2client.django_orm.CredentialsField-class.html#__init__,Method oauth2client.django_orm.FlowField.__init__()=oauth2client.django_orm.FlowField-class.html#__init__,Method oauth2client.django_orm.Storage.__init__()=oauth2client.django_orm.Storage-class.html#__init__,Method oauth2client.file.Storage.__init__()=oauth2client.file.Storage-class.html#__init__,Method oauth2client.gce.AppAssertionCredentials.__init__()=oauth2client.gce.AppAssertionCredentials-class.html#__init__,Method oauth2client.keyring_storage.Storage.__init__()=oauth2client.keyring_storage.Storage-class.html#__init__,Method oauth2client.locked_file.LockedFile.__init__()=oauth2client.locked_file.LockedFile-class.html#__init__,Method oauth2client.locked_file._Opener.__init__()=oauth2client.locked_file._Opener-class.html#__init__,Method oauth2client.multistore_file._MultiStore._Storage.__init__()=oauth2client.multistore_file._MultiStore._Storage-class.html#__init__,Method oauth2client.multistore_file._MultiStore.__init__()=oauth2client.multistore_file._MultiStore-class.html#__init__"><a title="apiclient.channel.Channel.__init__
+apiclient.channel.Notification.__init__
+apiclient.discovery.Resource.__init__
apiclient.discovery.ResourceMethodParameters.__init__
apiclient.errors.BatchError.__init__
apiclient.errors.HttpError.__init__
@@ -261,10 +264,6 @@
apiclient.http._StreamSlice.__init__
apiclient.model.JsonModel.__init__
apiclient.model.ProtocolBufferModel.__init__
-apiclient.push.Channel.__init__
-apiclient.push.Headers.__init__
-apiclient.push.Subscription.__init__
-apiclient.push.WebhookChannel.__init__
apiclient.schema.Schemas.__init__
apiclient.schema._SchemaToStruct.__init__
oauth2client.appengine.AppAssertionCredentials.__init__
@@ -286,852 +285,961 @@
oauth2client.locked_file.LockedFile.__init__
oauth2client.locked_file._Opener.__init__
oauth2client.multistore_file._MultiStore._Storage.__init__
-oauth2client.multistore_file._MultiStore.__init__" class="py-name" href="#" onclick="return doclink('link-82', '__init__', 'link-82');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"> </tt>
-<a name="L167"></a><tt class="py-lineno">167</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">classmethod</tt> </tt>
-<a name="AppAssertionCredentials.from_json"></a><div id="AppAssertionCredentials.from_json-def"><a name="L168"></a><tt class="py-lineno">168</tt> <a class="py-toggle" href="#" id="AppAssertionCredentials.from_json-toggle" onclick="return toggle('AppAssertionCredentials.from_json');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.AppAssertionCredentials-class.html#from_json">from_json</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">,</tt> <tt class="py-param">json</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="AppAssertionCredentials.from_json-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="AppAssertionCredentials.from_json-expanded"><a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-83" class="py-name" targets="Function oauth2client.clientsecrets.loads()=oauth2client.clientsecrets-module.html#loads"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-83', 'loads', 'link-83');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">json</tt><tt class="py-op">)</tt> </tt>
-<a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-84" class="py-name"><a title="oauth2client.appengine.AppAssertionCredentials
-oauth2client.gce.AppAssertionCredentials" class="py-name" href="#" onclick="return doclink('link-84', 'AppAssertionCredentials', 'link-81');">AppAssertionCredentials</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'scope'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"> </tt>
-<a name="AppAssertionCredentials._refresh"></a><div id="AppAssertionCredentials._refresh-def"><a name="L172"></a><tt class="py-lineno">172</tt> <a class="py-toggle" href="#" id="AppAssertionCredentials._refresh-toggle" onclick="return toggle('AppAssertionCredentials._refresh');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.AppAssertionCredentials-class.html#_refresh">_refresh</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http_request</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="AppAssertionCredentials._refresh-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="AppAssertionCredentials._refresh-expanded"><a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"> <tt class="py-docstring">"""Refreshes the access_token.</tt> </tt>
-<a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"><tt class="py-docstring"> Since the underlying App Engine app_identity implementation does its own</tt> </tt>
-<a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"><tt class="py-docstring"> caching we can skip all the storage hoops and just to a refresh using the</tt> </tt>
-<a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"><tt class="py-docstring"> API.</tt> </tt>
-<a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"><tt class="py-docstring"> http_request: callable, a callable that matches the method signature of</tt> </tt>
-<a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"><tt class="py-docstring"> httplib2.Http.request, used to make the refresh request.</tt> </tt>
-<a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L183"></a><tt class="py-lineno">183</tt> <tt class="py-line"><tt class="py-docstring"> Raises:</tt> </tt>
-<a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"><tt class="py-docstring"> AccessTokenRefreshError: When the refresh fails.</tt> </tt>
-<a name="L185"></a><tt class="py-lineno">185</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"> <tt class="py-name">scopes</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">scope</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">token</tt><tt class="py-op">,</tt> <tt class="py-name">_</tt><tt class="py-op">)</tt> <tt class="py-op">=</tt> <tt class="py-name">app_identity</tt><tt class="py-op">.</tt><tt class="py-name">get_access_token</tt><tt class="py-op">(</tt><tt class="py-name">scopes</tt><tt class="py-op">)</tt> </tt>
-<a name="L189"></a><tt class="py-lineno">189</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">app_identity</tt><tt class="py-op">.</tt><tt id="link-85" class="py-name" targets="Class apiclient.errors.Error=apiclient.errors.Error-class.html,Class oauth2client.client.Error=oauth2client.client.Error-class.html,Class oauth2client.clientsecrets.Error=oauth2client.clientsecrets.Error-class.html,Class oauth2client.multistore_file.Error=oauth2client.multistore_file.Error-class.html"><a title="apiclient.errors.Error
+oauth2client.multistore_file._MultiStore.__init__" class="py-name" href="#" onclick="return doclink('link-77', '__init__', 'link-77');">__init__</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L167"></a><tt class="py-lineno">167</tt> <tt class="py-line"> </tt>
+<a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">classmethod</tt> </tt>
+<a name="AppAssertionCredentials.from_json"></a><div id="AppAssertionCredentials.from_json-def"><a name="L169"></a><tt class="py-lineno">169</tt> <a class="py-toggle" href="#" id="AppAssertionCredentials.from_json-toggle" onclick="return toggle('AppAssertionCredentials.from_json');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.AppAssertionCredentials-class.html#from_json">from_json</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">,</tt> <tt class="py-param">json</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="AppAssertionCredentials.from_json-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="AppAssertionCredentials.from_json-expanded"><a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-78" class="py-name" targets="Function oauth2client.clientsecrets.loads()=oauth2client.clientsecrets-module.html#loads"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-78', 'loads', 'link-78');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">json</tt><tt class="py-op">)</tt> </tt>
+<a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-79" class="py-name"><a title="oauth2client.appengine.AppAssertionCredentials
+oauth2client.gce.AppAssertionCredentials" class="py-name" href="#" onclick="return doclink('link-79', 'AppAssertionCredentials', 'link-76');">AppAssertionCredentials</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'scope'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"> </tt>
+<a name="AppAssertionCredentials._refresh"></a><div id="AppAssertionCredentials._refresh-def"><a name="L173"></a><tt class="py-lineno">173</tt> <a class="py-toggle" href="#" id="AppAssertionCredentials._refresh-toggle" onclick="return toggle('AppAssertionCredentials._refresh');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.AppAssertionCredentials-class.html#_refresh">_refresh</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http_request</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="AppAssertionCredentials._refresh-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="AppAssertionCredentials._refresh-expanded"><a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"> <tt class="py-docstring">"""Refreshes the access_token.</tt> </tt>
+<a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"><tt class="py-docstring"> Since the underlying App Engine app_identity implementation does its own</tt> </tt>
+<a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"><tt class="py-docstring"> caching we can skip all the storage hoops and just to a refresh using the</tt> </tt>
+<a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"><tt class="py-docstring"> API.</tt> </tt>
+<a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"><tt class="py-docstring"> http_request: callable, a callable that matches the method signature of</tt> </tt>
+<a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"><tt class="py-docstring"> httplib2.Http.request, used to make the refresh request.</tt> </tt>
+<a name="L183"></a><tt class="py-lineno">183</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"><tt class="py-docstring"> Raises:</tt> </tt>
+<a name="L185"></a><tt class="py-lineno">185</tt> <tt class="py-line"><tt class="py-docstring"> AccessTokenRefreshError: When the refresh fails.</tt> </tt>
+<a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"> <tt class="py-name">scopes</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">scope</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L189"></a><tt class="py-lineno">189</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">token</tt><tt class="py-op">,</tt> <tt class="py-name">_</tt><tt class="py-op">)</tt> <tt class="py-op">=</tt> <tt class="py-name">app_identity</tt><tt class="py-op">.</tt><tt class="py-name">get_access_token</tt><tt class="py-op">(</tt><tt class="py-name">scopes</tt><tt class="py-op">)</tt> </tt>
+<a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">app_identity</tt><tt class="py-op">.</tt><tt id="link-80" class="py-name" targets="Class apiclient.errors.Error=apiclient.errors.Error-class.html,Class oauth2client.client.Error=oauth2client.client.Error-class.html,Class oauth2client.clientsecrets.Error=oauth2client.clientsecrets.Error-class.html,Class oauth2client.multistore_file.Error=oauth2client.multistore_file.Error-class.html"><a title="apiclient.errors.Error
oauth2client.client.Error
oauth2client.clientsecrets.Error
-oauth2client.multistore_file.Error" class="py-name" href="#" onclick="return doclink('link-85', 'Error', 'link-85');">Error</a></tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
-<a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-86" class="py-name"><a title="oauth2client.client.AccessTokenRefreshError" class="py-name" href="#" onclick="return doclink('link-86', 'AccessTokenRefreshError', 'link-29');">AccessTokenRefreshError</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L191"></a><tt class="py-lineno">191</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">access_token</tt> <tt class="py-op">=</tt> <tt class="py-name">token</tt> </tt>
-</div></div><a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"> </tt>
-<a name="FlowProperty"></a><div id="FlowProperty-def"><a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"> </tt>
-<a name="L194"></a><tt class="py-lineno">194</tt> <a class="py-toggle" href="#" id="FlowProperty-toggle" onclick="return toggle('FlowProperty');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.appengine.FlowProperty-class.html">FlowProperty</a><tt class="py-op">(</tt><tt class="py-base-class">db</tt><tt class="py-op">.</tt><tt class="py-base-class">Property</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="FlowProperty-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="FlowProperty-expanded"><a name="L195"></a><tt class="py-lineno">195</tt> <tt class="py-line"> <tt class="py-docstring">"""App Engine datastore Property for Flow.</tt> </tt>
-<a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"><tt class="py-docstring"> Utility property that allows easy storage and retrieval of an</tt> </tt>
-<a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"><tt class="py-docstring"> oauth2client.Flow"""</tt> </tt>
-<a name="L199"></a><tt class="py-lineno">199</tt> <tt class="py-line"> </tt>
-<a name="L200"></a><tt class="py-lineno">200</tt> <tt class="py-line"> <tt class="py-comment"># Tell what the user type is.</tt> </tt>
-<a name="L201"></a><tt class="py-lineno">201</tt> <tt class="py-line"> <tt id="link-87" class="py-name" targets="Variable oauth2client.appengine.CredentialsProperty.data_type=oauth2client.appengine.CredentialsProperty-class.html#data_type,Variable oauth2client.appengine.FlowProperty.data_type=oauth2client.appengine.FlowProperty-class.html#data_type"><a title="oauth2client.appengine.CredentialsProperty.data_type
-oauth2client.appengine.FlowProperty.data_type" class="py-name" href="#" onclick="return doclink('link-87', 'data_type', 'link-87');">data_type</a></tt> <tt class="py-op">=</tt> <tt id="link-88" class="py-name"><a title="oauth2client.client.Flow" class="py-name" href="#" onclick="return doclink('link-88', 'Flow', 'link-38');">Flow</a></tt> </tt>
-<a name="L202"></a><tt class="py-lineno">202</tt> <tt class="py-line"> </tt>
-<a name="L203"></a><tt class="py-lineno">203</tt> <tt class="py-line"> <tt class="py-comment"># For writing to datastore.</tt> </tt>
-<a name="FlowProperty.get_value_for_datastore"></a><div id="FlowProperty.get_value_for_datastore-def"><a name="L204"></a><tt class="py-lineno">204</tt> <a class="py-toggle" href="#" id="FlowProperty.get_value_for_datastore-toggle" onclick="return toggle('FlowProperty.get_value_for_datastore');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.FlowProperty-class.html#get_value_for_datastore">get_value_for_datastore</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">model_instance</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="FlowProperty.get_value_for_datastore-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="FlowProperty.get_value_for_datastore-expanded"><a name="L205"></a><tt class="py-lineno">205</tt> <tt class="py-line"> <tt class="py-name">flow</tt> <tt class="py-op">=</tt> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-89" class="py-name" targets="Class oauth2client.appengine.FlowProperty=oauth2client.appengine.FlowProperty-class.html"><a title="oauth2client.appengine.FlowProperty" class="py-name" href="#" onclick="return doclink('link-89', 'FlowProperty', 'link-89');">FlowProperty</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L206"></a><tt class="py-lineno">206</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-90" class="py-name" targets="Method oauth2client.appengine.CredentialsProperty.get_value_for_datastore()=oauth2client.appengine.CredentialsProperty-class.html#get_value_for_datastore,Method oauth2client.appengine.FlowProperty.get_value_for_datastore()=oauth2client.appengine.FlowProperty-class.html#get_value_for_datastore"><a title="oauth2client.appengine.CredentialsProperty.get_value_for_datastore
-oauth2client.appengine.FlowProperty.get_value_for_datastore" class="py-name" href="#" onclick="return doclink('link-90', 'get_value_for_datastore', 'link-90');">get_value_for_datastore</a></tt><tt class="py-op">(</tt><tt class="py-name">model_instance</tt><tt class="py-op">)</tt> </tt>
-<a name="L207"></a><tt class="py-lineno">207</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">db</tt><tt class="py-op">.</tt><tt class="py-name">Blob</tt><tt class="py-op">(</tt><tt class="py-name">pickle</tt><tt class="py-op">.</tt><tt class="py-name">dumps</tt><tt class="py-op">(</tt><tt class="py-name">flow</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L208"></a><tt class="py-lineno">208</tt> <tt class="py-line"> </tt>
-<a name="L209"></a><tt class="py-lineno">209</tt> <tt class="py-line"> <tt class="py-comment"># For reading from datastore.</tt> </tt>
-<a name="FlowProperty.make_value_from_datastore"></a><div id="FlowProperty.make_value_from_datastore-def"><a name="L210"></a><tt class="py-lineno">210</tt> <a class="py-toggle" href="#" id="FlowProperty.make_value_from_datastore-toggle" onclick="return toggle('FlowProperty.make_value_from_datastore');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.FlowProperty-class.html#make_value_from_datastore">make_value_from_datastore</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="FlowProperty.make_value_from_datastore-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="FlowProperty.make_value_from_datastore-expanded"><a name="L211"></a><tt class="py-lineno">211</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">value</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L212"></a><tt class="py-lineno">212</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
-<a name="L213"></a><tt class="py-lineno">213</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">pickle</tt><tt class="py-op">.</tt><tt id="link-91" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-91', 'loads', 'link-83');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L214"></a><tt class="py-lineno">214</tt> <tt class="py-line"> </tt>
-<a name="FlowProperty.validate"></a><div id="FlowProperty.validate-def"><a name="L215"></a><tt class="py-lineno">215</tt> <a class="py-toggle" href="#" id="FlowProperty.validate-toggle" onclick="return toggle('FlowProperty.validate');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.FlowProperty-class.html#validate">validate</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="FlowProperty.validate-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="FlowProperty.validate-expanded"><a name="L216"></a><tt class="py-lineno">216</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">value</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt id="link-92" class="py-name"><a title="oauth2client.client.Flow" class="py-name" href="#" onclick="return doclink('link-92', 'Flow', 'link-38');">Flow</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L217"></a><tt class="py-lineno">217</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">db</tt><tt class="py-op">.</tt><tt class="py-name">BadValueError</tt><tt class="py-op">(</tt><tt class="py-string">'Property %s must be convertible '</tt> </tt>
-<a name="L218"></a><tt class="py-lineno">218</tt> <tt class="py-line"> <tt class="py-string">'to a FlowThreeLegged instance (%s)'</tt> <tt class="py-op">%</tt> </tt>
-<a name="L219"></a><tt class="py-lineno">219</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L220"></a><tt class="py-lineno">220</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-93" class="py-name"><a title="oauth2client.appengine.FlowProperty" class="py-name" href="#" onclick="return doclink('link-93', 'FlowProperty', 'link-89');">FlowProperty</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-94" class="py-name" targets="Method oauth2client.appengine.CredentialsProperty.validate()=oauth2client.appengine.CredentialsProperty-class.html#validate,Method oauth2client.appengine.FlowProperty.validate()=oauth2client.appengine.FlowProperty-class.html#validate"><a title="oauth2client.appengine.CredentialsProperty.validate
-oauth2client.appengine.FlowProperty.validate" class="py-name" href="#" onclick="return doclink('link-94', 'validate', 'link-94');">validate</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L221"></a><tt class="py-lineno">221</tt> <tt class="py-line"> </tt>
-<a name="FlowProperty.empty"></a><div id="FlowProperty.empty-def"><a name="L222"></a><tt class="py-lineno">222</tt> <a class="py-toggle" href="#" id="FlowProperty.empty-toggle" onclick="return toggle('FlowProperty.empty');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.FlowProperty-class.html#empty">empty</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="FlowProperty.empty-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="FlowProperty.empty-expanded"><a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-keyword">not</tt> <tt class="py-name">value</tt> </tt>
-</div></div><a name="L224"></a><tt class="py-lineno">224</tt> <tt class="py-line"> </tt>
-<a name="L225"></a><tt class="py-lineno">225</tt> <tt class="py-line"> </tt>
-<a name="L226"></a><tt class="py-lineno">226</tt> <tt class="py-line"><tt class="py-keyword">if</tt> <tt id="link-95" class="py-name"><a title="oauth2client.appengine.ndb" class="py-name" href="#" onclick="return doclink('link-95', 'ndb', 'link-47');">ndb</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="FlowNDBProperty"></a><div id="FlowNDBProperty-def"><a name="L227"></a><tt class="py-lineno">227</tt> <a class="py-toggle" href="#" id="FlowNDBProperty-toggle" onclick="return toggle('FlowNDBProperty');">-</a><tt class="py-line"> <tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.appengine.FlowNDBProperty-class.html">FlowNDBProperty</a><tt class="py-op">(</tt><tt class="py-base-class">ndb</tt><tt class="py-op">.</tt><tt class="py-base-class">PickleProperty</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="FlowNDBProperty-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="FlowNDBProperty-expanded"><a name="L228"></a><tt class="py-lineno">228</tt> <tt class="py-line"> <tt class="py-docstring">"""App Engine NDB datastore Property for Flow.</tt> </tt>
-<a name="L229"></a><tt class="py-lineno">229</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L230"></a><tt class="py-lineno">230</tt> <tt class="py-line"><tt class="py-docstring"> Serves the same purpose as the DB FlowProperty, but for NDB models. Since</tt> </tt>
-<a name="L231"></a><tt class="py-lineno">231</tt> <tt class="py-line"><tt class="py-docstring"> PickleProperty inherits from BlobProperty, the underlying representation of</tt> </tt>
-<a name="L232"></a><tt class="py-lineno">232</tt> <tt class="py-line"><tt class="py-docstring"> the data in the datastore will be the same as in the DB case.</tt> </tt>
-<a name="L233"></a><tt class="py-lineno">233</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L234"></a><tt class="py-lineno">234</tt> <tt class="py-line"><tt class="py-docstring"> Utility property that allows easy storage and retrieval of an</tt> </tt>
-<a name="L235"></a><tt class="py-lineno">235</tt> <tt class="py-line"><tt class="py-docstring"> oauth2client.Flow</tt> </tt>
-<a name="L236"></a><tt class="py-lineno">236</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L237"></a><tt class="py-lineno">237</tt> <tt class="py-line"> </tt>
-<a name="FlowNDBProperty._validate"></a><div id="FlowNDBProperty._validate-def"><a name="L238"></a><tt class="py-lineno">238</tt> <a class="py-toggle" href="#" id="FlowNDBProperty._validate-toggle" onclick="return toggle('FlowNDBProperty._validate');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.FlowNDBProperty-class.html#_validate">_validate</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="FlowNDBProperty._validate-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="FlowNDBProperty._validate-expanded"><a name="L239"></a><tt class="py-lineno">239</tt> <tt class="py-line"> <tt class="py-docstring">"""Validates a value as a proper Flow object.</tt> </tt>
-<a name="L240"></a><tt class="py-lineno">240</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L241"></a><tt class="py-lineno">241</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L242"></a><tt class="py-lineno">242</tt> <tt class="py-line"><tt class="py-docstring"> value: A value to be set on the property.</tt> </tt>
-<a name="L243"></a><tt class="py-lineno">243</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L244"></a><tt class="py-lineno">244</tt> <tt class="py-line"><tt class="py-docstring"> Raises:</tt> </tt>
-<a name="L245"></a><tt class="py-lineno">245</tt> <tt class="py-line"><tt class="py-docstring"> TypeError if the value is not an instance of Flow.</tt> </tt>
-<a name="L246"></a><tt class="py-lineno">246</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L247"></a><tt class="py-lineno">247</tt> <tt class="py-line"> <tt id="link-96" class="py-name"><a title="apiclient.discovery.logger
+oauth2client.multistore_file.Error" class="py-name" href="#" onclick="return doclink('link-80', 'Error', 'link-80');">Error</a></tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L191"></a><tt class="py-lineno">191</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-81" class="py-name"><a title="oauth2client.client.AccessTokenRefreshError" class="py-name" href="#" onclick="return doclink('link-81', 'AccessTokenRefreshError', 'link-25');">AccessTokenRefreshError</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">access_token</tt> <tt class="py-op">=</tt> <tt class="py-name">token</tt> </tt>
+</div></div><a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"> </tt>
+<a name="FlowProperty"></a><div id="FlowProperty-def"><a name="L194"></a><tt class="py-lineno">194</tt> <tt class="py-line"> </tt>
+<a name="L195"></a><tt class="py-lineno">195</tt> <a class="py-toggle" href="#" id="FlowProperty-toggle" onclick="return toggle('FlowProperty');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.appengine.FlowProperty-class.html">FlowProperty</a><tt class="py-op">(</tt><tt class="py-base-class">db</tt><tt class="py-op">.</tt><tt class="py-base-class">Property</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="FlowProperty-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="FlowProperty-expanded"><a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"> <tt class="py-docstring">"""App Engine datastore Property for Flow.</tt> </tt>
+<a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"><tt class="py-docstring"> Utility property that allows easy storage and retrieval of an</tt> </tt>
+<a name="L199"></a><tt class="py-lineno">199</tt> <tt class="py-line"><tt class="py-docstring"> oauth2client.Flow"""</tt> </tt>
+<a name="L200"></a><tt class="py-lineno">200</tt> <tt class="py-line"> </tt>
+<a name="L201"></a><tt class="py-lineno">201</tt> <tt class="py-line"> <tt class="py-comment"># Tell what the user type is.</tt> </tt>
+<a name="L202"></a><tt class="py-lineno">202</tt> <tt class="py-line"> <tt id="link-82" class="py-name" targets="Variable oauth2client.appengine.CredentialsProperty.data_type=oauth2client.appengine.CredentialsProperty-class.html#data_type,Variable oauth2client.appengine.FlowProperty.data_type=oauth2client.appengine.FlowProperty-class.html#data_type"><a title="oauth2client.appengine.CredentialsProperty.data_type
+oauth2client.appengine.FlowProperty.data_type" class="py-name" href="#" onclick="return doclink('link-82', 'data_type', 'link-82');">data_type</a></tt> <tt class="py-op">=</tt> <tt id="link-83" class="py-name"><a title="oauth2client.client.Flow" class="py-name" href="#" onclick="return doclink('link-83', 'Flow', 'link-34');">Flow</a></tt> </tt>
+<a name="L203"></a><tt class="py-lineno">203</tt> <tt class="py-line"> </tt>
+<a name="L204"></a><tt class="py-lineno">204</tt> <tt class="py-line"> <tt class="py-comment"># For writing to datastore.</tt> </tt>
+<a name="FlowProperty.get_value_for_datastore"></a><div id="FlowProperty.get_value_for_datastore-def"><a name="L205"></a><tt class="py-lineno">205</tt> <a class="py-toggle" href="#" id="FlowProperty.get_value_for_datastore-toggle" onclick="return toggle('FlowProperty.get_value_for_datastore');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.FlowProperty-class.html#get_value_for_datastore">get_value_for_datastore</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">model_instance</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="FlowProperty.get_value_for_datastore-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="FlowProperty.get_value_for_datastore-expanded"><a name="L206"></a><tt class="py-lineno">206</tt> <tt class="py-line"> <tt id="link-84" class="py-name" targets="Variable oauth2client.appengine.OAuth2Decorator.flow=oauth2client.appengine.OAuth2Decorator-class.html#flow"><a title="oauth2client.appengine.OAuth2Decorator.flow" class="py-name" href="#" onclick="return doclink('link-84', 'flow', 'link-84');">flow</a></tt> <tt class="py-op">=</tt> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-85" class="py-name" targets="Class oauth2client.appengine.FlowProperty=oauth2client.appengine.FlowProperty-class.html"><a title="oauth2client.appengine.FlowProperty" class="py-name" href="#" onclick="return doclink('link-85', 'FlowProperty', 'link-85');">FlowProperty</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L207"></a><tt class="py-lineno">207</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-86" class="py-name" targets="Method oauth2client.appengine.CredentialsProperty.get_value_for_datastore()=oauth2client.appengine.CredentialsProperty-class.html#get_value_for_datastore,Method oauth2client.appengine.FlowProperty.get_value_for_datastore()=oauth2client.appengine.FlowProperty-class.html#get_value_for_datastore"><a title="oauth2client.appengine.CredentialsProperty.get_value_for_datastore
+oauth2client.appengine.FlowProperty.get_value_for_datastore" class="py-name" href="#" onclick="return doclink('link-86', 'get_value_for_datastore', 'link-86');">get_value_for_datastore</a></tt><tt class="py-op">(</tt><tt class="py-name">model_instance</tt><tt class="py-op">)</tt> </tt>
+<a name="L208"></a><tt class="py-lineno">208</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">db</tt><tt class="py-op">.</tt><tt class="py-name">Blob</tt><tt class="py-op">(</tt><tt class="py-name">pickle</tt><tt class="py-op">.</tt><tt class="py-name">dumps</tt><tt class="py-op">(</tt><tt id="link-87" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator.flow" class="py-name" href="#" onclick="return doclink('link-87', 'flow', 'link-84');">flow</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L209"></a><tt class="py-lineno">209</tt> <tt class="py-line"> </tt>
+<a name="L210"></a><tt class="py-lineno">210</tt> <tt class="py-line"> <tt class="py-comment"># For reading from datastore.</tt> </tt>
+<a name="FlowProperty.make_value_from_datastore"></a><div id="FlowProperty.make_value_from_datastore-def"><a name="L211"></a><tt class="py-lineno">211</tt> <a class="py-toggle" href="#" id="FlowProperty.make_value_from_datastore-toggle" onclick="return toggle('FlowProperty.make_value_from_datastore');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.FlowProperty-class.html#make_value_from_datastore">make_value_from_datastore</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="FlowProperty.make_value_from_datastore-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="FlowProperty.make_value_from_datastore-expanded"><a name="L212"></a><tt class="py-lineno">212</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">value</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L213"></a><tt class="py-lineno">213</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+<a name="L214"></a><tt class="py-lineno">214</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">pickle</tt><tt class="py-op">.</tt><tt id="link-88" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-88', 'loads', 'link-78');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L215"></a><tt class="py-lineno">215</tt> <tt class="py-line"> </tt>
+<a name="FlowProperty.validate"></a><div id="FlowProperty.validate-def"><a name="L216"></a><tt class="py-lineno">216</tt> <a class="py-toggle" href="#" id="FlowProperty.validate-toggle" onclick="return toggle('FlowProperty.validate');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.FlowProperty-class.html#validate">validate</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="FlowProperty.validate-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="FlowProperty.validate-expanded"><a name="L217"></a><tt class="py-lineno">217</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">value</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt id="link-89" class="py-name"><a title="oauth2client.client.Flow" class="py-name" href="#" onclick="return doclink('link-89', 'Flow', 'link-34');">Flow</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L218"></a><tt class="py-lineno">218</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">db</tt><tt class="py-op">.</tt><tt class="py-name">BadValueError</tt><tt class="py-op">(</tt><tt class="py-string">'Property %s must be convertible '</tt> </tt>
+<a name="L219"></a><tt class="py-lineno">219</tt> <tt class="py-line"> <tt class="py-string">'to a FlowThreeLegged instance (%s)'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L220"></a><tt class="py-lineno">220</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L221"></a><tt class="py-lineno">221</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-90" class="py-name"><a title="oauth2client.appengine.FlowProperty" class="py-name" href="#" onclick="return doclink('link-90', 'FlowProperty', 'link-85');">FlowProperty</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-91" class="py-name" targets="Method oauth2client.appengine.CredentialsProperty.validate()=oauth2client.appengine.CredentialsProperty-class.html#validate,Method oauth2client.appengine.FlowProperty.validate()=oauth2client.appengine.FlowProperty-class.html#validate"><a title="oauth2client.appengine.CredentialsProperty.validate
+oauth2client.appengine.FlowProperty.validate" class="py-name" href="#" onclick="return doclink('link-91', 'validate', 'link-91');">validate</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L222"></a><tt class="py-lineno">222</tt> <tt class="py-line"> </tt>
+<a name="FlowProperty.empty"></a><div id="FlowProperty.empty-def"><a name="L223"></a><tt class="py-lineno">223</tt> <a class="py-toggle" href="#" id="FlowProperty.empty-toggle" onclick="return toggle('FlowProperty.empty');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.FlowProperty-class.html#empty">empty</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="FlowProperty.empty-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="FlowProperty.empty-expanded"><a name="L224"></a><tt class="py-lineno">224</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-keyword">not</tt> <tt class="py-name">value</tt> </tt>
+</div></div><a name="L225"></a><tt class="py-lineno">225</tt> <tt class="py-line"> </tt>
+<a name="L226"></a><tt class="py-lineno">226</tt> <tt class="py-line"> </tt>
+<a name="L227"></a><tt class="py-lineno">227</tt> <tt class="py-line"><tt class="py-keyword">if</tt> <tt id="link-92" class="py-name"><a title="oauth2client.appengine.ndb" class="py-name" href="#" onclick="return doclink('link-92', 'ndb', 'link-42');">ndb</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="FlowNDBProperty"></a><div id="FlowNDBProperty-def"><a name="L228"></a><tt class="py-lineno">228</tt> <a class="py-toggle" href="#" id="FlowNDBProperty-toggle" onclick="return toggle('FlowNDBProperty');">-</a><tt class="py-line"> <tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.appengine.FlowNDBProperty-class.html">FlowNDBProperty</a><tt class="py-op">(</tt><tt class="py-base-class">ndb</tt><tt class="py-op">.</tt><tt class="py-base-class">PickleProperty</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="FlowNDBProperty-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="FlowNDBProperty-expanded"><a name="L229"></a><tt class="py-lineno">229</tt> <tt class="py-line"> <tt class="py-docstring">"""App Engine NDB datastore Property for Flow.</tt> </tt>
+<a name="L230"></a><tt class="py-lineno">230</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L231"></a><tt class="py-lineno">231</tt> <tt class="py-line"><tt class="py-docstring"> Serves the same purpose as the DB FlowProperty, but for NDB models. Since</tt> </tt>
+<a name="L232"></a><tt class="py-lineno">232</tt> <tt class="py-line"><tt class="py-docstring"> PickleProperty inherits from BlobProperty, the underlying representation of</tt> </tt>
+<a name="L233"></a><tt class="py-lineno">233</tt> <tt class="py-line"><tt class="py-docstring"> the data in the datastore will be the same as in the DB case.</tt> </tt>
+<a name="L234"></a><tt class="py-lineno">234</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L235"></a><tt class="py-lineno">235</tt> <tt class="py-line"><tt class="py-docstring"> Utility property that allows easy storage and retrieval of an</tt> </tt>
+<a name="L236"></a><tt class="py-lineno">236</tt> <tt class="py-line"><tt class="py-docstring"> oauth2client.Flow</tt> </tt>
+<a name="L237"></a><tt class="py-lineno">237</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L238"></a><tt class="py-lineno">238</tt> <tt class="py-line"> </tt>
+<a name="FlowNDBProperty._validate"></a><div id="FlowNDBProperty._validate-def"><a name="L239"></a><tt class="py-lineno">239</tt> <a class="py-toggle" href="#" id="FlowNDBProperty._validate-toggle" onclick="return toggle('FlowNDBProperty._validate');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.FlowNDBProperty-class.html#_validate">_validate</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="FlowNDBProperty._validate-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="FlowNDBProperty._validate-expanded"><a name="L240"></a><tt class="py-lineno">240</tt> <tt class="py-line"> <tt class="py-docstring">"""Validates a value as a proper Flow object.</tt> </tt>
+<a name="L241"></a><tt class="py-lineno">241</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L242"></a><tt class="py-lineno">242</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L243"></a><tt class="py-lineno">243</tt> <tt class="py-line"><tt class="py-docstring"> value: A value to be set on the property.</tt> </tt>
+<a name="L244"></a><tt class="py-lineno">244</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L245"></a><tt class="py-lineno">245</tt> <tt class="py-line"><tt class="py-docstring"> Raises:</tt> </tt>
+<a name="L246"></a><tt class="py-lineno">246</tt> <tt class="py-line"><tt class="py-docstring"> TypeError if the value is not an instance of Flow.</tt> </tt>
+<a name="L247"></a><tt class="py-lineno">247</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L248"></a><tt class="py-lineno">248</tt> <tt class="py-line"> <tt id="link-93" class="py-name"><a title="apiclient.discovery.logger
oauth2client.appengine.logger
oauth2client.client.logger
oauth2client.crypt.logger
oauth2client.gce.logger
oauth2client.locked_file.logger
oauth2client.multistore_file.logger
-oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-96', 'logger', 'link-49');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'validate: Got type %s'</tt><tt class="py-op">,</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L248"></a><tt class="py-lineno">248</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">value</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt id="link-97" class="py-name"><a title="oauth2client.client.Flow" class="py-name" href="#" onclick="return doclink('link-97', 'Flow', 'link-38');">Flow</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L249"></a><tt class="py-lineno">249</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">'Property %s must be convertible to a flow '</tt> </tt>
-<a name="L250"></a><tt class="py-lineno">250</tt> <tt class="py-line"> <tt class="py-string">'instance; received: %s.'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_name</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L251"></a><tt class="py-lineno">251</tt> <tt class="py-line"> </tt>
-<a name="CredentialsProperty"></a><div id="CredentialsProperty-def"><a name="L252"></a><tt class="py-lineno">252</tt> <tt class="py-line"> </tt>
-<a name="L253"></a><tt class="py-lineno">253</tt> <a class="py-toggle" href="#" id="CredentialsProperty-toggle" onclick="return toggle('CredentialsProperty');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.appengine.CredentialsProperty-class.html">CredentialsProperty</a><tt class="py-op">(</tt><tt class="py-base-class">db</tt><tt class="py-op">.</tt><tt class="py-base-class">Property</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="CredentialsProperty-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="CredentialsProperty-expanded"><a name="L254"></a><tt class="py-lineno">254</tt> <tt class="py-line"> <tt class="py-docstring">"""App Engine datastore Property for Credentials.</tt> </tt>
-<a name="L255"></a><tt class="py-lineno">255</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L256"></a><tt class="py-lineno">256</tt> <tt class="py-line"><tt class="py-docstring"> Utility property that allows easy storage and retrieval of</tt> </tt>
-<a name="L257"></a><tt class="py-lineno">257</tt> <tt class="py-line"><tt class="py-docstring"> oath2client.Credentials</tt> </tt>
-<a name="L258"></a><tt class="py-lineno">258</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L259"></a><tt class="py-lineno">259</tt> <tt class="py-line"> </tt>
-<a name="L260"></a><tt class="py-lineno">260</tt> <tt class="py-line"> <tt class="py-comment"># Tell what the user type is.</tt> </tt>
-<a name="L261"></a><tt class="py-lineno">261</tt> <tt class="py-line"> <tt id="link-98" class="py-name"><a title="oauth2client.appengine.CredentialsProperty.data_type
-oauth2client.appengine.FlowProperty.data_type" class="py-name" href="#" onclick="return doclink('link-98', 'data_type', 'link-87');">data_type</a></tt> <tt class="py-op">=</tt> <tt id="link-99" class="py-name"><a title="oauth2client.client.Credentials" class="py-name" href="#" onclick="return doclink('link-99', 'Credentials', 'link-35');">Credentials</a></tt> </tt>
-<a name="L262"></a><tt class="py-lineno">262</tt> <tt class="py-line"> </tt>
-<a name="L263"></a><tt class="py-lineno">263</tt> <tt class="py-line"> <tt class="py-comment"># For writing to datastore.</tt> </tt>
-<a name="CredentialsProperty.get_value_for_datastore"></a><div id="CredentialsProperty.get_value_for_datastore-def"><a name="L264"></a><tt class="py-lineno">264</tt> <a class="py-toggle" href="#" id="CredentialsProperty.get_value_for_datastore-toggle" onclick="return toggle('CredentialsProperty.get_value_for_datastore');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.CredentialsProperty-class.html#get_value_for_datastore">get_value_for_datastore</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">model_instance</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="CredentialsProperty.get_value_for_datastore-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="CredentialsProperty.get_value_for_datastore-expanded"><a name="L265"></a><tt class="py-lineno">265</tt> <tt class="py-line"> <tt id="link-100" class="py-name"><a title="apiclient.discovery.logger
+oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-93', 'logger', 'link-44');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'validate: Got type %s'</tt><tt class="py-op">,</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L249"></a><tt class="py-lineno">249</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">value</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt id="link-94" class="py-name"><a title="oauth2client.client.Flow" class="py-name" href="#" onclick="return doclink('link-94', 'Flow', 'link-34');">Flow</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L250"></a><tt class="py-lineno">250</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">'Property %s must be convertible to a flow '</tt> </tt>
+<a name="L251"></a><tt class="py-lineno">251</tt> <tt class="py-line"> <tt class="py-string">'instance; received: %s.'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_name</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L252"></a><tt class="py-lineno">252</tt> <tt class="py-line"> </tt>
+<a name="CredentialsProperty"></a><div id="CredentialsProperty-def"><a name="L253"></a><tt class="py-lineno">253</tt> <tt class="py-line"> </tt>
+<a name="L254"></a><tt class="py-lineno">254</tt> <a class="py-toggle" href="#" id="CredentialsProperty-toggle" onclick="return toggle('CredentialsProperty');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.appengine.CredentialsProperty-class.html">CredentialsProperty</a><tt class="py-op">(</tt><tt class="py-base-class">db</tt><tt class="py-op">.</tt><tt class="py-base-class">Property</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="CredentialsProperty-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="CredentialsProperty-expanded"><a name="L255"></a><tt class="py-lineno">255</tt> <tt class="py-line"> <tt class="py-docstring">"""App Engine datastore Property for Credentials.</tt> </tt>
+<a name="L256"></a><tt class="py-lineno">256</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L257"></a><tt class="py-lineno">257</tt> <tt class="py-line"><tt class="py-docstring"> Utility property that allows easy storage and retrieval of</tt> </tt>
+<a name="L258"></a><tt class="py-lineno">258</tt> <tt class="py-line"><tt class="py-docstring"> oath2client.Credentials</tt> </tt>
+<a name="L259"></a><tt class="py-lineno">259</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L260"></a><tt class="py-lineno">260</tt> <tt class="py-line"> </tt>
+<a name="L261"></a><tt class="py-lineno">261</tt> <tt class="py-line"> <tt class="py-comment"># Tell what the user type is.</tt> </tt>
+<a name="L262"></a><tt class="py-lineno">262</tt> <tt class="py-line"> <tt id="link-95" class="py-name"><a title="oauth2client.appengine.CredentialsProperty.data_type
+oauth2client.appengine.FlowProperty.data_type" class="py-name" href="#" onclick="return doclink('link-95', 'data_type', 'link-82');">data_type</a></tt> <tt class="py-op">=</tt> <tt id="link-96" class="py-name"><a title="oauth2client.client.Credentials" class="py-name" href="#" onclick="return doclink('link-96', 'Credentials', 'link-31');">Credentials</a></tt> </tt>
+<a name="L263"></a><tt class="py-lineno">263</tt> <tt class="py-line"> </tt>
+<a name="L264"></a><tt class="py-lineno">264</tt> <tt class="py-line"> <tt class="py-comment"># For writing to datastore.</tt> </tt>
+<a name="CredentialsProperty.get_value_for_datastore"></a><div id="CredentialsProperty.get_value_for_datastore-def"><a name="L265"></a><tt class="py-lineno">265</tt> <a class="py-toggle" href="#" id="CredentialsProperty.get_value_for_datastore-toggle" onclick="return toggle('CredentialsProperty.get_value_for_datastore');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.CredentialsProperty-class.html#get_value_for_datastore">get_value_for_datastore</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">model_instance</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="CredentialsProperty.get_value_for_datastore-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="CredentialsProperty.get_value_for_datastore-expanded"><a name="L266"></a><tt class="py-lineno">266</tt> <tt class="py-line"> <tt id="link-97" class="py-name"><a title="apiclient.discovery.logger
oauth2client.appengine.logger
oauth2client.client.logger
oauth2client.crypt.logger
oauth2client.gce.logger
oauth2client.locked_file.logger
oauth2client.multistore_file.logger
-oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-100', 'logger', 'link-49');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">"get: Got type "</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">model_instance</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L266"></a><tt class="py-lineno">266</tt> <tt class="py-line"> <tt class="py-name">cred</tt> <tt class="py-op">=</tt> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-101" class="py-name" targets="Class oauth2client.appengine.CredentialsProperty=oauth2client.appengine.CredentialsProperty-class.html"><a title="oauth2client.appengine.CredentialsProperty" class="py-name" href="#" onclick="return doclink('link-101', 'CredentialsProperty', 'link-101');">CredentialsProperty</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L267"></a><tt class="py-lineno">267</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-102" class="py-name"><a title="oauth2client.appengine.CredentialsProperty.get_value_for_datastore
-oauth2client.appengine.FlowProperty.get_value_for_datastore" class="py-name" href="#" onclick="return doclink('link-102', 'get_value_for_datastore', 'link-90');">get_value_for_datastore</a></tt><tt class="py-op">(</tt><tt class="py-name">model_instance</tt><tt class="py-op">)</tt> </tt>
-<a name="L268"></a><tt class="py-lineno">268</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">cred</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L269"></a><tt class="py-lineno">269</tt> <tt class="py-line"> <tt class="py-name">cred</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
-<a name="L270"></a><tt class="py-lineno">270</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L271"></a><tt class="py-lineno">271</tt> <tt class="py-line"> <tt class="py-name">cred</tt> <tt class="py-op">=</tt> <tt class="py-name">cred</tt><tt class="py-op">.</tt><tt id="link-103" class="py-name" targets="Method apiclient.http.HttpRequest.to_json()=apiclient.http.HttpRequest-class.html#to_json,Method apiclient.http.MediaFileUpload.to_json()=apiclient.http.MediaFileUpload-class.html#to_json,Method apiclient.http.MediaIoBaseUpload.to_json()=apiclient.http.MediaIoBaseUpload-class.html#to_json,Method apiclient.http.MediaUpload.to_json()=apiclient.http.MediaUpload-class.html#to_json,Method oauth2client.client.Credentials.to_json()=oauth2client.client.Credentials-class.html#to_json,Method oauth2client.client.OAuth2Credentials.to_json()=oauth2client.client.OAuth2Credentials-class.html#to_json"><a title="apiclient.http.HttpRequest.to_json
+oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-97', 'logger', 'link-44');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">"get: Got type "</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">model_instance</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L267"></a><tt class="py-lineno">267</tt> <tt class="py-line"> <tt class="py-name">cred</tt> <tt class="py-op">=</tt> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-98" class="py-name" targets="Class oauth2client.appengine.CredentialsProperty=oauth2client.appengine.CredentialsProperty-class.html"><a title="oauth2client.appengine.CredentialsProperty" class="py-name" href="#" onclick="return doclink('link-98', 'CredentialsProperty', 'link-98');">CredentialsProperty</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L268"></a><tt class="py-lineno">268</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-99" class="py-name"><a title="oauth2client.appengine.CredentialsProperty.get_value_for_datastore
+oauth2client.appengine.FlowProperty.get_value_for_datastore" class="py-name" href="#" onclick="return doclink('link-99', 'get_value_for_datastore', 'link-86');">get_value_for_datastore</a></tt><tt class="py-op">(</tt><tt class="py-name">model_instance</tt><tt class="py-op">)</tt> </tt>
+<a name="L269"></a><tt class="py-lineno">269</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">cred</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L270"></a><tt class="py-lineno">270</tt> <tt class="py-line"> <tt class="py-name">cred</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L271"></a><tt class="py-lineno">271</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L272"></a><tt class="py-lineno">272</tt> <tt class="py-line"> <tt class="py-name">cred</tt> <tt class="py-op">=</tt> <tt class="py-name">cred</tt><tt class="py-op">.</tt><tt id="link-100" class="py-name" targets="Method apiclient.http.HttpRequest.to_json()=apiclient.http.HttpRequest-class.html#to_json,Method apiclient.http.MediaFileUpload.to_json()=apiclient.http.MediaFileUpload-class.html#to_json,Method apiclient.http.MediaIoBaseUpload.to_json()=apiclient.http.MediaIoBaseUpload-class.html#to_json,Method apiclient.http.MediaUpload.to_json()=apiclient.http.MediaUpload-class.html#to_json,Method oauth2client.client.Credentials.to_json()=oauth2client.client.Credentials-class.html#to_json,Method oauth2client.client.OAuth2Credentials.to_json()=oauth2client.client.OAuth2Credentials-class.html#to_json"><a title="apiclient.http.HttpRequest.to_json
apiclient.http.MediaFileUpload.to_json
apiclient.http.MediaIoBaseUpload.to_json
apiclient.http.MediaUpload.to_json
oauth2client.client.Credentials.to_json
-oauth2client.client.OAuth2Credentials.to_json" class="py-name" href="#" onclick="return doclink('link-103', 'to_json', 'link-103');">to_json</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L272"></a><tt class="py-lineno">272</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">db</tt><tt class="py-op">.</tt><tt class="py-name">Blob</tt><tt class="py-op">(</tt><tt class="py-name">cred</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L273"></a><tt class="py-lineno">273</tt> <tt class="py-line"> </tt>
-<a name="L274"></a><tt class="py-lineno">274</tt> <tt class="py-line"> <tt class="py-comment"># For reading from datastore.</tt> </tt>
-<a name="CredentialsProperty.make_value_from_datastore"></a><div id="CredentialsProperty.make_value_from_datastore-def"><a name="L275"></a><tt class="py-lineno">275</tt> <a class="py-toggle" href="#" id="CredentialsProperty.make_value_from_datastore-toggle" onclick="return toggle('CredentialsProperty.make_value_from_datastore');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.CredentialsProperty-class.html#make_value_from_datastore">make_value_from_datastore</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="CredentialsProperty.make_value_from_datastore-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="CredentialsProperty.make_value_from_datastore-expanded"><a name="L276"></a><tt class="py-lineno">276</tt> <tt class="py-line"> <tt id="link-104" class="py-name"><a title="apiclient.discovery.logger
+oauth2client.client.OAuth2Credentials.to_json" class="py-name" href="#" onclick="return doclink('link-100', 'to_json', 'link-100');">to_json</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L273"></a><tt class="py-lineno">273</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">db</tt><tt class="py-op">.</tt><tt class="py-name">Blob</tt><tt class="py-op">(</tt><tt class="py-name">cred</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L274"></a><tt class="py-lineno">274</tt> <tt class="py-line"> </tt>
+<a name="L275"></a><tt class="py-lineno">275</tt> <tt class="py-line"> <tt class="py-comment"># For reading from datastore.</tt> </tt>
+<a name="CredentialsProperty.make_value_from_datastore"></a><div id="CredentialsProperty.make_value_from_datastore-def"><a name="L276"></a><tt class="py-lineno">276</tt> <a class="py-toggle" href="#" id="CredentialsProperty.make_value_from_datastore-toggle" onclick="return toggle('CredentialsProperty.make_value_from_datastore');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.CredentialsProperty-class.html#make_value_from_datastore">make_value_from_datastore</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="CredentialsProperty.make_value_from_datastore-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="CredentialsProperty.make_value_from_datastore-expanded"><a name="L277"></a><tt class="py-lineno">277</tt> <tt class="py-line"> <tt id="link-101" class="py-name"><a title="apiclient.discovery.logger
oauth2client.appengine.logger
oauth2client.client.logger
oauth2client.crypt.logger
oauth2client.gce.logger
oauth2client.locked_file.logger
oauth2client.multistore_file.logger
-oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-104', 'logger', 'link-49');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">"make: Got type "</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L277"></a><tt class="py-lineno">277</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">value</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L278"></a><tt class="py-lineno">278</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
-<a name="L279"></a><tt class="py-lineno">279</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
-<a name="L280"></a><tt class="py-lineno">280</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
-<a name="L281"></a><tt class="py-lineno">281</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L282"></a><tt class="py-lineno">282</tt> <tt class="py-line"> <tt id="link-105" class="py-name" targets="Variable oauth2client.appengine.CredentialsModel.credentials=oauth2client.appengine.CredentialsModel-class.html#credentials,Variable oauth2client.appengine.CredentialsNDBModel.credentials=oauth2client.appengine.CredentialsNDBModel-class.html#credentials"><a title="oauth2client.appengine.CredentialsModel.credentials
-oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-105', 'credentials', 'link-105');">credentials</a></tt> <tt class="py-op">=</tt> <tt id="link-106" class="py-name"><a title="oauth2client.client.Credentials" class="py-name" href="#" onclick="return doclink('link-106', 'Credentials', 'link-35');">Credentials</a></tt><tt class="py-op">.</tt><tt id="link-107" class="py-name" targets="Class Method apiclient.http.MediaUpload.new_from_json()=apiclient.http.MediaUpload-class.html#new_from_json,Class Method oauth2client.client.Credentials.new_from_json()=oauth2client.client.Credentials-class.html#new_from_json"><a title="apiclient.http.MediaUpload.new_from_json
-oauth2client.client.Credentials.new_from_json" class="py-name" href="#" onclick="return doclink('link-107', 'new_from_json', 'link-107');">new_from_json</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
-<a name="L283"></a><tt class="py-lineno">283</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt><tt class="py-op">:</tt> </tt>
-<a name="L284"></a><tt class="py-lineno">284</tt> <tt class="py-line"> <tt id="link-108" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
-oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-108', 'credentials', 'link-105');">credentials</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L285"></a><tt class="py-lineno">285</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-109" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
-oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-109', 'credentials', 'link-105');">credentials</a></tt> </tt>
-</div><a name="L286"></a><tt class="py-lineno">286</tt> <tt class="py-line"> </tt>
-<a name="CredentialsProperty.validate"></a><div id="CredentialsProperty.validate-def"><a name="L287"></a><tt class="py-lineno">287</tt> <a class="py-toggle" href="#" id="CredentialsProperty.validate-toggle" onclick="return toggle('CredentialsProperty.validate');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.CredentialsProperty-class.html#validate">validate</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="CredentialsProperty.validate-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="CredentialsProperty.validate-expanded"><a name="L288"></a><tt class="py-lineno">288</tt> <tt class="py-line"> <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-110" class="py-name"><a title="oauth2client.appengine.CredentialsProperty" class="py-name" href="#" onclick="return doclink('link-110', 'CredentialsProperty', 'link-101');">CredentialsProperty</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-111" class="py-name"><a title="oauth2client.appengine.CredentialsProperty.validate
-oauth2client.appengine.FlowProperty.validate" class="py-name" href="#" onclick="return doclink('link-111', 'validate', 'link-94');">validate</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
-<a name="L289"></a><tt class="py-lineno">289</tt> <tt class="py-line"> <tt id="link-112" class="py-name"><a title="apiclient.discovery.logger
+oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-101', 'logger', 'link-44');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">"make: Got type "</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L278"></a><tt class="py-lineno">278</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">value</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L279"></a><tt class="py-lineno">279</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+<a name="L280"></a><tt class="py-lineno">280</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L281"></a><tt class="py-lineno">281</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+<a name="L282"></a><tt class="py-lineno">282</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L283"></a><tt class="py-lineno">283</tt> <tt class="py-line"> <tt id="link-102" class="py-name" targets="Variable oauth2client.appengine.CredentialsModel.credentials=oauth2client.appengine.CredentialsModel-class.html#credentials,Variable oauth2client.appengine.CredentialsNDBModel.credentials=oauth2client.appengine.CredentialsNDBModel-class.html#credentials,Variable oauth2client.appengine.OAuth2Decorator.credentials=oauth2client.appengine.OAuth2Decorator-class.html#credentials"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-102', 'credentials', 'link-102');">credentials</a></tt> <tt class="py-op">=</tt> <tt id="link-103" class="py-name"><a title="oauth2client.client.Credentials" class="py-name" href="#" onclick="return doclink('link-103', 'Credentials', 'link-31');">Credentials</a></tt><tt class="py-op">.</tt><tt id="link-104" class="py-name" targets="Class Method apiclient.http.MediaUpload.new_from_json()=apiclient.http.MediaUpload-class.html#new_from_json,Class Method oauth2client.client.Credentials.new_from_json()=oauth2client.client.Credentials-class.html#new_from_json"><a title="apiclient.http.MediaUpload.new_from_json
+oauth2client.client.Credentials.new_from_json" class="py-name" href="#" onclick="return doclink('link-104', 'new_from_json', 'link-104');">new_from_json</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+<a name="L284"></a><tt class="py-lineno">284</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt><tt class="py-op">:</tt> </tt>
+<a name="L285"></a><tt class="py-lineno">285</tt> <tt class="py-line"> <tt id="link-105" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-105', 'credentials', 'link-102');">credentials</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L286"></a><tt class="py-lineno">286</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-106" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-106', 'credentials', 'link-102');">credentials</a></tt> </tt>
+</div><a name="L287"></a><tt class="py-lineno">287</tt> <tt class="py-line"> </tt>
+<a name="CredentialsProperty.validate"></a><div id="CredentialsProperty.validate-def"><a name="L288"></a><tt class="py-lineno">288</tt> <a class="py-toggle" href="#" id="CredentialsProperty.validate-toggle" onclick="return toggle('CredentialsProperty.validate');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.CredentialsProperty-class.html#validate">validate</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="CredentialsProperty.validate-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="CredentialsProperty.validate-expanded"><a name="L289"></a><tt class="py-lineno">289</tt> <tt class="py-line"> <tt class="py-name">value</tt> <tt class="py-op">=</tt> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-107" class="py-name"><a title="oauth2client.appengine.CredentialsProperty" class="py-name" href="#" onclick="return doclink('link-107', 'CredentialsProperty', 'link-98');">CredentialsProperty</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-108" class="py-name"><a title="oauth2client.appengine.CredentialsProperty.validate
+oauth2client.appengine.FlowProperty.validate" class="py-name" href="#" onclick="return doclink('link-108', 'validate', 'link-91');">validate</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+<a name="L290"></a><tt class="py-lineno">290</tt> <tt class="py-line"> <tt id="link-109" class="py-name"><a title="apiclient.discovery.logger
oauth2client.appengine.logger
oauth2client.client.logger
oauth2client.crypt.logger
oauth2client.gce.logger
oauth2client.locked_file.logger
oauth2client.multistore_file.logger
-oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-112', 'logger', 'link-49');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">"validate: Got type "</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L290"></a><tt class="py-lineno">290</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">value</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt id="link-113" class="py-name"><a title="oauth2client.client.Credentials" class="py-name" href="#" onclick="return doclink('link-113', 'Credentials', 'link-35');">Credentials</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L291"></a><tt class="py-lineno">291</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">db</tt><tt class="py-op">.</tt><tt class="py-name">BadValueError</tt><tt class="py-op">(</tt><tt class="py-string">'Property %s must be convertible '</tt> </tt>
-<a name="L292"></a><tt class="py-lineno">292</tt> <tt class="py-line"> <tt class="py-string">'to a Credentials instance (%s)'</tt> <tt class="py-op">%</tt> </tt>
-<a name="L293"></a><tt class="py-lineno">293</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L294"></a><tt class="py-lineno">294</tt> <tt class="py-line"> <tt class="py-comment">#if value is not None and not isinstance(value, Credentials):</tt> </tt>
-<a name="L295"></a><tt class="py-lineno">295</tt> <tt class="py-line"> <tt class="py-comment"># return None</tt> </tt>
-<a name="L296"></a><tt class="py-lineno">296</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">value</tt> </tt>
-</div></div><a name="L297"></a><tt class="py-lineno">297</tt> <tt class="py-line"> </tt>
-<a name="L298"></a><tt class="py-lineno">298</tt> <tt class="py-line"> </tt>
-<a name="L299"></a><tt class="py-lineno">299</tt> <tt class="py-line"><tt class="py-keyword">if</tt> <tt id="link-114" class="py-name"><a title="oauth2client.appengine.ndb" class="py-name" href="#" onclick="return doclink('link-114', 'ndb', 'link-47');">ndb</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="CredentialsNDBProperty"></a><div id="CredentialsNDBProperty-def"><a name="L300"></a><tt class="py-lineno">300</tt> <tt class="py-line"> <tt class="py-comment"># TODO(dhermes): Turn this into a JsonProperty and overhaul the Credentials</tt> </tt>
-<a name="L301"></a><tt class="py-lineno">301</tt> <tt class="py-line"> <tt class="py-comment"># and subclass mechanics to use new_from_dict, to_dict,</tt> </tt>
-<a name="L302"></a><tt class="py-lineno">302</tt> <tt class="py-line"> <tt class="py-comment"># from_dict, etc.</tt> </tt>
-<a name="L303"></a><tt class="py-lineno">303</tt> <a class="py-toggle" href="#" id="CredentialsNDBProperty-toggle" onclick="return toggle('CredentialsNDBProperty');">-</a><tt class="py-line"> <tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.appengine.CredentialsNDBProperty-class.html">CredentialsNDBProperty</a><tt class="py-op">(</tt><tt class="py-base-class">ndb</tt><tt class="py-op">.</tt><tt class="py-base-class">BlobProperty</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="CredentialsNDBProperty-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="CredentialsNDBProperty-expanded"><a name="L304"></a><tt class="py-lineno">304</tt> <tt class="py-line"> <tt class="py-docstring">"""App Engine NDB datastore Property for Credentials.</tt> </tt>
-<a name="L305"></a><tt class="py-lineno">305</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L306"></a><tt class="py-lineno">306</tt> <tt class="py-line"><tt class="py-docstring"> Serves the same purpose as the DB CredentialsProperty, but for NDB models.</tt> </tt>
-<a name="L307"></a><tt class="py-lineno">307</tt> <tt class="py-line"><tt class="py-docstring"> Since CredentialsProperty stores data as a blob and this inherits from</tt> </tt>
-<a name="L308"></a><tt class="py-lineno">308</tt> <tt class="py-line"><tt class="py-docstring"> BlobProperty, the data in the datastore will be the same as in the DB case.</tt> </tt>
-<a name="L309"></a><tt class="py-lineno">309</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L310"></a><tt class="py-lineno">310</tt> <tt class="py-line"><tt class="py-docstring"> Utility property that allows easy storage and retrieval of Credentials and</tt> </tt>
-<a name="L311"></a><tt class="py-lineno">311</tt> <tt class="py-line"><tt class="py-docstring"> subclasses.</tt> </tt>
-<a name="L312"></a><tt class="py-lineno">312</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="CredentialsNDBProperty._validate"></a><div id="CredentialsNDBProperty._validate-def"><a name="L313"></a><tt class="py-lineno">313</tt> <a class="py-toggle" href="#" id="CredentialsNDBProperty._validate-toggle" onclick="return toggle('CredentialsNDBProperty._validate');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.CredentialsNDBProperty-class.html#_validate">_validate</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="CredentialsNDBProperty._validate-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="CredentialsNDBProperty._validate-expanded"><a name="L314"></a><tt class="py-lineno">314</tt> <tt class="py-line"> <tt class="py-docstring">"""Validates a value as a proper credentials object.</tt> </tt>
-<a name="L315"></a><tt class="py-lineno">315</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L316"></a><tt class="py-lineno">316</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L317"></a><tt class="py-lineno">317</tt> <tt class="py-line"><tt class="py-docstring"> value: A value to be set on the property.</tt> </tt>
-<a name="L318"></a><tt class="py-lineno">318</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L319"></a><tt class="py-lineno">319</tt> <tt class="py-line"><tt class="py-docstring"> Raises:</tt> </tt>
-<a name="L320"></a><tt class="py-lineno">320</tt> <tt class="py-line"><tt class="py-docstring"> TypeError if the value is not an instance of Credentials.</tt> </tt>
-<a name="L321"></a><tt class="py-lineno">321</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L322"></a><tt class="py-lineno">322</tt> <tt class="py-line"> <tt id="link-115" class="py-name"><a title="apiclient.discovery.logger
+oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-109', 'logger', 'link-44');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">"validate: Got type "</tt> <tt class="py-op">+</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L291"></a><tt class="py-lineno">291</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">value</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt id="link-110" class="py-name"><a title="oauth2client.client.Credentials" class="py-name" href="#" onclick="return doclink('link-110', 'Credentials', 'link-31');">Credentials</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L292"></a><tt class="py-lineno">292</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">db</tt><tt class="py-op">.</tt><tt class="py-name">BadValueError</tt><tt class="py-op">(</tt><tt class="py-string">'Property %s must be convertible '</tt> </tt>
+<a name="L293"></a><tt class="py-lineno">293</tt> <tt class="py-line"> <tt class="py-string">'to a Credentials instance (%s)'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L294"></a><tt class="py-lineno">294</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">name</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L295"></a><tt class="py-lineno">295</tt> <tt class="py-line"> <tt class="py-comment">#if value is not None and not isinstance(value, Credentials):</tt> </tt>
+<a name="L296"></a><tt class="py-lineno">296</tt> <tt class="py-line"> <tt class="py-comment"># return None</tt> </tt>
+<a name="L297"></a><tt class="py-lineno">297</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">value</tt> </tt>
+</div></div><a name="L298"></a><tt class="py-lineno">298</tt> <tt class="py-line"> </tt>
+<a name="L299"></a><tt class="py-lineno">299</tt> <tt class="py-line"> </tt>
+<a name="L300"></a><tt class="py-lineno">300</tt> <tt class="py-line"><tt class="py-keyword">if</tt> <tt id="link-111" class="py-name"><a title="oauth2client.appengine.ndb" class="py-name" href="#" onclick="return doclink('link-111', 'ndb', 'link-42');">ndb</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="CredentialsNDBProperty"></a><div id="CredentialsNDBProperty-def"><a name="L301"></a><tt class="py-lineno">301</tt> <tt class="py-line"> <tt class="py-comment"># TODO(dhermes): Turn this into a JsonProperty and overhaul the Credentials</tt> </tt>
+<a name="L302"></a><tt class="py-lineno">302</tt> <tt class="py-line"> <tt class="py-comment"># and subclass mechanics to use new_from_dict, to_dict,</tt> </tt>
+<a name="L303"></a><tt class="py-lineno">303</tt> <tt class="py-line"> <tt class="py-comment"># from_dict, etc.</tt> </tt>
+<a name="L304"></a><tt class="py-lineno">304</tt> <a class="py-toggle" href="#" id="CredentialsNDBProperty-toggle" onclick="return toggle('CredentialsNDBProperty');">-</a><tt class="py-line"> <tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.appengine.CredentialsNDBProperty-class.html">CredentialsNDBProperty</a><tt class="py-op">(</tt><tt class="py-base-class">ndb</tt><tt class="py-op">.</tt><tt class="py-base-class">BlobProperty</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="CredentialsNDBProperty-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="CredentialsNDBProperty-expanded"><a name="L305"></a><tt class="py-lineno">305</tt> <tt class="py-line"> <tt class="py-docstring">"""App Engine NDB datastore Property for Credentials.</tt> </tt>
+<a name="L306"></a><tt class="py-lineno">306</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L307"></a><tt class="py-lineno">307</tt> <tt class="py-line"><tt class="py-docstring"> Serves the same purpose as the DB CredentialsProperty, but for NDB models.</tt> </tt>
+<a name="L308"></a><tt class="py-lineno">308</tt> <tt class="py-line"><tt class="py-docstring"> Since CredentialsProperty stores data as a blob and this inherits from</tt> </tt>
+<a name="L309"></a><tt class="py-lineno">309</tt> <tt class="py-line"><tt class="py-docstring"> BlobProperty, the data in the datastore will be the same as in the DB case.</tt> </tt>
+<a name="L310"></a><tt class="py-lineno">310</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L311"></a><tt class="py-lineno">311</tt> <tt class="py-line"><tt class="py-docstring"> Utility property that allows easy storage and retrieval of Credentials and</tt> </tt>
+<a name="L312"></a><tt class="py-lineno">312</tt> <tt class="py-line"><tt class="py-docstring"> subclasses.</tt> </tt>
+<a name="L313"></a><tt class="py-lineno">313</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="CredentialsNDBProperty._validate"></a><div id="CredentialsNDBProperty._validate-def"><a name="L314"></a><tt class="py-lineno">314</tt> <a class="py-toggle" href="#" id="CredentialsNDBProperty._validate-toggle" onclick="return toggle('CredentialsNDBProperty._validate');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.CredentialsNDBProperty-class.html#_validate">_validate</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="CredentialsNDBProperty._validate-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="CredentialsNDBProperty._validate-expanded"><a name="L315"></a><tt class="py-lineno">315</tt> <tt class="py-line"> <tt class="py-docstring">"""Validates a value as a proper credentials object.</tt> </tt>
+<a name="L316"></a><tt class="py-lineno">316</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L317"></a><tt class="py-lineno">317</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L318"></a><tt class="py-lineno">318</tt> <tt class="py-line"><tt class="py-docstring"> value: A value to be set on the property.</tt> </tt>
+<a name="L319"></a><tt class="py-lineno">319</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L320"></a><tt class="py-lineno">320</tt> <tt class="py-line"><tt class="py-docstring"> Raises:</tt> </tt>
+<a name="L321"></a><tt class="py-lineno">321</tt> <tt class="py-line"><tt class="py-docstring"> TypeError if the value is not an instance of Credentials.</tt> </tt>
+<a name="L322"></a><tt class="py-lineno">322</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L323"></a><tt class="py-lineno">323</tt> <tt class="py-line"> <tt id="link-112" class="py-name"><a title="apiclient.discovery.logger
oauth2client.appengine.logger
oauth2client.client.logger
oauth2client.crypt.logger
oauth2client.gce.logger
oauth2client.locked_file.logger
oauth2client.multistore_file.logger
-oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-115', 'logger', 'link-49');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'validate: Got type %s'</tt><tt class="py-op">,</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L323"></a><tt class="py-lineno">323</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">value</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt id="link-116" class="py-name"><a title="oauth2client.client.Credentials" class="py-name" href="#" onclick="return doclink('link-116', 'Credentials', 'link-35');">Credentials</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L324"></a><tt class="py-lineno">324</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">'Property %s must be convertible to a credentials '</tt> </tt>
-<a name="L325"></a><tt class="py-lineno">325</tt> <tt class="py-line"> <tt class="py-string">'instance; received: %s.'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_name</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L326"></a><tt class="py-lineno">326</tt> <tt class="py-line"> </tt>
-<a name="CredentialsNDBProperty._to_base_type"></a><div id="CredentialsNDBProperty._to_base_type-def"><a name="L327"></a><tt class="py-lineno">327</tt> <a class="py-toggle" href="#" id="CredentialsNDBProperty._to_base_type-toggle" onclick="return toggle('CredentialsNDBProperty._to_base_type');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.CredentialsNDBProperty-class.html#_to_base_type">_to_base_type</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="CredentialsNDBProperty._to_base_type-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="CredentialsNDBProperty._to_base_type-expanded"><a name="L328"></a><tt class="py-lineno">328</tt> <tt class="py-line"> <tt class="py-docstring">"""Converts our validated value to a JSON serialized string.</tt> </tt>
-<a name="L329"></a><tt class="py-lineno">329</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L330"></a><tt class="py-lineno">330</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L331"></a><tt class="py-lineno">331</tt> <tt class="py-line"><tt class="py-docstring"> value: A value to be set in the datastore.</tt> </tt>
-<a name="L332"></a><tt class="py-lineno">332</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L333"></a><tt class="py-lineno">333</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L334"></a><tt class="py-lineno">334</tt> <tt class="py-line"><tt class="py-docstring"> A JSON serialized version of the credential, else '' if value is None.</tt> </tt>
-<a name="L335"></a><tt class="py-lineno">335</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L336"></a><tt class="py-lineno">336</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">value</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L337"></a><tt class="py-lineno">337</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">''</tt> </tt>
-<a name="L338"></a><tt class="py-lineno">338</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L339"></a><tt class="py-lineno">339</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">value</tt><tt class="py-op">.</tt><tt id="link-117" class="py-name"><a title="apiclient.http.HttpRequest.to_json
+oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-112', 'logger', 'link-44');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'validate: Got type %s'</tt><tt class="py-op">,</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L324"></a><tt class="py-lineno">324</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">value</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">,</tt> <tt id="link-113" class="py-name"><a title="oauth2client.client.Credentials" class="py-name" href="#" onclick="return doclink('link-113', 'Credentials', 'link-31');">Credentials</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L325"></a><tt class="py-lineno">325</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">'Property %s must be convertible to a credentials '</tt> </tt>
+<a name="L326"></a><tt class="py-lineno">326</tt> <tt class="py-line"> <tt class="py-string">'instance; received: %s.'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_name</tt><tt class="py-op">,</tt> <tt class="py-name">value</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L327"></a><tt class="py-lineno">327</tt> <tt class="py-line"> </tt>
+<a name="CredentialsNDBProperty._to_base_type"></a><div id="CredentialsNDBProperty._to_base_type-def"><a name="L328"></a><tt class="py-lineno">328</tt> <a class="py-toggle" href="#" id="CredentialsNDBProperty._to_base_type-toggle" onclick="return toggle('CredentialsNDBProperty._to_base_type');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.CredentialsNDBProperty-class.html#_to_base_type">_to_base_type</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="CredentialsNDBProperty._to_base_type-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="CredentialsNDBProperty._to_base_type-expanded"><a name="L329"></a><tt class="py-lineno">329</tt> <tt class="py-line"> <tt class="py-docstring">"""Converts our validated value to a JSON serialized string.</tt> </tt>
+<a name="L330"></a><tt class="py-lineno">330</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L331"></a><tt class="py-lineno">331</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L332"></a><tt class="py-lineno">332</tt> <tt class="py-line"><tt class="py-docstring"> value: A value to be set in the datastore.</tt> </tt>
+<a name="L333"></a><tt class="py-lineno">333</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L334"></a><tt class="py-lineno">334</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L335"></a><tt class="py-lineno">335</tt> <tt class="py-line"><tt class="py-docstring"> A JSON serialized version of the credential, else '' if value is None.</tt> </tt>
+<a name="L336"></a><tt class="py-lineno">336</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L337"></a><tt class="py-lineno">337</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">value</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L338"></a><tt class="py-lineno">338</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">''</tt> </tt>
+<a name="L339"></a><tt class="py-lineno">339</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L340"></a><tt class="py-lineno">340</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">value</tt><tt class="py-op">.</tt><tt id="link-114" class="py-name"><a title="apiclient.http.HttpRequest.to_json
apiclient.http.MediaFileUpload.to_json
apiclient.http.MediaIoBaseUpload.to_json
apiclient.http.MediaUpload.to_json
oauth2client.client.Credentials.to_json
-oauth2client.client.OAuth2Credentials.to_json" class="py-name" href="#" onclick="return doclink('link-117', 'to_json', 'link-103');">to_json</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L340"></a><tt class="py-lineno">340</tt> <tt class="py-line"> </tt>
-<a name="CredentialsNDBProperty._from_base_type"></a><div id="CredentialsNDBProperty._from_base_type-def"><a name="L341"></a><tt class="py-lineno">341</tt> <a class="py-toggle" href="#" id="CredentialsNDBProperty._from_base_type-toggle" onclick="return toggle('CredentialsNDBProperty._from_base_type');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.CredentialsNDBProperty-class.html#_from_base_type">_from_base_type</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="CredentialsNDBProperty._from_base_type-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="CredentialsNDBProperty._from_base_type-expanded"><a name="L342"></a><tt class="py-lineno">342</tt> <tt class="py-line"> <tt class="py-docstring">"""Converts our stored JSON string back to the desired type.</tt> </tt>
-<a name="L343"></a><tt class="py-lineno">343</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L344"></a><tt class="py-lineno">344</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L345"></a><tt class="py-lineno">345</tt> <tt class="py-line"><tt class="py-docstring"> value: A value from the datastore to be converted to the desired type.</tt> </tt>
-<a name="L346"></a><tt class="py-lineno">346</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L347"></a><tt class="py-lineno">347</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L348"></a><tt class="py-lineno">348</tt> <tt class="py-line"><tt class="py-docstring"> A deserialized Credentials (or subclass) object, else None if the</tt> </tt>
-<a name="L349"></a><tt class="py-lineno">349</tt> <tt class="py-line"><tt class="py-docstring"> value can't be parsed.</tt> </tt>
-<a name="L350"></a><tt class="py-lineno">350</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L351"></a><tt class="py-lineno">351</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">value</tt><tt class="py-op">:</tt> </tt>
-<a name="L352"></a><tt class="py-lineno">352</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
-<a name="L353"></a><tt class="py-lineno">353</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L354"></a><tt class="py-lineno">354</tt> <tt class="py-line"> <tt class="py-comment"># Uses the from_json method of the implied class of value</tt> </tt>
-<a name="L355"></a><tt class="py-lineno">355</tt> <tt class="py-line"> <tt id="link-118" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
-oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-118', 'credentials', 'link-105');">credentials</a></tt> <tt class="py-op">=</tt> <tt id="link-119" class="py-name"><a title="oauth2client.client.Credentials" class="py-name" href="#" onclick="return doclink('link-119', 'Credentials', 'link-35');">Credentials</a></tt><tt class="py-op">.</tt><tt id="link-120" class="py-name"><a title="apiclient.http.MediaUpload.new_from_json
-oauth2client.client.Credentials.new_from_json" class="py-name" href="#" onclick="return doclink('link-120', 'new_from_json', 'link-107');">new_from_json</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
-<a name="L356"></a><tt class="py-lineno">356</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt><tt class="py-op">:</tt> </tt>
-<a name="L357"></a><tt class="py-lineno">357</tt> <tt class="py-line"> <tt id="link-121" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
-oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-121', 'credentials', 'link-105');">credentials</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L358"></a><tt class="py-lineno">358</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-122" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
-oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-122', 'credentials', 'link-105');">credentials</a></tt> </tt>
-</div></div><a name="L359"></a><tt class="py-lineno">359</tt> <tt class="py-line"> </tt>
-<a name="StorageByKeyName"></a><div id="StorageByKeyName-def"><a name="L360"></a><tt class="py-lineno">360</tt> <tt class="py-line"> </tt>
-<a name="L361"></a><tt class="py-lineno">361</tt> <a class="py-toggle" href="#" id="StorageByKeyName-toggle" onclick="return toggle('StorageByKeyName');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.appengine.StorageByKeyName-class.html">StorageByKeyName</a><tt class="py-op">(</tt><tt class="py-base-class">Storage</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="StorageByKeyName-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="StorageByKeyName-expanded"><a name="L362"></a><tt class="py-lineno">362</tt> <tt class="py-line"> <tt class="py-docstring">"""Store and retrieve a credential to and from the App Engine datastore.</tt> </tt>
-<a name="L363"></a><tt class="py-lineno">363</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L364"></a><tt class="py-lineno">364</tt> <tt class="py-line"><tt class="py-docstring"> This Storage helper presumes the Credentials have been stored as a</tt> </tt>
-<a name="L365"></a><tt class="py-lineno">365</tt> <tt class="py-line"><tt class="py-docstring"> CredentialsProperty or CredentialsNDBProperty on a datastore model class, and</tt> </tt>
-<a name="L366"></a><tt class="py-lineno">366</tt> <tt class="py-line"><tt class="py-docstring"> that entities are stored by key_name.</tt> </tt>
-<a name="L367"></a><tt class="py-lineno">367</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L368"></a><tt class="py-lineno">368</tt> <tt class="py-line"> </tt>
-<a name="L369"></a><tt class="py-lineno">369</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-123" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-123', 'positional', 'link-78');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">4</tt><tt class="py-op">)</tt> </tt>
-<a name="StorageByKeyName.__init__"></a><div id="StorageByKeyName.__init__-def"><a name="L370"></a><tt class="py-lineno">370</tt> <a class="py-toggle" href="#" id="StorageByKeyName.__init__-toggle" onclick="return toggle('StorageByKeyName.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.StorageByKeyName-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">model</tt><tt class="py-op">,</tt> <tt class="py-param">key_name</tt><tt class="py-op">,</tt> <tt class="py-param">property_name</tt><tt class="py-op">,</tt> <tt class="py-param">cache</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="StorageByKeyName.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="StorageByKeyName.__init__-expanded"><a name="L371"></a><tt class="py-lineno">371</tt> <tt class="py-line"> <tt class="py-docstring">"""Constructor for Storage.</tt> </tt>
-<a name="L372"></a><tt class="py-lineno">372</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L373"></a><tt class="py-lineno">373</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L374"></a><tt class="py-lineno">374</tt> <tt class="py-line"><tt class="py-docstring"> model: db.Model or ndb.Model, model class</tt> </tt>
-<a name="L375"></a><tt class="py-lineno">375</tt> <tt class="py-line"><tt class="py-docstring"> key_name: string, key name for the entity that has the credentials</tt> </tt>
-<a name="L376"></a><tt class="py-lineno">376</tt> <tt class="py-line"><tt class="py-docstring"> property_name: string, name of the property that is a CredentialsProperty</tt> </tt>
-<a name="L377"></a><tt class="py-lineno">377</tt> <tt class="py-line"><tt class="py-docstring"> or CredentialsNDBProperty.</tt> </tt>
-<a name="L378"></a><tt class="py-lineno">378</tt> <tt class="py-line"><tt class="py-docstring"> cache: memcache, a write-through cache to put in front of the datastore.</tt> </tt>
-<a name="L379"></a><tt class="py-lineno">379</tt> <tt class="py-line"><tt class="py-docstring"> If the model you are using is an NDB model, using a cache will be</tt> </tt>
-<a name="L380"></a><tt class="py-lineno">380</tt> <tt class="py-line"><tt class="py-docstring"> redundant since the model uses an instance cache and memcache for you.</tt> </tt>
-<a name="L381"></a><tt class="py-lineno">381</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L382"></a><tt class="py-lineno">382</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_model</tt> <tt class="py-op">=</tt> <tt id="link-124" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-124', 'model', 'link-61');">model</a></tt> </tt>
-<a name="L383"></a><tt class="py-lineno">383</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key_name</tt> <tt class="py-op">=</tt> <tt class="py-name">key_name</tt> </tt>
-<a name="L384"></a><tt class="py-lineno">384</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_property_name</tt> <tt class="py-op">=</tt> <tt class="py-name">property_name</tt> </tt>
-<a name="L385"></a><tt class="py-lineno">385</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cache</tt> <tt class="py-op">=</tt> <tt class="py-name">cache</tt> </tt>
-</div><a name="L386"></a><tt class="py-lineno">386</tt> <tt class="py-line"> </tt>
-<a name="StorageByKeyName._is_ndb"></a><div id="StorageByKeyName._is_ndb-def"><a name="L387"></a><tt class="py-lineno">387</tt> <a class="py-toggle" href="#" id="StorageByKeyName._is_ndb-toggle" onclick="return toggle('StorageByKeyName._is_ndb');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.StorageByKeyName-class.html#_is_ndb">_is_ndb</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="StorageByKeyName._is_ndb-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="StorageByKeyName._is_ndb-expanded"><a name="L388"></a><tt class="py-lineno">388</tt> <tt class="py-line"> <tt class="py-docstring">"""Determine whether the model of the instance is an NDB model.</tt> </tt>
-<a name="L389"></a><tt class="py-lineno">389</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L390"></a><tt class="py-lineno">390</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L391"></a><tt class="py-lineno">391</tt> <tt class="py-line"><tt class="py-docstring"> Boolean indicating whether or not the model is an NDB or DB model.</tt> </tt>
-<a name="L392"></a><tt class="py-lineno">392</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L393"></a><tt class="py-lineno">393</tt> <tt class="py-line"> <tt class="py-comment"># issubclass will fail if one of the arguments is not a class, only need</tt> </tt>
-<a name="L394"></a><tt class="py-lineno">394</tt> <tt class="py-line"> <tt class="py-comment"># worry about new-style classes since ndb and db models are new-style</tt> </tt>
-<a name="L395"></a><tt class="py-lineno">395</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_model</tt><tt class="py-op">,</tt> <tt class="py-name">type</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L396"></a><tt class="py-lineno">396</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-125" class="py-name"><a title="oauth2client.appengine.ndb" class="py-name" href="#" onclick="return doclink('link-125', 'ndb', 'link-47');">ndb</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">issubclass</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_model</tt><tt class="py-op">,</tt> <tt id="link-126" class="py-name"><a title="oauth2client.appengine.ndb" class="py-name" href="#" onclick="return doclink('link-126', 'ndb', 'link-47');">ndb</a></tt><tt class="py-op">.</tt><tt id="link-127" class="py-name" targets="Class apiclient.model.Model=apiclient.model.Model-class.html"><a title="apiclient.model.Model" class="py-name" href="#" onclick="return doclink('link-127', 'Model', 'link-127');">Model</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L397"></a><tt class="py-lineno">397</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
-<a name="L398"></a><tt class="py-lineno">398</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">issubclass</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_model</tt><tt class="py-op">,</tt> <tt class="py-name">db</tt><tt class="py-op">.</tt><tt id="link-128" class="py-name"><a title="apiclient.model.Model" class="py-name" href="#" onclick="return doclink('link-128', 'Model', 'link-127');">Model</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L399"></a><tt class="py-lineno">399</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
-<a name="L400"></a><tt class="py-lineno">400</tt> <tt class="py-line"> </tt>
-<a name="L401"></a><tt class="py-lineno">401</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">'Model class not an NDB or DB model: %s.'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_model</tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L402"></a><tt class="py-lineno">402</tt> <tt class="py-line"> </tt>
-<a name="StorageByKeyName._get_entity"></a><div id="StorageByKeyName._get_entity-def"><a name="L403"></a><tt class="py-lineno">403</tt> <a class="py-toggle" href="#" id="StorageByKeyName._get_entity-toggle" onclick="return toggle('StorageByKeyName._get_entity');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.StorageByKeyName-class.html#_get_entity">_get_entity</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="StorageByKeyName._get_entity-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="StorageByKeyName._get_entity-expanded"><a name="L404"></a><tt class="py-lineno">404</tt> <tt class="py-line"> <tt class="py-docstring">"""Retrieve entity from datastore.</tt> </tt>
-<a name="L405"></a><tt class="py-lineno">405</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L406"></a><tt class="py-lineno">406</tt> <tt class="py-line"><tt class="py-docstring"> Uses a different model method for db or ndb models.</tt> </tt>
-<a name="L407"></a><tt class="py-lineno">407</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L408"></a><tt class="py-lineno">408</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L409"></a><tt class="py-lineno">409</tt> <tt class="py-line"><tt class="py-docstring"> Instance of the model corresponding to the current storage object</tt> </tt>
-<a name="L410"></a><tt class="py-lineno">410</tt> <tt class="py-line"><tt class="py-docstring"> and stored using the key name of the storage object.</tt> </tt>
-<a name="L411"></a><tt class="py-lineno">411</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L412"></a><tt class="py-lineno">412</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-129" class="py-name" targets="Method oauth2client.appengine.StorageByKeyName._is_ndb()=oauth2client.appengine.StorageByKeyName-class.html#_is_ndb"><a title="oauth2client.appengine.StorageByKeyName._is_ndb" class="py-name" href="#" onclick="return doclink('link-129', '_is_ndb', 'link-129');">_is_ndb</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L413"></a><tt class="py-lineno">413</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_model</tt><tt class="py-op">.</tt><tt class="py-name">get_by_id</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key_name</tt><tt class="py-op">)</tt> </tt>
-<a name="L414"></a><tt class="py-lineno">414</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L415"></a><tt class="py-lineno">415</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_model</tt><tt class="py-op">.</tt><tt class="py-name">get_by_key_name</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key_name</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L416"></a><tt class="py-lineno">416</tt> <tt class="py-line"> </tt>
-<a name="StorageByKeyName._delete_entity"></a><div id="StorageByKeyName._delete_entity-def"><a name="L417"></a><tt class="py-lineno">417</tt> <a class="py-toggle" href="#" id="StorageByKeyName._delete_entity-toggle" onclick="return toggle('StorageByKeyName._delete_entity');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.StorageByKeyName-class.html#_delete_entity">_delete_entity</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="StorageByKeyName._delete_entity-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="StorageByKeyName._delete_entity-expanded"><a name="L418"></a><tt class="py-lineno">418</tt> <tt class="py-line"> <tt class="py-docstring">"""Delete entity from datastore.</tt> </tt>
-<a name="L419"></a><tt class="py-lineno">419</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L420"></a><tt class="py-lineno">420</tt> <tt class="py-line"><tt class="py-docstring"> Attempts to delete using the key_name stored on the object, whether or not</tt> </tt>
-<a name="L421"></a><tt class="py-lineno">421</tt> <tt class="py-line"><tt class="py-docstring"> the given key is in the datastore.</tt> </tt>
-<a name="L422"></a><tt class="py-lineno">422</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L423"></a><tt class="py-lineno">423</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-130" class="py-name"><a title="oauth2client.appengine.StorageByKeyName._is_ndb" class="py-name" href="#" onclick="return doclink('link-130', '_is_ndb', 'link-129');">_is_ndb</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L424"></a><tt class="py-lineno">424</tt> <tt class="py-line"> <tt id="link-131" class="py-name"><a title="oauth2client.appengine.ndb" class="py-name" href="#" onclick="return doclink('link-131', 'ndb', 'link-47');">ndb</a></tt><tt class="py-op">.</tt><tt class="py-name">Key</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_model</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key_name</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-132" class="py-name" targets="Method oauth2client.client.MemoryCache.delete()=oauth2client.client.MemoryCache-class.html#delete,Method oauth2client.client.Storage.delete()=oauth2client.client.Storage-class.html#delete"><a title="oauth2client.client.MemoryCache.delete
-oauth2client.client.Storage.delete" class="py-name" href="#" onclick="return doclink('link-132', 'delete', 'link-132');">delete</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L425"></a><tt class="py-lineno">425</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L426"></a><tt class="py-lineno">426</tt> <tt class="py-line"> <tt class="py-name">entity_key</tt> <tt class="py-op">=</tt> <tt class="py-name">db</tt><tt class="py-op">.</tt><tt class="py-name">Key</tt><tt class="py-op">.</tt><tt class="py-name">from_path</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_model</tt><tt class="py-op">.</tt><tt class="py-name">kind</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key_name</tt><tt class="py-op">)</tt> </tt>
-<a name="L427"></a><tt class="py-lineno">427</tt> <tt class="py-line"> <tt class="py-name">db</tt><tt class="py-op">.</tt><tt id="link-133" class="py-name"><a title="oauth2client.client.MemoryCache.delete
-oauth2client.client.Storage.delete" class="py-name" href="#" onclick="return doclink('link-133', 'delete', 'link-132');">delete</a></tt><tt class="py-op">(</tt><tt class="py-name">entity_key</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L428"></a><tt class="py-lineno">428</tt> <tt class="py-line"> </tt>
-<a name="StorageByKeyName.locked_get"></a><div id="StorageByKeyName.locked_get-def"><a name="L429"></a><tt class="py-lineno">429</tt> <a class="py-toggle" href="#" id="StorageByKeyName.locked_get-toggle" onclick="return toggle('StorageByKeyName.locked_get');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.StorageByKeyName-class.html#locked_get">locked_get</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="StorageByKeyName.locked_get-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="StorageByKeyName.locked_get-expanded"><a name="L430"></a><tt class="py-lineno">430</tt> <tt class="py-line"> <tt class="py-docstring">"""Retrieve Credential from datastore.</tt> </tt>
-<a name="L431"></a><tt class="py-lineno">431</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L432"></a><tt class="py-lineno">432</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L433"></a><tt class="py-lineno">433</tt> <tt class="py-line"><tt class="py-docstring"> oauth2client.Credentials</tt> </tt>
-<a name="L434"></a><tt class="py-lineno">434</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L435"></a><tt class="py-lineno">435</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cache</tt><tt class="py-op">:</tt> </tt>
-<a name="L436"></a><tt class="py-lineno">436</tt> <tt class="py-line"> <tt class="py-name">json</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cache</tt><tt class="py-op">.</tt><tt id="link-134" class="py-name"><a title="apiclient.schema.Schemas.get
+oauth2client.client.OAuth2Credentials.to_json" class="py-name" href="#" onclick="return doclink('link-114', 'to_json', 'link-100');">to_json</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L341"></a><tt class="py-lineno">341</tt> <tt class="py-line"> </tt>
+<a name="CredentialsNDBProperty._from_base_type"></a><div id="CredentialsNDBProperty._from_base_type-def"><a name="L342"></a><tt class="py-lineno">342</tt> <a class="py-toggle" href="#" id="CredentialsNDBProperty._from_base_type-toggle" onclick="return toggle('CredentialsNDBProperty._from_base_type');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.CredentialsNDBProperty-class.html#_from_base_type">_from_base_type</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="CredentialsNDBProperty._from_base_type-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="CredentialsNDBProperty._from_base_type-expanded"><a name="L343"></a><tt class="py-lineno">343</tt> <tt class="py-line"> <tt class="py-docstring">"""Converts our stored JSON string back to the desired type.</tt> </tt>
+<a name="L344"></a><tt class="py-lineno">344</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L345"></a><tt class="py-lineno">345</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L346"></a><tt class="py-lineno">346</tt> <tt class="py-line"><tt class="py-docstring"> value: A value from the datastore to be converted to the desired type.</tt> </tt>
+<a name="L347"></a><tt class="py-lineno">347</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L348"></a><tt class="py-lineno">348</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L349"></a><tt class="py-lineno">349</tt> <tt class="py-line"><tt class="py-docstring"> A deserialized Credentials (or subclass) object, else None if the</tt> </tt>
+<a name="L350"></a><tt class="py-lineno">350</tt> <tt class="py-line"><tt class="py-docstring"> value can't be parsed.</tt> </tt>
+<a name="L351"></a><tt class="py-lineno">351</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L352"></a><tt class="py-lineno">352</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">value</tt><tt class="py-op">:</tt> </tt>
+<a name="L353"></a><tt class="py-lineno">353</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">None</tt> </tt>
+<a name="L354"></a><tt class="py-lineno">354</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L355"></a><tt class="py-lineno">355</tt> <tt class="py-line"> <tt class="py-comment"># Uses the from_json method of the implied class of value</tt> </tt>
+<a name="L356"></a><tt class="py-lineno">356</tt> <tt class="py-line"> <tt id="link-115" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-115', 'credentials', 'link-102');">credentials</a></tt> <tt class="py-op">=</tt> <tt id="link-116" class="py-name"><a title="oauth2client.client.Credentials" class="py-name" href="#" onclick="return doclink('link-116', 'Credentials', 'link-31');">Credentials</a></tt><tt class="py-op">.</tt><tt id="link-117" class="py-name"><a title="apiclient.http.MediaUpload.new_from_json
+oauth2client.client.Credentials.new_from_json" class="py-name" href="#" onclick="return doclink('link-117', 'new_from_json', 'link-104');">new_from_json</a></tt><tt class="py-op">(</tt><tt class="py-name">value</tt><tt class="py-op">)</tt> </tt>
+<a name="L357"></a><tt class="py-lineno">357</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt><tt class="py-op">:</tt> </tt>
+<a name="L358"></a><tt class="py-lineno">358</tt> <tt class="py-line"> <tt id="link-118" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-118', 'credentials', 'link-102');">credentials</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L359"></a><tt class="py-lineno">359</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-119" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-119', 'credentials', 'link-102');">credentials</a></tt> </tt>
+</div></div><a name="L360"></a><tt class="py-lineno">360</tt> <tt class="py-line"> </tt>
+<a name="StorageByKeyName"></a><div id="StorageByKeyName-def"><a name="L361"></a><tt class="py-lineno">361</tt> <tt class="py-line"> </tt>
+<a name="L362"></a><tt class="py-lineno">362</tt> <a class="py-toggle" href="#" id="StorageByKeyName-toggle" onclick="return toggle('StorageByKeyName');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.appengine.StorageByKeyName-class.html">StorageByKeyName</a><tt class="py-op">(</tt><tt class="py-base-class">Storage</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="StorageByKeyName-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="StorageByKeyName-expanded"><a name="L363"></a><tt class="py-lineno">363</tt> <tt class="py-line"> <tt class="py-docstring">"""Store and retrieve a credential to and from the App Engine datastore.</tt> </tt>
+<a name="L364"></a><tt class="py-lineno">364</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L365"></a><tt class="py-lineno">365</tt> <tt class="py-line"><tt class="py-docstring"> This Storage helper presumes the Credentials have been stored as a</tt> </tt>
+<a name="L366"></a><tt class="py-lineno">366</tt> <tt class="py-line"><tt class="py-docstring"> CredentialsProperty or CredentialsNDBProperty on a datastore model class, and</tt> </tt>
+<a name="L367"></a><tt class="py-lineno">367</tt> <tt class="py-line"><tt class="py-docstring"> that entities are stored by key_name.</tt> </tt>
+<a name="L368"></a><tt class="py-lineno">368</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L369"></a><tt class="py-lineno">369</tt> <tt class="py-line"> </tt>
+<a name="L370"></a><tt class="py-lineno">370</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-120" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-120', 'positional', 'link-73');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">4</tt><tt class="py-op">)</tt> </tt>
+<a name="StorageByKeyName.__init__"></a><div id="StorageByKeyName.__init__-def"><a name="L371"></a><tt class="py-lineno">371</tt> <a class="py-toggle" href="#" id="StorageByKeyName.__init__-toggle" onclick="return toggle('StorageByKeyName.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.StorageByKeyName-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">model</tt><tt class="py-op">,</tt> <tt class="py-param">key_name</tt><tt class="py-op">,</tt> <tt class="py-param">property_name</tt><tt class="py-op">,</tt> <tt class="py-param">cache</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">user</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="StorageByKeyName.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="StorageByKeyName.__init__-expanded"><a name="L372"></a><tt class="py-lineno">372</tt> <tt class="py-line"> <tt class="py-docstring">"""Constructor for Storage.</tt> </tt>
+<a name="L373"></a><tt class="py-lineno">373</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L374"></a><tt class="py-lineno">374</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L375"></a><tt class="py-lineno">375</tt> <tt class="py-line"><tt class="py-docstring"> model: db.Model or ndb.Model, model class</tt> </tt>
+<a name="L376"></a><tt class="py-lineno">376</tt> <tt class="py-line"><tt class="py-docstring"> key_name: string, key name for the entity that has the credentials</tt> </tt>
+<a name="L377"></a><tt class="py-lineno">377</tt> <tt class="py-line"><tt class="py-docstring"> property_name: string, name of the property that is a CredentialsProperty</tt> </tt>
+<a name="L378"></a><tt class="py-lineno">378</tt> <tt class="py-line"><tt class="py-docstring"> or CredentialsNDBProperty.</tt> </tt>
+<a name="L379"></a><tt class="py-lineno">379</tt> <tt class="py-line"><tt class="py-docstring"> cache: memcache, a write-through cache to put in front of the datastore.</tt> </tt>
+<a name="L380"></a><tt class="py-lineno">380</tt> <tt class="py-line"><tt class="py-docstring"> If the model you are using is an NDB model, using a cache will be</tt> </tt>
+<a name="L381"></a><tt class="py-lineno">381</tt> <tt class="py-line"><tt class="py-docstring"> redundant since the model uses an instance cache and memcache for you.</tt> </tt>
+<a name="L382"></a><tt class="py-lineno">382</tt> <tt class="py-line"><tt class="py-docstring"> user: users.User object, optional. Can be used to grab user ID as a</tt> </tt>
+<a name="L383"></a><tt class="py-lineno">383</tt> <tt class="py-line"><tt class="py-docstring"> key_name if no key name is specified.</tt> </tt>
+<a name="L384"></a><tt class="py-lineno">384</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L385"></a><tt class="py-lineno">385</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">key_name</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L386"></a><tt class="py-lineno">386</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">user</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L387"></a><tt class="py-lineno">387</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'StorageByKeyName called with no key name or user.'</tt><tt class="py-op">)</tt> </tt>
+<a name="L388"></a><tt class="py-lineno">388</tt> <tt class="py-line"> <tt class="py-name">key_name</tt> <tt class="py-op">=</tt> <tt class="py-name">user</tt><tt class="py-op">.</tt><tt class="py-name">user_id</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L389"></a><tt class="py-lineno">389</tt> <tt class="py-line"> </tt>
+<a name="L390"></a><tt class="py-lineno">390</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_model</tt> <tt class="py-op">=</tt> <tt id="link-121" class="py-name"><a title="apiclient.model" class="py-name" href="#" onclick="return doclink('link-121', 'model', 'link-56');">model</a></tt> </tt>
+<a name="L391"></a><tt class="py-lineno">391</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key_name</tt> <tt class="py-op">=</tt> <tt class="py-name">key_name</tt> </tt>
+<a name="L392"></a><tt class="py-lineno">392</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_property_name</tt> <tt class="py-op">=</tt> <tt class="py-name">property_name</tt> </tt>
+<a name="L393"></a><tt class="py-lineno">393</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cache</tt> <tt class="py-op">=</tt> <tt class="py-name">cache</tt> </tt>
+</div><a name="L394"></a><tt class="py-lineno">394</tt> <tt class="py-line"> </tt>
+<a name="StorageByKeyName._is_ndb"></a><div id="StorageByKeyName._is_ndb-def"><a name="L395"></a><tt class="py-lineno">395</tt> <a class="py-toggle" href="#" id="StorageByKeyName._is_ndb-toggle" onclick="return toggle('StorageByKeyName._is_ndb');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.StorageByKeyName-class.html#_is_ndb">_is_ndb</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="StorageByKeyName._is_ndb-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="StorageByKeyName._is_ndb-expanded"><a name="L396"></a><tt class="py-lineno">396</tt> <tt class="py-line"> <tt class="py-docstring">"""Determine whether the model of the instance is an NDB model.</tt> </tt>
+<a name="L397"></a><tt class="py-lineno">397</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L398"></a><tt class="py-lineno">398</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L399"></a><tt class="py-lineno">399</tt> <tt class="py-line"><tt class="py-docstring"> Boolean indicating whether or not the model is an NDB or DB model.</tt> </tt>
+<a name="L400"></a><tt class="py-lineno">400</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L401"></a><tt class="py-lineno">401</tt> <tt class="py-line"> <tt class="py-comment"># issubclass will fail if one of the arguments is not a class, only need</tt> </tt>
+<a name="L402"></a><tt class="py-lineno">402</tt> <tt class="py-line"> <tt class="py-comment"># worry about new-style classes since ndb and db models are new-style</tt> </tt>
+<a name="L403"></a><tt class="py-lineno">403</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_model</tt><tt class="py-op">,</tt> <tt class="py-name">type</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L404"></a><tt class="py-lineno">404</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-122" class="py-name"><a title="oauth2client.appengine.ndb" class="py-name" href="#" onclick="return doclink('link-122', 'ndb', 'link-42');">ndb</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-name">issubclass</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_model</tt><tt class="py-op">,</tt> <tt id="link-123" class="py-name"><a title="oauth2client.appengine.ndb" class="py-name" href="#" onclick="return doclink('link-123', 'ndb', 'link-42');">ndb</a></tt><tt class="py-op">.</tt><tt id="link-124" class="py-name" targets="Class apiclient.model.Model=apiclient.model.Model-class.html"><a title="apiclient.model.Model" class="py-name" href="#" onclick="return doclink('link-124', 'Model', 'link-124');">Model</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L405"></a><tt class="py-lineno">405</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
+<a name="L406"></a><tt class="py-lineno">406</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">issubclass</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_model</tt><tt class="py-op">,</tt> <tt class="py-name">db</tt><tt class="py-op">.</tt><tt id="link-125" class="py-name"><a title="apiclient.model.Model" class="py-name" href="#" onclick="return doclink('link-125', 'Model', 'link-124');">Model</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L407"></a><tt class="py-lineno">407</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
+<a name="L408"></a><tt class="py-lineno">408</tt> <tt class="py-line"> </tt>
+<a name="L409"></a><tt class="py-lineno">409</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-string">'Model class not an NDB or DB model: %s.'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_model</tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L410"></a><tt class="py-lineno">410</tt> <tt class="py-line"> </tt>
+<a name="StorageByKeyName._get_entity"></a><div id="StorageByKeyName._get_entity-def"><a name="L411"></a><tt class="py-lineno">411</tt> <a class="py-toggle" href="#" id="StorageByKeyName._get_entity-toggle" onclick="return toggle('StorageByKeyName._get_entity');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.StorageByKeyName-class.html#_get_entity">_get_entity</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="StorageByKeyName._get_entity-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="StorageByKeyName._get_entity-expanded"><a name="L412"></a><tt class="py-lineno">412</tt> <tt class="py-line"> <tt class="py-docstring">"""Retrieve entity from datastore.</tt> </tt>
+<a name="L413"></a><tt class="py-lineno">413</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L414"></a><tt class="py-lineno">414</tt> <tt class="py-line"><tt class="py-docstring"> Uses a different model method for db or ndb models.</tt> </tt>
+<a name="L415"></a><tt class="py-lineno">415</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L416"></a><tt class="py-lineno">416</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L417"></a><tt class="py-lineno">417</tt> <tt class="py-line"><tt class="py-docstring"> Instance of the model corresponding to the current storage object</tt> </tt>
+<a name="L418"></a><tt class="py-lineno">418</tt> <tt class="py-line"><tt class="py-docstring"> and stored using the key name of the storage object.</tt> </tt>
+<a name="L419"></a><tt class="py-lineno">419</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L420"></a><tt class="py-lineno">420</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-126" class="py-name" targets="Method oauth2client.appengine.StorageByKeyName._is_ndb()=oauth2client.appengine.StorageByKeyName-class.html#_is_ndb"><a title="oauth2client.appengine.StorageByKeyName._is_ndb" class="py-name" href="#" onclick="return doclink('link-126', '_is_ndb', 'link-126');">_is_ndb</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L421"></a><tt class="py-lineno">421</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_model</tt><tt class="py-op">.</tt><tt class="py-name">get_by_id</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L422"></a><tt class="py-lineno">422</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L423"></a><tt class="py-lineno">423</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_model</tt><tt class="py-op">.</tt><tt class="py-name">get_by_key_name</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key_name</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L424"></a><tt class="py-lineno">424</tt> <tt class="py-line"> </tt>
+<a name="StorageByKeyName._delete_entity"></a><div id="StorageByKeyName._delete_entity-def"><a name="L425"></a><tt class="py-lineno">425</tt> <a class="py-toggle" href="#" id="StorageByKeyName._delete_entity-toggle" onclick="return toggle('StorageByKeyName._delete_entity');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.StorageByKeyName-class.html#_delete_entity">_delete_entity</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="StorageByKeyName._delete_entity-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="StorageByKeyName._delete_entity-expanded"><a name="L426"></a><tt class="py-lineno">426</tt> <tt class="py-line"> <tt class="py-docstring">"""Delete entity from datastore.</tt> </tt>
+<a name="L427"></a><tt class="py-lineno">427</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L428"></a><tt class="py-lineno">428</tt> <tt class="py-line"><tt class="py-docstring"> Attempts to delete using the key_name stored on the object, whether or not</tt> </tt>
+<a name="L429"></a><tt class="py-lineno">429</tt> <tt class="py-line"><tt class="py-docstring"> the given key is in the datastore.</tt> </tt>
+<a name="L430"></a><tt class="py-lineno">430</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L431"></a><tt class="py-lineno">431</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-127" class="py-name"><a title="oauth2client.appengine.StorageByKeyName._is_ndb" class="py-name" href="#" onclick="return doclink('link-127', '_is_ndb', 'link-126');">_is_ndb</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L432"></a><tt class="py-lineno">432</tt> <tt class="py-line"> <tt id="link-128" class="py-name"><a title="oauth2client.appengine.ndb" class="py-name" href="#" onclick="return doclink('link-128', 'ndb', 'link-42');">ndb</a></tt><tt class="py-op">.</tt><tt class="py-name">Key</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_model</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key_name</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-129" class="py-name" targets="Method oauth2client.client.MemoryCache.delete()=oauth2client.client.MemoryCache-class.html#delete,Method oauth2client.client.Storage.delete()=oauth2client.client.Storage-class.html#delete"><a title="oauth2client.client.MemoryCache.delete
+oauth2client.client.Storage.delete" class="py-name" href="#" onclick="return doclink('link-129', 'delete', 'link-129');">delete</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L433"></a><tt class="py-lineno">433</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L434"></a><tt class="py-lineno">434</tt> <tt class="py-line"> <tt class="py-name">entity_key</tt> <tt class="py-op">=</tt> <tt class="py-name">db</tt><tt class="py-op">.</tt><tt class="py-name">Key</tt><tt class="py-op">.</tt><tt class="py-name">from_path</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_model</tt><tt class="py-op">.</tt><tt class="py-name">kind</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L435"></a><tt class="py-lineno">435</tt> <tt class="py-line"> <tt class="py-name">db</tt><tt class="py-op">.</tt><tt id="link-130" class="py-name"><a title="oauth2client.client.MemoryCache.delete
+oauth2client.client.Storage.delete" class="py-name" href="#" onclick="return doclink('link-130', 'delete', 'link-129');">delete</a></tt><tt class="py-op">(</tt><tt class="py-name">entity_key</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L436"></a><tt class="py-lineno">436</tt> <tt class="py-line"> </tt>
+<a name="StorageByKeyName.locked_get"></a><div id="StorageByKeyName.locked_get-def"><a name="L437"></a><tt class="py-lineno">437</tt> <a class="py-toggle" href="#" id="StorageByKeyName.locked_get-toggle" onclick="return toggle('StorageByKeyName.locked_get');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.StorageByKeyName-class.html#locked_get">locked_get</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="StorageByKeyName.locked_get-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="StorageByKeyName.locked_get-expanded"><a name="L438"></a><tt class="py-lineno">438</tt> <tt class="py-line"> <tt class="py-docstring">"""Retrieve Credential from datastore.</tt> </tt>
+<a name="L439"></a><tt class="py-lineno">439</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L440"></a><tt class="py-lineno">440</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L441"></a><tt class="py-lineno">441</tt> <tt class="py-line"><tt class="py-docstring"> oauth2client.Credentials</tt> </tt>
+<a name="L442"></a><tt class="py-lineno">442</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L443"></a><tt class="py-lineno">443</tt> <tt class="py-line"> <tt id="link-131" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-131', 'credentials', 'link-102');">credentials</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L444"></a><tt class="py-lineno">444</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cache</tt><tt class="py-op">:</tt> </tt>
+<a name="L445"></a><tt class="py-lineno">445</tt> <tt class="py-line"> <tt class="py-name">json</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cache</tt><tt class="py-op">.</tt><tt id="link-132" class="py-name"><a title="apiclient.schema.Schemas.get
oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-134', 'get', 'link-57');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key_name</tt><tt class="py-op">)</tt> </tt>
-<a name="L437"></a><tt class="py-lineno">437</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">json</tt><tt class="py-op">:</tt> </tt>
-<a name="L438"></a><tt class="py-lineno">438</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-135" class="py-name"><a title="oauth2client.client.Credentials" class="py-name" href="#" onclick="return doclink('link-135', 'Credentials', 'link-35');">Credentials</a></tt><tt class="py-op">.</tt><tt id="link-136" class="py-name"><a title="apiclient.http.MediaUpload.new_from_json
-oauth2client.client.Credentials.new_from_json" class="py-name" href="#" onclick="return doclink('link-136', 'new_from_json', 'link-107');">new_from_json</a></tt><tt class="py-op">(</tt><tt class="py-name">json</tt><tt class="py-op">)</tt> </tt>
-<a name="L439"></a><tt class="py-lineno">439</tt> <tt class="py-line"> </tt>
-<a name="L440"></a><tt class="py-lineno">440</tt> <tt class="py-line"> <tt id="link-137" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
-oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-137', 'credentials', 'link-105');">credentials</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L441"></a><tt class="py-lineno">441</tt> <tt class="py-line"> <tt class="py-name">entity</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-138" class="py-name" targets="Method oauth2client.appengine.StorageByKeyName._get_entity()=oauth2client.appengine.StorageByKeyName-class.html#_get_entity"><a title="oauth2client.appengine.StorageByKeyName._get_entity" class="py-name" href="#" onclick="return doclink('link-138', '_get_entity', 'link-138');">_get_entity</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L442"></a><tt class="py-lineno">442</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">entity</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L443"></a><tt class="py-lineno">443</tt> <tt class="py-line"> <tt id="link-139" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
-oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-139', 'credentials', 'link-105');">credentials</a></tt> <tt class="py-op">=</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">entity</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_property_name</tt><tt class="py-op">)</tt> </tt>
-<a name="L444"></a><tt class="py-lineno">444</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-140" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
-oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-140', 'credentials', 'link-105');">credentials</a></tt> <tt class="py-keyword">and</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt id="link-141" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
-oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-141', 'credentials', 'link-105');">credentials</a></tt><tt class="py-op">,</tt> <tt class="py-string">'set_store'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L445"></a><tt class="py-lineno">445</tt> <tt class="py-line"> <tt id="link-142" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
-oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-142', 'credentials', 'link-105');">credentials</a></tt><tt class="py-op">.</tt><tt id="link-143" class="py-name" targets="Method oauth2client.client.OAuth2Credentials.set_store()=oauth2client.client.OAuth2Credentials-class.html#set_store"><a title="oauth2client.client.OAuth2Credentials.set_store" class="py-name" href="#" onclick="return doclink('link-143', 'set_store', 'link-143');">set_store</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
-<a name="L446"></a><tt class="py-lineno">446</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cache</tt><tt class="py-op">:</tt> </tt>
-<a name="L447"></a><tt class="py-lineno">447</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cache</tt><tt class="py-op">.</tt><tt id="link-144" class="py-name" targets="Method oauth2client.client.MemoryCache.set()=oauth2client.client.MemoryCache-class.html#set"><a title="oauth2client.client.MemoryCache.set" class="py-name" href="#" onclick="return doclink('link-144', 'set', 'link-144');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key_name</tt><tt class="py-op">,</tt> <tt id="link-145" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
-oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-145', 'credentials', 'link-105');">credentials</a></tt><tt class="py-op">.</tt><tt id="link-146" class="py-name"><a title="apiclient.http.HttpRequest.to_json
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-132', 'get', 'link-52');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L446"></a><tt class="py-lineno">446</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">json</tt><tt class="py-op">:</tt> </tt>
+<a name="L447"></a><tt class="py-lineno">447</tt> <tt class="py-line"> <tt id="link-133" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-133', 'credentials', 'link-102');">credentials</a></tt> <tt class="py-op">=</tt> <tt id="link-134" class="py-name"><a title="oauth2client.client.Credentials" class="py-name" href="#" onclick="return doclink('link-134', 'Credentials', 'link-31');">Credentials</a></tt><tt class="py-op">.</tt><tt id="link-135" class="py-name"><a title="apiclient.http.MediaUpload.new_from_json
+oauth2client.client.Credentials.new_from_json" class="py-name" href="#" onclick="return doclink('link-135', 'new_from_json', 'link-104');">new_from_json</a></tt><tt class="py-op">(</tt><tt class="py-name">json</tt><tt class="py-op">)</tt> </tt>
+<a name="L448"></a><tt class="py-lineno">448</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-136" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-136', 'credentials', 'link-102');">credentials</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L449"></a><tt class="py-lineno">449</tt> <tt class="py-line"> <tt class="py-name">entity</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-137" class="py-name" targets="Method oauth2client.appengine.StorageByKeyName._get_entity()=oauth2client.appengine.StorageByKeyName-class.html#_get_entity"><a title="oauth2client.appengine.StorageByKeyName._get_entity" class="py-name" href="#" onclick="return doclink('link-137', '_get_entity', 'link-137');">_get_entity</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L450"></a><tt class="py-lineno">450</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">entity</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L451"></a><tt class="py-lineno">451</tt> <tt class="py-line"> <tt id="link-138" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-138', 'credentials', 'link-102');">credentials</a></tt> <tt class="py-op">=</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">entity</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_property_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L452"></a><tt class="py-lineno">452</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cache</tt><tt class="py-op">:</tt> </tt>
+<a name="L453"></a><tt class="py-lineno">453</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cache</tt><tt class="py-op">.</tt><tt id="link-139" class="py-name" targets="Method oauth2client.client.MemoryCache.set()=oauth2client.client.MemoryCache-class.html#set"><a title="oauth2client.client.MemoryCache.set" class="py-name" href="#" onclick="return doclink('link-139', 'set', 'link-139');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key_name</tt><tt class="py-op">,</tt> <tt id="link-140" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-140', 'credentials', 'link-102');">credentials</a></tt><tt class="py-op">.</tt><tt id="link-141" class="py-name"><a title="apiclient.http.HttpRequest.to_json
apiclient.http.MediaFileUpload.to_json
apiclient.http.MediaIoBaseUpload.to_json
apiclient.http.MediaUpload.to_json
oauth2client.client.Credentials.to_json
-oauth2client.client.OAuth2Credentials.to_json" class="py-name" href="#" onclick="return doclink('link-146', 'to_json', 'link-103');">to_json</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L448"></a><tt class="py-lineno">448</tt> <tt class="py-line"> </tt>
-<a name="L449"></a><tt class="py-lineno">449</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-147" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
-oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-147', 'credentials', 'link-105');">credentials</a></tt> </tt>
-</div><a name="L450"></a><tt class="py-lineno">450</tt> <tt class="py-line"> </tt>
-<a name="StorageByKeyName.locked_put"></a><div id="StorageByKeyName.locked_put-def"><a name="L451"></a><tt class="py-lineno">451</tt> <a class="py-toggle" href="#" id="StorageByKeyName.locked_put-toggle" onclick="return toggle('StorageByKeyName.locked_put');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.StorageByKeyName-class.html#locked_put">locked_put</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">credentials</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="StorageByKeyName.locked_put-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="StorageByKeyName.locked_put-expanded"><a name="L452"></a><tt class="py-lineno">452</tt> <tt class="py-line"> <tt class="py-docstring">"""Write a Credentials to the datastore.</tt> </tt>
-<a name="L453"></a><tt class="py-lineno">453</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L454"></a><tt class="py-lineno">454</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L455"></a><tt class="py-lineno">455</tt> <tt class="py-line"><tt class="py-docstring"> credentials: Credentials, the credentials to store.</tt> </tt>
-<a name="L456"></a><tt class="py-lineno">456</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L457"></a><tt class="py-lineno">457</tt> <tt class="py-line"> <tt class="py-name">entity</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_model</tt><tt class="py-op">.</tt><tt class="py-name">get_or_insert</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key_name</tt><tt class="py-op">)</tt> </tt>
-<a name="L458"></a><tt class="py-lineno">458</tt> <tt class="py-line"> <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">entity</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_property_name</tt><tt class="py-op">,</tt> <tt id="link-148" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
-oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-148', 'credentials', 'link-105');">credentials</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L459"></a><tt class="py-lineno">459</tt> <tt class="py-line"> <tt class="py-name">entity</tt><tt class="py-op">.</tt><tt id="link-149" class="py-name"><a title="oauth2client.client.Storage.put" class="py-name" href="#" onclick="return doclink('link-149', 'put', 'link-69');">put</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L460"></a><tt class="py-lineno">460</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cache</tt><tt class="py-op">:</tt> </tt>
-<a name="L461"></a><tt class="py-lineno">461</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cache</tt><tt class="py-op">.</tt><tt id="link-150" class="py-name"><a title="oauth2client.client.MemoryCache.set" class="py-name" href="#" onclick="return doclink('link-150', 'set', 'link-144');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key_name</tt><tt class="py-op">,</tt> <tt id="link-151" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
-oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-151', 'credentials', 'link-105');">credentials</a></tt><tt class="py-op">.</tt><tt id="link-152" class="py-name"><a title="apiclient.http.HttpRequest.to_json
+oauth2client.client.OAuth2Credentials.to_json" class="py-name" href="#" onclick="return doclink('link-141', 'to_json', 'link-100');">to_json</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L454"></a><tt class="py-lineno">454</tt> <tt class="py-line"> </tt>
+<a name="L455"></a><tt class="py-lineno">455</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-142" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-142', 'credentials', 'link-102');">credentials</a></tt> <tt class="py-keyword">and</tt> <tt class="py-name">hasattr</tt><tt class="py-op">(</tt><tt id="link-143" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-143', 'credentials', 'link-102');">credentials</a></tt><tt class="py-op">,</tt> <tt class="py-string">'set_store'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L456"></a><tt class="py-lineno">456</tt> <tt class="py-line"> <tt id="link-144" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-144', 'credentials', 'link-102');">credentials</a></tt><tt class="py-op">.</tt><tt id="link-145" class="py-name" targets="Method oauth2client.client.OAuth2Credentials.set_store()=oauth2client.client.OAuth2Credentials-class.html#set_store"><a title="oauth2client.client.OAuth2Credentials.set_store" class="py-name" href="#" onclick="return doclink('link-145', 'set_store', 'link-145');">set_store</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L457"></a><tt class="py-lineno">457</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-146" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-146', 'credentials', 'link-102');">credentials</a></tt> </tt>
+</div><a name="L458"></a><tt class="py-lineno">458</tt> <tt class="py-line"> </tt>
+<a name="StorageByKeyName.locked_put"></a><div id="StorageByKeyName.locked_put-def"><a name="L459"></a><tt class="py-lineno">459</tt> <a class="py-toggle" href="#" id="StorageByKeyName.locked_put-toggle" onclick="return toggle('StorageByKeyName.locked_put');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.StorageByKeyName-class.html#locked_put">locked_put</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">credentials</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="StorageByKeyName.locked_put-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="StorageByKeyName.locked_put-expanded"><a name="L460"></a><tt class="py-lineno">460</tt> <tt class="py-line"> <tt class="py-docstring">"""Write a Credentials to the datastore.</tt> </tt>
+<a name="L461"></a><tt class="py-lineno">461</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L462"></a><tt class="py-lineno">462</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L463"></a><tt class="py-lineno">463</tt> <tt class="py-line"><tt class="py-docstring"> credentials: Credentials, the credentials to store.</tt> </tt>
+<a name="L464"></a><tt class="py-lineno">464</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L465"></a><tt class="py-lineno">465</tt> <tt class="py-line"> <tt class="py-name">entity</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_model</tt><tt class="py-op">.</tt><tt class="py-name">get_or_insert</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L466"></a><tt class="py-lineno">466</tt> <tt class="py-line"> <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">entity</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_property_name</tt><tt class="py-op">,</tt> <tt id="link-147" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-147', 'credentials', 'link-102');">credentials</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L467"></a><tt class="py-lineno">467</tt> <tt class="py-line"> <tt class="py-name">entity</tt><tt class="py-op">.</tt><tt id="link-148" class="py-name"><a title="oauth2client.client.Storage.put" class="py-name" href="#" onclick="return doclink('link-148', 'put', 'link-64');">put</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L468"></a><tt class="py-lineno">468</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cache</tt><tt class="py-op">:</tt> </tt>
+<a name="L469"></a><tt class="py-lineno">469</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cache</tt><tt class="py-op">.</tt><tt id="link-149" class="py-name"><a title="oauth2client.client.MemoryCache.set" class="py-name" href="#" onclick="return doclink('link-149', 'set', 'link-139');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key_name</tt><tt class="py-op">,</tt> <tt id="link-150" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-150', 'credentials', 'link-102');">credentials</a></tt><tt class="py-op">.</tt><tt id="link-151" class="py-name"><a title="apiclient.http.HttpRequest.to_json
apiclient.http.MediaFileUpload.to_json
apiclient.http.MediaIoBaseUpload.to_json
apiclient.http.MediaUpload.to_json
oauth2client.client.Credentials.to_json
-oauth2client.client.OAuth2Credentials.to_json" class="py-name" href="#" onclick="return doclink('link-152', 'to_json', 'link-103');">to_json</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L462"></a><tt class="py-lineno">462</tt> <tt class="py-line"> </tt>
-<a name="StorageByKeyName.locked_delete"></a><div id="StorageByKeyName.locked_delete-def"><a name="L463"></a><tt class="py-lineno">463</tt> <a class="py-toggle" href="#" id="StorageByKeyName.locked_delete-toggle" onclick="return toggle('StorageByKeyName.locked_delete');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.StorageByKeyName-class.html#locked_delete">locked_delete</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="StorageByKeyName.locked_delete-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="StorageByKeyName.locked_delete-expanded"><a name="L464"></a><tt class="py-lineno">464</tt> <tt class="py-line"> <tt class="py-docstring">"""Delete Credential from datastore."""</tt> </tt>
-<a name="L465"></a><tt class="py-lineno">465</tt> <tt class="py-line"> </tt>
-<a name="L466"></a><tt class="py-lineno">466</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cache</tt><tt class="py-op">:</tt> </tt>
-<a name="L467"></a><tt class="py-lineno">467</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cache</tt><tt class="py-op">.</tt><tt id="link-153" class="py-name"><a title="oauth2client.client.MemoryCache.delete
-oauth2client.client.Storage.delete" class="py-name" href="#" onclick="return doclink('link-153', 'delete', 'link-132');">delete</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key_name</tt><tt class="py-op">)</tt> </tt>
-<a name="L468"></a><tt class="py-lineno">468</tt> <tt class="py-line"> </tt>
-<a name="L469"></a><tt class="py-lineno">469</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-154" class="py-name" targets="Method oauth2client.appengine.StorageByKeyName._delete_entity()=oauth2client.appengine.StorageByKeyName-class.html#_delete_entity"><a title="oauth2client.appengine.StorageByKeyName._delete_entity" class="py-name" href="#" onclick="return doclink('link-154', '_delete_entity', 'link-154');">_delete_entity</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L470"></a><tt class="py-lineno">470</tt> <tt class="py-line"> </tt>
-<a name="CredentialsModel"></a><div id="CredentialsModel-def"><a name="L471"></a><tt class="py-lineno">471</tt> <tt class="py-line"> </tt>
-<a name="L472"></a><tt class="py-lineno">472</tt> <a class="py-toggle" href="#" id="CredentialsModel-toggle" onclick="return toggle('CredentialsModel');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.appengine.CredentialsModel-class.html">CredentialsModel</a><tt class="py-op">(</tt><tt class="py-base-class">db</tt><tt class="py-op">.</tt><tt class="py-base-class">Model</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="CredentialsModel-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="CredentialsModel-expanded"><a name="L473"></a><tt class="py-lineno">473</tt> <tt class="py-line"> <tt class="py-docstring">"""Storage for OAuth 2.0 Credentials</tt> </tt>
-<a name="L474"></a><tt class="py-lineno">474</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L475"></a><tt class="py-lineno">475</tt> <tt class="py-line"><tt class="py-docstring"> Storage of the model is keyed by the user.user_id().</tt> </tt>
-<a name="L476"></a><tt class="py-lineno">476</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L477"></a><tt class="py-lineno">477</tt> <tt class="py-line"> <tt id="link-155" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
-oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-155', 'credentials', 'link-105');">credentials</a></tt> <tt class="py-op">=</tt> <tt id="link-156" class="py-name"><a title="oauth2client.appengine.CredentialsProperty" class="py-name" href="#" onclick="return doclink('link-156', 'CredentialsProperty', 'link-101');">CredentialsProperty</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L478"></a><tt class="py-lineno">478</tt> <tt class="py-line"> </tt>
-<a name="L479"></a><tt class="py-lineno">479</tt> <tt class="py-line"> </tt>
-<a name="L480"></a><tt class="py-lineno">480</tt> <tt class="py-line"><tt class="py-keyword">if</tt> <tt id="link-157" class="py-name"><a title="oauth2client.appengine.ndb" class="py-name" href="#" onclick="return doclink('link-157', 'ndb', 'link-47');">ndb</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="CredentialsNDBModel"></a><div id="CredentialsNDBModel-def"><a name="L481"></a><tt class="py-lineno">481</tt> <a class="py-toggle" href="#" id="CredentialsNDBModel-toggle" onclick="return toggle('CredentialsNDBModel');">-</a><tt class="py-line"> <tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.appengine.CredentialsNDBModel-class.html">CredentialsNDBModel</a><tt class="py-op">(</tt><tt class="py-base-class">ndb</tt><tt class="py-op">.</tt><tt class="py-base-class">Model</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="CredentialsNDBModel-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="CredentialsNDBModel-expanded"><a name="L482"></a><tt class="py-lineno">482</tt> <tt class="py-line"> <tt class="py-docstring">"""NDB Model for storage of OAuth 2.0 Credentials</tt> </tt>
-<a name="L483"></a><tt class="py-lineno">483</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L484"></a><tt class="py-lineno">484</tt> <tt class="py-line"><tt class="py-docstring"> Since this model uses the same kind as CredentialsModel and has a property</tt> </tt>
-<a name="L485"></a><tt class="py-lineno">485</tt> <tt class="py-line"><tt class="py-docstring"> which can serialize and deserialize Credentials correctly, it can be used</tt> </tt>
-<a name="L486"></a><tt class="py-lineno">486</tt> <tt class="py-line"><tt class="py-docstring"> interchangeably with a CredentialsModel to access, insert and delete the</tt> </tt>
-<a name="L487"></a><tt class="py-lineno">487</tt> <tt class="py-line"><tt class="py-docstring"> same entities. This simply provides an NDB model for interacting with the</tt> </tt>
-<a name="L488"></a><tt class="py-lineno">488</tt> <tt class="py-line"><tt class="py-docstring"> same data the DB model interacts with.</tt> </tt>
-<a name="L489"></a><tt class="py-lineno">489</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L490"></a><tt class="py-lineno">490</tt> <tt class="py-line"><tt class="py-docstring"> Storage of the model is keyed by the user.user_id().</tt> </tt>
-<a name="L491"></a><tt class="py-lineno">491</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L492"></a><tt class="py-lineno">492</tt> <tt class="py-line"> <tt id="link-158" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
-oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-158', 'credentials', 'link-105');">credentials</a></tt> <tt class="py-op">=</tt> <tt id="link-159" class="py-name" targets="Class oauth2client.appengine.CredentialsNDBProperty=oauth2client.appengine.CredentialsNDBProperty-class.html"><a title="oauth2client.appengine.CredentialsNDBProperty" class="py-name" href="#" onclick="return doclink('link-159', 'CredentialsNDBProperty', 'link-159');">CredentialsNDBProperty</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L493"></a><tt class="py-lineno">493</tt> <tt class="py-line"> </tt>
-<a name="L494"></a><tt class="py-lineno">494</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">classmethod</tt> </tt>
-<a name="CredentialsNDBModel._get_kind"></a><div id="CredentialsNDBModel._get_kind-def"><a name="L495"></a><tt class="py-lineno">495</tt> <a class="py-toggle" href="#" id="CredentialsNDBModel._get_kind-toggle" onclick="return toggle('CredentialsNDBModel._get_kind');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.CredentialsNDBModel-class.html#_get_kind">_get_kind</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="CredentialsNDBModel._get_kind-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="CredentialsNDBModel._get_kind-expanded"><a name="L496"></a><tt class="py-lineno">496</tt> <tt class="py-line"> <tt class="py-docstring">"""Return the kind name for this class."""</tt> </tt>
-<a name="L497"></a><tt class="py-lineno">497</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">'CredentialsModel'</tt> </tt>
-</div></div><a name="L498"></a><tt class="py-lineno">498</tt> <tt class="py-line"> </tt>
-<a name="_build_state_value"></a><div id="_build_state_value-def"><a name="L499"></a><tt class="py-lineno">499</tt> <tt class="py-line"> </tt>
-<a name="L500"></a><tt class="py-lineno">500</tt> <a class="py-toggle" href="#" id="_build_state_value-toggle" onclick="return toggle('_build_state_value');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine-module.html#_build_state_value">_build_state_value</a><tt class="py-op">(</tt><tt class="py-param">request_handler</tt><tt class="py-op">,</tt> <tt class="py-param">user</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_build_state_value-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_build_state_value-expanded"><a name="L501"></a><tt class="py-lineno">501</tt> <tt class="py-line"> <tt class="py-docstring">"""Composes the value for the 'state' parameter.</tt> </tt>
-<a name="L502"></a><tt class="py-lineno">502</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L503"></a><tt class="py-lineno">503</tt> <tt class="py-line"><tt class="py-docstring"> Packs the current request URI and an XSRF token into an opaque string that</tt> </tt>
-<a name="L504"></a><tt class="py-lineno">504</tt> <tt class="py-line"><tt class="py-docstring"> can be passed to the authentication server via the 'state' parameter.</tt> </tt>
-<a name="L505"></a><tt class="py-lineno">505</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L506"></a><tt class="py-lineno">506</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L507"></a><tt class="py-lineno">507</tt> <tt class="py-line"><tt class="py-docstring"> request_handler: webapp.RequestHandler, The request.</tt> </tt>
-<a name="L508"></a><tt class="py-lineno">508</tt> <tt class="py-line"><tt class="py-docstring"> user: google.appengine.api.users.User, The current user.</tt> </tt>
-<a name="L509"></a><tt class="py-lineno">509</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L510"></a><tt class="py-lineno">510</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L511"></a><tt class="py-lineno">511</tt> <tt class="py-line"><tt class="py-docstring"> The state value as a string.</tt> </tt>
-<a name="L512"></a><tt class="py-lineno">512</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L513"></a><tt class="py-lineno">513</tt> <tt class="py-line"> <tt class="py-name">uri</tt> <tt class="py-op">=</tt> <tt class="py-name">request_handler</tt><tt class="py-op">.</tt><tt id="link-160" class="py-name" targets="Method apiclient.http.HttpMock.request()=apiclient.http.HttpMock-class.html#request,Method apiclient.http.HttpMockSequence.request()=apiclient.http.HttpMockSequence-class.html#request,Method apiclient.model.BaseModel.request()=apiclient.model.BaseModel-class.html#request,Method apiclient.model.Model.request()=apiclient.model.Model-class.html#request"><a title="apiclient.http.HttpMock.request
+oauth2client.client.OAuth2Credentials.to_json" class="py-name" href="#" onclick="return doclink('link-151', 'to_json', 'link-100');">to_json</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L470"></a><tt class="py-lineno">470</tt> <tt class="py-line"> </tt>
+<a name="StorageByKeyName.locked_delete"></a><div id="StorageByKeyName.locked_delete-def"><a name="L471"></a><tt class="py-lineno">471</tt> <a class="py-toggle" href="#" id="StorageByKeyName.locked_delete-toggle" onclick="return toggle('StorageByKeyName.locked_delete');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.StorageByKeyName-class.html#locked_delete">locked_delete</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="StorageByKeyName.locked_delete-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="StorageByKeyName.locked_delete-expanded"><a name="L472"></a><tt class="py-lineno">472</tt> <tt class="py-line"> <tt class="py-docstring">"""Delete Credential from datastore."""</tt> </tt>
+<a name="L473"></a><tt class="py-lineno">473</tt> <tt class="py-line"> </tt>
+<a name="L474"></a><tt class="py-lineno">474</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cache</tt><tt class="py-op">:</tt> </tt>
+<a name="L475"></a><tt class="py-lineno">475</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_cache</tt><tt class="py-op">.</tt><tt id="link-152" class="py-name"><a title="oauth2client.client.MemoryCache.delete
+oauth2client.client.Storage.delete" class="py-name" href="#" onclick="return doclink('link-152', 'delete', 'link-129');">delete</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L476"></a><tt class="py-lineno">476</tt> <tt class="py-line"> </tt>
+<a name="L477"></a><tt class="py-lineno">477</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-153" class="py-name" targets="Method oauth2client.appengine.StorageByKeyName._delete_entity()=oauth2client.appengine.StorageByKeyName-class.html#_delete_entity"><a title="oauth2client.appengine.StorageByKeyName._delete_entity" class="py-name" href="#" onclick="return doclink('link-153', '_delete_entity', 'link-153');">_delete_entity</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L478"></a><tt class="py-lineno">478</tt> <tt class="py-line"> </tt>
+<a name="CredentialsModel"></a><div id="CredentialsModel-def"><a name="L479"></a><tt class="py-lineno">479</tt> <tt class="py-line"> </tt>
+<a name="L480"></a><tt class="py-lineno">480</tt> <a class="py-toggle" href="#" id="CredentialsModel-toggle" onclick="return toggle('CredentialsModel');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.appengine.CredentialsModel-class.html">CredentialsModel</a><tt class="py-op">(</tt><tt class="py-base-class">db</tt><tt class="py-op">.</tt><tt class="py-base-class">Model</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="CredentialsModel-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="CredentialsModel-expanded"><a name="L481"></a><tt class="py-lineno">481</tt> <tt class="py-line"> <tt class="py-docstring">"""Storage for OAuth 2.0 Credentials</tt> </tt>
+<a name="L482"></a><tt class="py-lineno">482</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L483"></a><tt class="py-lineno">483</tt> <tt class="py-line"><tt class="py-docstring"> Storage of the model is keyed by the user.user_id().</tt> </tt>
+<a name="L484"></a><tt class="py-lineno">484</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L485"></a><tt class="py-lineno">485</tt> <tt class="py-line"> <tt id="link-154" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-154', 'credentials', 'link-102');">credentials</a></tt> <tt class="py-op">=</tt> <tt id="link-155" class="py-name"><a title="oauth2client.appengine.CredentialsProperty" class="py-name" href="#" onclick="return doclink('link-155', 'CredentialsProperty', 'link-98');">CredentialsProperty</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L486"></a><tt class="py-lineno">486</tt> <tt class="py-line"> </tt>
+<a name="L487"></a><tt class="py-lineno">487</tt> <tt class="py-line"> </tt>
+<a name="L488"></a><tt class="py-lineno">488</tt> <tt class="py-line"><tt class="py-keyword">if</tt> <tt id="link-156" class="py-name"><a title="oauth2client.appengine.ndb" class="py-name" href="#" onclick="return doclink('link-156', 'ndb', 'link-42');">ndb</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="CredentialsNDBModel"></a><div id="CredentialsNDBModel-def"><a name="L489"></a><tt class="py-lineno">489</tt> <a class="py-toggle" href="#" id="CredentialsNDBModel-toggle" onclick="return toggle('CredentialsNDBModel');">-</a><tt class="py-line"> <tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.appengine.CredentialsNDBModel-class.html">CredentialsNDBModel</a><tt class="py-op">(</tt><tt class="py-base-class">ndb</tt><tt class="py-op">.</tt><tt class="py-base-class">Model</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="CredentialsNDBModel-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="CredentialsNDBModel-expanded"><a name="L490"></a><tt class="py-lineno">490</tt> <tt class="py-line"> <tt class="py-docstring">"""NDB Model for storage of OAuth 2.0 Credentials</tt> </tt>
+<a name="L491"></a><tt class="py-lineno">491</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L492"></a><tt class="py-lineno">492</tt> <tt class="py-line"><tt class="py-docstring"> Since this model uses the same kind as CredentialsModel and has a property</tt> </tt>
+<a name="L493"></a><tt class="py-lineno">493</tt> <tt class="py-line"><tt class="py-docstring"> which can serialize and deserialize Credentials correctly, it can be used</tt> </tt>
+<a name="L494"></a><tt class="py-lineno">494</tt> <tt class="py-line"><tt class="py-docstring"> interchangeably with a CredentialsModel to access, insert and delete the</tt> </tt>
+<a name="L495"></a><tt class="py-lineno">495</tt> <tt class="py-line"><tt class="py-docstring"> same entities. This simply provides an NDB model for interacting with the</tt> </tt>
+<a name="L496"></a><tt class="py-lineno">496</tt> <tt class="py-line"><tt class="py-docstring"> same data the DB model interacts with.</tt> </tt>
+<a name="L497"></a><tt class="py-lineno">497</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L498"></a><tt class="py-lineno">498</tt> <tt class="py-line"><tt class="py-docstring"> Storage of the model is keyed by the user.user_id().</tt> </tt>
+<a name="L499"></a><tt class="py-lineno">499</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L500"></a><tt class="py-lineno">500</tt> <tt class="py-line"> <tt id="link-157" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-157', 'credentials', 'link-102');">credentials</a></tt> <tt class="py-op">=</tt> <tt id="link-158" class="py-name" targets="Class oauth2client.appengine.CredentialsNDBProperty=oauth2client.appengine.CredentialsNDBProperty-class.html"><a title="oauth2client.appengine.CredentialsNDBProperty" class="py-name" href="#" onclick="return doclink('link-158', 'CredentialsNDBProperty', 'link-158');">CredentialsNDBProperty</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L501"></a><tt class="py-lineno">501</tt> <tt class="py-line"> </tt>
+<a name="L502"></a><tt class="py-lineno">502</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">classmethod</tt> </tt>
+<a name="CredentialsNDBModel._get_kind"></a><div id="CredentialsNDBModel._get_kind-def"><a name="L503"></a><tt class="py-lineno">503</tt> <a class="py-toggle" href="#" id="CredentialsNDBModel._get_kind-toggle" onclick="return toggle('CredentialsNDBModel._get_kind');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.CredentialsNDBModel-class.html#_get_kind">_get_kind</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="CredentialsNDBModel._get_kind-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="CredentialsNDBModel._get_kind-expanded"><a name="L504"></a><tt class="py-lineno">504</tt> <tt class="py-line"> <tt class="py-docstring">"""Return the kind name for this class."""</tt> </tt>
+<a name="L505"></a><tt class="py-lineno">505</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">'CredentialsModel'</tt> </tt>
+</div></div><a name="L506"></a><tt class="py-lineno">506</tt> <tt class="py-line"> </tt>
+<a name="_build_state_value"></a><div id="_build_state_value-def"><a name="L507"></a><tt class="py-lineno">507</tt> <tt class="py-line"> </tt>
+<a name="L508"></a><tt class="py-lineno">508</tt> <a class="py-toggle" href="#" id="_build_state_value-toggle" onclick="return toggle('_build_state_value');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine-module.html#_build_state_value">_build_state_value</a><tt class="py-op">(</tt><tt class="py-param">request_handler</tt><tt class="py-op">,</tt> <tt class="py-param">user</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_build_state_value-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_build_state_value-expanded"><a name="L509"></a><tt class="py-lineno">509</tt> <tt class="py-line"> <tt class="py-docstring">"""Composes the value for the 'state' parameter.</tt> </tt>
+<a name="L510"></a><tt class="py-lineno">510</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L511"></a><tt class="py-lineno">511</tt> <tt class="py-line"><tt class="py-docstring"> Packs the current request URI and an XSRF token into an opaque string that</tt> </tt>
+<a name="L512"></a><tt class="py-lineno">512</tt> <tt class="py-line"><tt class="py-docstring"> can be passed to the authentication server via the 'state' parameter.</tt> </tt>
+<a name="L513"></a><tt class="py-lineno">513</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L514"></a><tt class="py-lineno">514</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L515"></a><tt class="py-lineno">515</tt> <tt class="py-line"><tt class="py-docstring"> request_handler: webapp.RequestHandler, The request.</tt> </tt>
+<a name="L516"></a><tt class="py-lineno">516</tt> <tt class="py-line"><tt class="py-docstring"> user: google.appengine.api.users.User, The current user.</tt> </tt>
+<a name="L517"></a><tt class="py-lineno">517</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L518"></a><tt class="py-lineno">518</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L519"></a><tt class="py-lineno">519</tt> <tt class="py-line"><tt class="py-docstring"> The state value as a string.</tt> </tt>
+<a name="L520"></a><tt class="py-lineno">520</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L521"></a><tt class="py-lineno">521</tt> <tt class="py-line"> <tt class="py-name">uri</tt> <tt class="py-op">=</tt> <tt class="py-name">request_handler</tt><tt class="py-op">.</tt><tt id="link-159" class="py-name" targets="Method apiclient.http.HttpMock.request()=apiclient.http.HttpMock-class.html#request,Method apiclient.http.HttpMockSequence.request()=apiclient.http.HttpMockSequence-class.html#request,Method apiclient.model.BaseModel.request()=apiclient.model.BaseModel-class.html#request,Method apiclient.model.Model.request()=apiclient.model.Model-class.html#request"><a title="apiclient.http.HttpMock.request
apiclient.http.HttpMockSequence.request
apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-160', 'request', 'link-160');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">url</tt> </tt>
-<a name="L514"></a><tt class="py-lineno">514</tt> <tt class="py-line"> <tt class="py-name">token</tt> <tt class="py-op">=</tt> <tt id="link-161" class="py-name"><a title="oauth2client.xsrfutil" class="py-name" href="#" onclick="return doclink('link-161', 'xsrfutil', 'link-24');">xsrfutil</a></tt><tt class="py-op">.</tt><tt id="link-162" class="py-name" targets="Function oauth2client.xsrfutil.generate_token()=oauth2client.xsrfutil-module.html#generate_token"><a title="oauth2client.xsrfutil.generate_token" class="py-name" href="#" onclick="return doclink('link-162', 'generate_token', 'link-162');">generate_token</a></tt><tt class="py-op">(</tt><tt id="link-163" class="py-name" targets="Function oauth2client.appengine.xsrf_secret_key()=oauth2client.appengine-module.html#xsrf_secret_key"><a title="oauth2client.appengine.xsrf_secret_key" class="py-name" href="#" onclick="return doclink('link-163', 'xsrf_secret_key', 'link-163');">xsrf_secret_key</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">user</tt><tt class="py-op">.</tt><tt class="py-name">user_id</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L515"></a><tt class="py-lineno">515</tt> <tt class="py-line"> <tt class="py-name">action_id</tt><tt class="py-op">=</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L516"></a><tt class="py-lineno">516</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">uri</tt> <tt class="py-op">+</tt> <tt class="py-string">':'</tt> <tt class="py-op">+</tt> <tt class="py-name">token</tt> </tt>
-</div><a name="L517"></a><tt class="py-lineno">517</tt> <tt class="py-line"> </tt>
-<a name="_parse_state_value"></a><div id="_parse_state_value-def"><a name="L518"></a><tt class="py-lineno">518</tt> <tt class="py-line"> </tt>
-<a name="L519"></a><tt class="py-lineno">519</tt> <a class="py-toggle" href="#" id="_parse_state_value-toggle" onclick="return toggle('_parse_state_value');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine-module.html#_parse_state_value">_parse_state_value</a><tt class="py-op">(</tt><tt class="py-param">state</tt><tt class="py-op">,</tt> <tt class="py-param">user</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_parse_state_value-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_parse_state_value-expanded"><a name="L520"></a><tt class="py-lineno">520</tt> <tt class="py-line"> <tt class="py-docstring">"""Parse the value of the 'state' parameter.</tt> </tt>
-<a name="L521"></a><tt class="py-lineno">521</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L522"></a><tt class="py-lineno">522</tt> <tt class="py-line"><tt class="py-docstring"> Parses the value and validates the XSRF token in the state parameter.</tt> </tt>
-<a name="L523"></a><tt class="py-lineno">523</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L524"></a><tt class="py-lineno">524</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L525"></a><tt class="py-lineno">525</tt> <tt class="py-line"><tt class="py-docstring"> state: string, The value of the state parameter.</tt> </tt>
-<a name="L526"></a><tt class="py-lineno">526</tt> <tt class="py-line"><tt class="py-docstring"> user: google.appengine.api.users.User, The current user.</tt> </tt>
-<a name="L527"></a><tt class="py-lineno">527</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L528"></a><tt class="py-lineno">528</tt> <tt class="py-line"><tt class="py-docstring"> Raises:</tt> </tt>
-<a name="L529"></a><tt class="py-lineno">529</tt> <tt class="py-line"><tt class="py-docstring"> InvalidXsrfTokenError: if the XSRF token is invalid.</tt> </tt>
-<a name="L530"></a><tt class="py-lineno">530</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L531"></a><tt class="py-lineno">531</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L532"></a><tt class="py-lineno">532</tt> <tt class="py-line"><tt class="py-docstring"> The redirect URI.</tt> </tt>
-<a name="L533"></a><tt class="py-lineno">533</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L534"></a><tt class="py-lineno">534</tt> <tt class="py-line"> <tt class="py-name">uri</tt><tt class="py-op">,</tt> <tt class="py-name">token</tt> <tt class="py-op">=</tt> <tt class="py-name">state</tt><tt class="py-op">.</tt><tt class="py-name">rsplit</tt><tt class="py-op">(</tt><tt class="py-string">':'</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
-<a name="L535"></a><tt class="py-lineno">535</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-164" class="py-name"><a title="oauth2client.xsrfutil" class="py-name" href="#" onclick="return doclink('link-164', 'xsrfutil', 'link-24');">xsrfutil</a></tt><tt class="py-op">.</tt><tt id="link-165" class="py-name" targets="Function oauth2client.xsrfutil.validate_token()=oauth2client.xsrfutil-module.html#validate_token"><a title="oauth2client.xsrfutil.validate_token" class="py-name" href="#" onclick="return doclink('link-165', 'validate_token', 'link-165');">validate_token</a></tt><tt class="py-op">(</tt><tt id="link-166" class="py-name"><a title="oauth2client.appengine.xsrf_secret_key" class="py-name" href="#" onclick="return doclink('link-166', 'xsrf_secret_key', 'link-163');">xsrf_secret_key</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">token</tt><tt class="py-op">,</tt> <tt class="py-name">user</tt><tt class="py-op">.</tt><tt class="py-name">user_id</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L536"></a><tt class="py-lineno">536</tt> <tt class="py-line"> <tt class="py-name">action_id</tt><tt class="py-op">=</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L537"></a><tt class="py-lineno">537</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-167" class="py-name" targets="Class oauth2client.appengine.InvalidXsrfTokenError=oauth2client.appengine.InvalidXsrfTokenError-class.html"><a title="oauth2client.appengine.InvalidXsrfTokenError" class="py-name" href="#" onclick="return doclink('link-167', 'InvalidXsrfTokenError', 'link-167');">InvalidXsrfTokenError</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L538"></a><tt class="py-lineno">538</tt> <tt class="py-line"> </tt>
-<a name="L539"></a><tt class="py-lineno">539</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">uri</tt> </tt>
-</div><a name="L540"></a><tt class="py-lineno">540</tt> <tt class="py-line"> </tt>
-<a name="OAuth2Decorator"></a><div id="OAuth2Decorator-def"><a name="L541"></a><tt class="py-lineno">541</tt> <tt class="py-line"> </tt>
-<a name="L542"></a><tt class="py-lineno">542</tt> <a class="py-toggle" href="#" id="OAuth2Decorator-toggle" onclick="return toggle('OAuth2Decorator');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2Decorator-class.html">OAuth2Decorator</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="OAuth2Decorator-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="OAuth2Decorator-expanded"><a name="L543"></a><tt class="py-lineno">543</tt> <tt class="py-line"> <tt class="py-docstring">"""Utility for making OAuth 2.0 easier.</tt> </tt>
-<a name="L544"></a><tt class="py-lineno">544</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L545"></a><tt class="py-lineno">545</tt> <tt class="py-line"><tt class="py-docstring"> Instantiate and then use with oauth_required or oauth_aware</tt> </tt>
-<a name="L546"></a><tt class="py-lineno">546</tt> <tt class="py-line"><tt class="py-docstring"> as decorators on webapp.RequestHandler methods.</tt> </tt>
-<a name="L547"></a><tt class="py-lineno">547</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L548"></a><tt class="py-lineno">548</tt> <tt class="py-line"><tt class="py-docstring"> Example:</tt> </tt>
-<a name="L549"></a><tt class="py-lineno">549</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L550"></a><tt class="py-lineno">550</tt> <tt class="py-line"><tt class="py-docstring"> decorator = OAuth2Decorator(</tt> </tt>
-<a name="L551"></a><tt class="py-lineno">551</tt> <tt class="py-line"><tt class="py-docstring"> client_id='837...ent.com',</tt> </tt>
-<a name="L552"></a><tt class="py-lineno">552</tt> <tt class="py-line"><tt class="py-docstring"> client_secret='Qh...wwI',</tt> </tt>
-<a name="L553"></a><tt class="py-lineno">553</tt> <tt class="py-line"><tt class="py-docstring"> scope='https://www.googleapis.com/auth/plus')</tt> </tt>
-<a name="L554"></a><tt class="py-lineno">554</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-159', 'request', 'link-159');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">url</tt> </tt>
+<a name="L522"></a><tt class="py-lineno">522</tt> <tt class="py-line"> <tt class="py-name">token</tt> <tt class="py-op">=</tt> <tt id="link-160" class="py-name"><a title="oauth2client.xsrfutil" class="py-name" href="#" onclick="return doclink('link-160', 'xsrfutil', 'link-20');">xsrfutil</a></tt><tt class="py-op">.</tt><tt id="link-161" class="py-name" targets="Function oauth2client.xsrfutil.generate_token()=oauth2client.xsrfutil-module.html#generate_token"><a title="oauth2client.xsrfutil.generate_token" class="py-name" href="#" onclick="return doclink('link-161', 'generate_token', 'link-161');">generate_token</a></tt><tt class="py-op">(</tt><tt id="link-162" class="py-name" targets="Function oauth2client.appengine.xsrf_secret_key()=oauth2client.appengine-module.html#xsrf_secret_key"><a title="oauth2client.appengine.xsrf_secret_key" class="py-name" href="#" onclick="return doclink('link-162', 'xsrf_secret_key', 'link-162');">xsrf_secret_key</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">user</tt><tt class="py-op">.</tt><tt class="py-name">user_id</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L523"></a><tt class="py-lineno">523</tt> <tt class="py-line"> <tt class="py-name">action_id</tt><tt class="py-op">=</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L524"></a><tt class="py-lineno">524</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">uri</tt> <tt class="py-op">+</tt> <tt class="py-string">':'</tt> <tt class="py-op">+</tt> <tt class="py-name">token</tt> </tt>
+</div><a name="L525"></a><tt class="py-lineno">525</tt> <tt class="py-line"> </tt>
+<a name="_parse_state_value"></a><div id="_parse_state_value-def"><a name="L526"></a><tt class="py-lineno">526</tt> <tt class="py-line"> </tt>
+<a name="L527"></a><tt class="py-lineno">527</tt> <a class="py-toggle" href="#" id="_parse_state_value-toggle" onclick="return toggle('_parse_state_value');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine-module.html#_parse_state_value">_parse_state_value</a><tt class="py-op">(</tt><tt class="py-param">state</tt><tt class="py-op">,</tt> <tt class="py-param">user</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_parse_state_value-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_parse_state_value-expanded"><a name="L528"></a><tt class="py-lineno">528</tt> <tt class="py-line"> <tt class="py-docstring">"""Parse the value of the 'state' parameter.</tt> </tt>
+<a name="L529"></a><tt class="py-lineno">529</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L530"></a><tt class="py-lineno">530</tt> <tt class="py-line"><tt class="py-docstring"> Parses the value and validates the XSRF token in the state parameter.</tt> </tt>
+<a name="L531"></a><tt class="py-lineno">531</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L532"></a><tt class="py-lineno">532</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L533"></a><tt class="py-lineno">533</tt> <tt class="py-line"><tt class="py-docstring"> state: string, The value of the state parameter.</tt> </tt>
+<a name="L534"></a><tt class="py-lineno">534</tt> <tt class="py-line"><tt class="py-docstring"> user: google.appengine.api.users.User, The current user.</tt> </tt>
+<a name="L535"></a><tt class="py-lineno">535</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L536"></a><tt class="py-lineno">536</tt> <tt class="py-line"><tt class="py-docstring"> Raises:</tt> </tt>
+<a name="L537"></a><tt class="py-lineno">537</tt> <tt class="py-line"><tt class="py-docstring"> InvalidXsrfTokenError: if the XSRF token is invalid.</tt> </tt>
+<a name="L538"></a><tt class="py-lineno">538</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L539"></a><tt class="py-lineno">539</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L540"></a><tt class="py-lineno">540</tt> <tt class="py-line"><tt class="py-docstring"> The redirect URI.</tt> </tt>
+<a name="L541"></a><tt class="py-lineno">541</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L542"></a><tt class="py-lineno">542</tt> <tt class="py-line"> <tt class="py-name">uri</tt><tt class="py-op">,</tt> <tt class="py-name">token</tt> <tt class="py-op">=</tt> <tt class="py-name">state</tt><tt class="py-op">.</tt><tt class="py-name">rsplit</tt><tt class="py-op">(</tt><tt class="py-string">':'</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L543"></a><tt class="py-lineno">543</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt id="link-163" class="py-name"><a title="oauth2client.xsrfutil" class="py-name" href="#" onclick="return doclink('link-163', 'xsrfutil', 'link-20');">xsrfutil</a></tt><tt class="py-op">.</tt><tt id="link-164" class="py-name" targets="Function oauth2client.xsrfutil.validate_token()=oauth2client.xsrfutil-module.html#validate_token"><a title="oauth2client.xsrfutil.validate_token" class="py-name" href="#" onclick="return doclink('link-164', 'validate_token', 'link-164');">validate_token</a></tt><tt class="py-op">(</tt><tt id="link-165" class="py-name"><a title="oauth2client.appengine.xsrf_secret_key" class="py-name" href="#" onclick="return doclink('link-165', 'xsrf_secret_key', 'link-162');">xsrf_secret_key</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">token</tt><tt class="py-op">,</tt> <tt class="py-name">user</tt><tt class="py-op">.</tt><tt class="py-name">user_id</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L544"></a><tt class="py-lineno">544</tt> <tt class="py-line"> <tt class="py-name">action_id</tt><tt class="py-op">=</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L545"></a><tt class="py-lineno">545</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-166" class="py-name" targets="Class oauth2client.appengine.InvalidXsrfTokenError=oauth2client.appengine.InvalidXsrfTokenError-class.html"><a title="oauth2client.appengine.InvalidXsrfTokenError" class="py-name" href="#" onclick="return doclink('link-166', 'InvalidXsrfTokenError', 'link-166');">InvalidXsrfTokenError</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L546"></a><tt class="py-lineno">546</tt> <tt class="py-line"> </tt>
+<a name="L547"></a><tt class="py-lineno">547</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">uri</tt> </tt>
+</div><a name="L548"></a><tt class="py-lineno">548</tt> <tt class="py-line"> </tt>
+<a name="OAuth2Decorator"></a><div id="OAuth2Decorator-def"><a name="L549"></a><tt class="py-lineno">549</tt> <tt class="py-line"> </tt>
+<a name="L550"></a><tt class="py-lineno">550</tt> <a class="py-toggle" href="#" id="OAuth2Decorator-toggle" onclick="return toggle('OAuth2Decorator');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2Decorator-class.html">OAuth2Decorator</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OAuth2Decorator-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="OAuth2Decorator-expanded"><a name="L551"></a><tt class="py-lineno">551</tt> <tt class="py-line"> <tt class="py-docstring">"""Utility for making OAuth 2.0 easier.</tt> </tt>
+<a name="L552"></a><tt class="py-lineno">552</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L553"></a><tt class="py-lineno">553</tt> <tt class="py-line"><tt class="py-docstring"> Instantiate and then use with oauth_required or oauth_aware</tt> </tt>
+<a name="L554"></a><tt class="py-lineno">554</tt> <tt class="py-line"><tt class="py-docstring"> as decorators on webapp.RequestHandler methods.</tt> </tt>
<a name="L555"></a><tt class="py-lineno">555</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L556"></a><tt class="py-lineno">556</tt> <tt class="py-line"><tt class="py-docstring"> class MainHandler(webapp.RequestHandler):</tt> </tt>
+<a name="L556"></a><tt class="py-lineno">556</tt> <tt class="py-line"><tt class="py-docstring"> Example:</tt> </tt>
<a name="L557"></a><tt class="py-lineno">557</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L558"></a><tt class="py-lineno">558</tt> <tt class="py-line"><tt class="py-docstring"> @decorator.oauth_required</tt> </tt>
-<a name="L559"></a><tt class="py-lineno">559</tt> <tt class="py-line"><tt class="py-docstring"> def get(self):</tt> </tt>
-<a name="L560"></a><tt class="py-lineno">560</tt> <tt class="py-line"><tt class="py-docstring"> http = decorator.http()</tt> </tt>
-<a name="L561"></a><tt class="py-lineno">561</tt> <tt class="py-line"><tt class="py-docstring"> # http is authorized with the user's Credentials and can be used</tt> </tt>
-<a name="L562"></a><tt class="py-lineno">562</tt> <tt class="py-line"><tt class="py-docstring"> # in API calls</tt> </tt>
+<a name="L558"></a><tt class="py-lineno">558</tt> <tt class="py-line"><tt class="py-docstring"> decorator = OAuth2Decorator(</tt> </tt>
+<a name="L559"></a><tt class="py-lineno">559</tt> <tt class="py-line"><tt class="py-docstring"> client_id='837...ent.com',</tt> </tt>
+<a name="L560"></a><tt class="py-lineno">560</tt> <tt class="py-line"><tt class="py-docstring"> client_secret='Qh...wwI',</tt> </tt>
+<a name="L561"></a><tt class="py-lineno">561</tt> <tt class="py-line"><tt class="py-docstring"> scope='https://www.googleapis.com/auth/plus')</tt> </tt>
+<a name="L562"></a><tt class="py-lineno">562</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L563"></a><tt class="py-lineno">563</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L564"></a><tt class="py-lineno">564</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L565"></a><tt class="py-lineno">565</tt> <tt class="py-line"> </tt>
-<a name="L566"></a><tt class="py-lineno">566</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-168" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-168', 'positional', 'link-78');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">4</tt><tt class="py-op">)</tt> </tt>
-<a name="OAuth2Decorator.__init__"></a><div id="OAuth2Decorator.__init__-def"><a name="L567"></a><tt class="py-lineno">567</tt> <a class="py-toggle" href="#" id="OAuth2Decorator.__init__-toggle" onclick="return toggle('OAuth2Decorator.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2Decorator-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">client_id</tt><tt class="py-op">,</tt> <tt class="py-param">client_secret</tt><tt class="py-op">,</tt> <tt class="py-param">scope</tt><tt class="py-op">,</tt> </tt>
-<a name="L568"></a><tt class="py-lineno">568</tt> <tt class="py-line"> <tt class="py-param">auth_uri</tt><tt class="py-op">=</tt><tt id="link-169" class="py-name"><a title="oauth2client.GOOGLE_AUTH_URI" class="py-name" href="#" onclick="return doclink('link-169', 'GOOGLE_AUTH_URI', 'link-14');">GOOGLE_AUTH_URI</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L569"></a><tt class="py-lineno">569</tt> <tt class="py-line"> <tt class="py-param">token_uri</tt><tt class="py-op">=</tt><tt id="link-170" class="py-name"><a title="oauth2client.GOOGLE_TOKEN_URI" class="py-name" href="#" onclick="return doclink('link-170', 'GOOGLE_TOKEN_URI', 'link-18');">GOOGLE_TOKEN_URI</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L570"></a><tt class="py-lineno">570</tt> <tt class="py-line"> <tt class="py-param">revoke_uri</tt><tt class="py-op">=</tt><tt id="link-171" class="py-name"><a title="oauth2client.GOOGLE_REVOKE_URI" class="py-name" href="#" onclick="return doclink('link-171', 'GOOGLE_REVOKE_URI', 'link-16');">GOOGLE_REVOKE_URI</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L571"></a><tt class="py-lineno">571</tt> <tt class="py-line"> <tt class="py-param">user_agent</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L572"></a><tt class="py-lineno">572</tt> <tt class="py-line"> <tt class="py-param">message</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L573"></a><tt class="py-lineno">573</tt> <tt class="py-line"> <tt class="py-param">callback_path</tt><tt class="py-op">=</tt><tt class="py-string">'/oauth2callback'</tt><tt class="py-op">,</tt> </tt>
-<a name="L574"></a><tt class="py-lineno">574</tt> <tt class="py-line"> <tt class="py-param">token_response_param</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L575"></a><tt class="py-lineno">575</tt> <tt class="py-line"> <tt class="py-op">**</tt><tt class="py-param">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="OAuth2Decorator.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OAuth2Decorator.__init__-expanded"><a name="L576"></a><tt class="py-lineno">576</tt> <tt class="py-line"> </tt>
-<a name="L577"></a><tt class="py-lineno">577</tt> <tt class="py-line"> <tt class="py-docstring">"""Constructor for OAuth2Decorator</tt> </tt>
-<a name="L578"></a><tt class="py-lineno">578</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L579"></a><tt class="py-lineno">579</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L580"></a><tt class="py-lineno">580</tt> <tt class="py-line"><tt class="py-docstring"> client_id: string, client identifier.</tt> </tt>
-<a name="L581"></a><tt class="py-lineno">581</tt> <tt class="py-line"><tt class="py-docstring"> client_secret: string client secret.</tt> </tt>
-<a name="L582"></a><tt class="py-lineno">582</tt> <tt class="py-line"><tt class="py-docstring"> scope: string or iterable of strings, scope(s) of the credentials being</tt> </tt>
-<a name="L583"></a><tt class="py-lineno">583</tt> <tt class="py-line"><tt class="py-docstring"> requested.</tt> </tt>
-<a name="L584"></a><tt class="py-lineno">584</tt> <tt class="py-line"><tt class="py-docstring"> auth_uri: string, URI for authorization endpoint. For convenience</tt> </tt>
-<a name="L585"></a><tt class="py-lineno">585</tt> <tt class="py-line"><tt class="py-docstring"> defaults to Google's endpoints but any OAuth 2.0 provider can be used.</tt> </tt>
-<a name="L586"></a><tt class="py-lineno">586</tt> <tt class="py-line"><tt class="py-docstring"> token_uri: string, URI for token endpoint. For convenience</tt> </tt>
-<a name="L587"></a><tt class="py-lineno">587</tt> <tt class="py-line"><tt class="py-docstring"> defaults to Google's endpoints but any OAuth 2.0 provider can be used.</tt> </tt>
-<a name="L588"></a><tt class="py-lineno">588</tt> <tt class="py-line"><tt class="py-docstring"> revoke_uri: string, URI for revoke endpoint. For convenience</tt> </tt>
-<a name="L589"></a><tt class="py-lineno">589</tt> <tt class="py-line"><tt class="py-docstring"> defaults to Google's endpoints but any OAuth 2.0 provider can be used.</tt> </tt>
-<a name="L590"></a><tt class="py-lineno">590</tt> <tt class="py-line"><tt class="py-docstring"> user_agent: string, User agent of your application, default to None.</tt> </tt>
-<a name="L591"></a><tt class="py-lineno">591</tt> <tt class="py-line"><tt class="py-docstring"> message: Message to display if there are problems with the OAuth 2.0</tt> </tt>
-<a name="L592"></a><tt class="py-lineno">592</tt> <tt class="py-line"><tt class="py-docstring"> configuration. The message may contain HTML and will be presented on the</tt> </tt>
-<a name="L593"></a><tt class="py-lineno">593</tt> <tt class="py-line"><tt class="py-docstring"> web interface for any method that uses the decorator.</tt> </tt>
-<a name="L594"></a><tt class="py-lineno">594</tt> <tt class="py-line"><tt class="py-docstring"> callback_path: string, The absolute path to use as the callback URI. Note</tt> </tt>
-<a name="L595"></a><tt class="py-lineno">595</tt> <tt class="py-line"><tt class="py-docstring"> that this must match up with the URI given when registering the</tt> </tt>
-<a name="L596"></a><tt class="py-lineno">596</tt> <tt class="py-line"><tt class="py-docstring"> application in the APIs Console.</tt> </tt>
-<a name="L597"></a><tt class="py-lineno">597</tt> <tt class="py-line"><tt class="py-docstring"> token_response_param: string. If provided, the full JSON response</tt> </tt>
-<a name="L598"></a><tt class="py-lineno">598</tt> <tt class="py-line"><tt class="py-docstring"> to the access token request will be encoded and included in this query</tt> </tt>
-<a name="L599"></a><tt class="py-lineno">599</tt> <tt class="py-line"><tt class="py-docstring"> parameter in the callback URI. This is useful with providers (e.g.</tt> </tt>
-<a name="L600"></a><tt class="py-lineno">600</tt> <tt class="py-line"><tt class="py-docstring"> wordpress.com) that include extra fields that the client may want.</tt> </tt>
-<a name="L601"></a><tt class="py-lineno">601</tt> <tt class="py-line"><tt class="py-docstring"> **kwargs: dict, Keyword arguments are be passed along as kwargs to the</tt> </tt>
-<a name="L602"></a><tt class="py-lineno">602</tt> <tt class="py-line"><tt class="py-docstring"> OAuth2WebServerFlow constructor.</tt> </tt>
-<a name="L603"></a><tt class="py-lineno">603</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L604"></a><tt class="py-lineno">604</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">flow</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L605"></a><tt class="py-lineno">605</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-172" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
-oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-172', 'credentials', 'link-105');">credentials</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L606"></a><tt class="py-lineno">606</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_client_id</tt> <tt class="py-op">=</tt> <tt class="py-name">client_id</tt> </tt>
-<a name="L607"></a><tt class="py-lineno">607</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_client_secret</tt> <tt class="py-op">=</tt> <tt class="py-name">client_secret</tt> </tt>
-<a name="L608"></a><tt class="py-lineno">608</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_scope</tt> <tt class="py-op">=</tt> <tt id="link-173" class="py-name"><a title="oauth2client.util" class="py-name" href="#" onclick="return doclink('link-173', 'util', 'link-9');">util</a></tt><tt class="py-op">.</tt><tt id="link-174" class="py-name"><a title="oauth2client.util.scopes_to_string" class="py-name" href="#" onclick="return doclink('link-174', 'scopes_to_string', 'link-80');">scopes_to_string</a></tt><tt class="py-op">(</tt><tt class="py-name">scope</tt><tt class="py-op">)</tt> </tt>
-<a name="L609"></a><tt class="py-lineno">609</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_auth_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">auth_uri</tt> </tt>
-<a name="L610"></a><tt class="py-lineno">610</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_token_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">token_uri</tt> </tt>
-<a name="L611"></a><tt class="py-lineno">611</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_revoke_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">revoke_uri</tt> </tt>
-<a name="L612"></a><tt class="py-lineno">612</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_user_agent</tt> <tt class="py-op">=</tt> <tt class="py-name">user_agent</tt> </tt>
-<a name="L613"></a><tt class="py-lineno">613</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_kwargs</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt> </tt>
-<a name="L614"></a><tt class="py-lineno">614</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_message</tt> <tt class="py-op">=</tt> <tt class="py-name">message</tt> </tt>
-<a name="L615"></a><tt class="py-lineno">615</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_in_error</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
-<a name="L616"></a><tt class="py-lineno">616</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_callback_path</tt> <tt class="py-op">=</tt> <tt id="link-175" class="py-name" targets="Method oauth2client.appengine.OAuth2Decorator.callback_path()=oauth2client.appengine.OAuth2Decorator-class.html#callback_path"><a title="oauth2client.appengine.OAuth2Decorator.callback_path" class="py-name" href="#" onclick="return doclink('link-175', 'callback_path', 'link-175');">callback_path</a></tt> </tt>
-<a name="L617"></a><tt class="py-lineno">617</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_token_response_param</tt> <tt class="py-op">=</tt> <tt class="py-name">token_response_param</tt> </tt>
-</div><a name="L618"></a><tt class="py-lineno">618</tt> <tt class="py-line"> </tt>
-<a name="OAuth2Decorator._display_error_message"></a><div id="OAuth2Decorator._display_error_message-def"><a name="L619"></a><tt class="py-lineno">619</tt> <a class="py-toggle" href="#" id="OAuth2Decorator._display_error_message-toggle" onclick="return toggle('OAuth2Decorator._display_error_message');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2Decorator-class.html#_display_error_message">_display_error_message</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">request_handler</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="OAuth2Decorator._display_error_message-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OAuth2Decorator._display_error_message-expanded"><a name="L620"></a><tt class="py-lineno">620</tt> <tt class="py-line"> <tt class="py-name">request_handler</tt><tt class="py-op">.</tt><tt id="link-176" class="py-name" targets="Method apiclient.model.BaseModel.response()=apiclient.model.BaseModel-class.html#response,Method apiclient.model.Model.response()=apiclient.model.Model-class.html#response"><a title="apiclient.model.BaseModel.response
-apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-176', 'response', 'link-176');">response</a></tt><tt class="py-op">.</tt><tt class="py-name">out</tt><tt class="py-op">.</tt><tt id="link-177" class="py-name" targets="Method apiclient.push.Headers.write()=apiclient.push.Headers-class.html#write"><a title="apiclient.push.Headers.write" class="py-name" href="#" onclick="return doclink('link-177', 'write', 'link-177');">write</a></tt><tt class="py-op">(</tt><tt class="py-string">'<html><body>'</tt><tt class="py-op">)</tt> </tt>
-<a name="L621"></a><tt class="py-lineno">621</tt> <tt class="py-line"> <tt class="py-name">request_handler</tt><tt class="py-op">.</tt><tt id="link-178" class="py-name"><a title="apiclient.model.BaseModel.response
-apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-178', 'response', 'link-176');">response</a></tt><tt class="py-op">.</tt><tt class="py-name">out</tt><tt class="py-op">.</tt><tt id="link-179" class="py-name"><a title="apiclient.push.Headers.write" class="py-name" href="#" onclick="return doclink('link-179', 'write', 'link-177');">write</a></tt><tt class="py-op">(</tt><tt id="link-180" class="py-name" targets="Function oauth2client.appengine._safe_html()=oauth2client.appengine-module.html#_safe_html"><a title="oauth2client.appengine._safe_html" class="py-name" href="#" onclick="return doclink('link-180', '_safe_html', 'link-180');">_safe_html</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_message</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L622"></a><tt class="py-lineno">622</tt> <tt class="py-line"> <tt class="py-name">request_handler</tt><tt class="py-op">.</tt><tt id="link-181" class="py-name"><a title="apiclient.model.BaseModel.response
-apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-181', 'response', 'link-176');">response</a></tt><tt class="py-op">.</tt><tt class="py-name">out</tt><tt class="py-op">.</tt><tt id="link-182" class="py-name"><a title="apiclient.push.Headers.write" class="py-name" href="#" onclick="return doclink('link-182', 'write', 'link-177');">write</a></tt><tt class="py-op">(</tt><tt class="py-string">'</body></html>'</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L623"></a><tt class="py-lineno">623</tt> <tt class="py-line"> </tt>
-<a name="OAuth2Decorator.oauth_required"></a><div id="OAuth2Decorator.oauth_required-def"><a name="L624"></a><tt class="py-lineno">624</tt> <a class="py-toggle" href="#" id="OAuth2Decorator.oauth_required-toggle" onclick="return toggle('OAuth2Decorator.oauth_required');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2Decorator-class.html#oauth_required">oauth_required</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">method</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="OAuth2Decorator.oauth_required-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OAuth2Decorator.oauth_required-expanded"><a name="L625"></a><tt class="py-lineno">625</tt> <tt class="py-line"> <tt class="py-docstring">"""Decorator that starts the OAuth 2.0 dance.</tt> </tt>
-<a name="L626"></a><tt class="py-lineno">626</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L627"></a><tt class="py-lineno">627</tt> <tt class="py-line"><tt class="py-docstring"> Starts the OAuth dance for the logged in user if they haven't already</tt> </tt>
-<a name="L628"></a><tt class="py-lineno">628</tt> <tt class="py-line"><tt class="py-docstring"> granted access for this application.</tt> </tt>
-<a name="L629"></a><tt class="py-lineno">629</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L630"></a><tt class="py-lineno">630</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L631"></a><tt class="py-lineno">631</tt> <tt class="py-line"><tt class="py-docstring"> method: callable, to be decorated method of a webapp.RequestHandler</tt> </tt>
-<a name="L632"></a><tt class="py-lineno">632</tt> <tt class="py-line"><tt class="py-docstring"> instance.</tt> </tt>
-<a name="L633"></a><tt class="py-lineno">633</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L634"></a><tt class="py-lineno">634</tt> <tt class="py-line"> </tt>
-<a name="L635"></a><tt class="py-lineno">635</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">check_oauth</tt><tt class="py-op">(</tt><tt class="py-param">request_handler</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L636"></a><tt class="py-lineno">636</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_in_error</tt><tt class="py-op">:</tt> </tt>
-<a name="L637"></a><tt class="py-lineno">637</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-183" class="py-name" targets="Method oauth2client.appengine.OAuth2Decorator._display_error_message()=oauth2client.appengine.OAuth2Decorator-class.html#_display_error_message"><a title="oauth2client.appengine.OAuth2Decorator._display_error_message" class="py-name" href="#" onclick="return doclink('link-183', '_display_error_message', 'link-183');">_display_error_message</a></tt><tt class="py-op">(</tt><tt class="py-name">request_handler</tt><tt class="py-op">)</tt> </tt>
-<a name="L638"></a><tt class="py-lineno">638</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
-<a name="L639"></a><tt class="py-lineno">639</tt> <tt class="py-line"> </tt>
-<a name="L640"></a><tt class="py-lineno">640</tt> <tt class="py-line"> <tt class="py-name">user</tt> <tt class="py-op">=</tt> <tt class="py-name">users</tt><tt class="py-op">.</tt><tt class="py-name">get_current_user</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L641"></a><tt class="py-lineno">641</tt> <tt class="py-line"> <tt class="py-comment"># Don't use @login_decorator as this could be used in a POST request.</tt> </tt>
-<a name="L642"></a><tt class="py-lineno">642</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">user</tt><tt class="py-op">:</tt> </tt>
-<a name="L643"></a><tt class="py-lineno">643</tt> <tt class="py-line"> <tt class="py-name">request_handler</tt><tt class="py-op">.</tt><tt class="py-name">redirect</tt><tt class="py-op">(</tt><tt class="py-name">users</tt><tt class="py-op">.</tt><tt class="py-name">create_login_url</tt><tt class="py-op">(</tt> </tt>
-<a name="L644"></a><tt class="py-lineno">644</tt> <tt class="py-line"> <tt class="py-name">request_handler</tt><tt class="py-op">.</tt><tt id="link-184" class="py-name"><a title="apiclient.http.HttpMock.request
+<a name="L564"></a><tt class="py-lineno">564</tt> <tt class="py-line"><tt class="py-docstring"> class MainHandler(webapp.RequestHandler):</tt> </tt>
+<a name="L565"></a><tt class="py-lineno">565</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L566"></a><tt class="py-lineno">566</tt> <tt class="py-line"><tt class="py-docstring"> @decorator.oauth_required</tt> </tt>
+<a name="L567"></a><tt class="py-lineno">567</tt> <tt class="py-line"><tt class="py-docstring"> def get(self):</tt> </tt>
+<a name="L568"></a><tt class="py-lineno">568</tt> <tt class="py-line"><tt class="py-docstring"> http = decorator.http()</tt> </tt>
+<a name="L569"></a><tt class="py-lineno">569</tt> <tt class="py-line"><tt class="py-docstring"> # http is authorized with the user's Credentials and can be used</tt> </tt>
+<a name="L570"></a><tt class="py-lineno">570</tt> <tt class="py-line"><tt class="py-docstring"> # in API calls</tt> </tt>
+<a name="L571"></a><tt class="py-lineno">571</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L572"></a><tt class="py-lineno">572</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L573"></a><tt class="py-lineno">573</tt> <tt class="py-line"> </tt>
+<a name="OAuth2Decorator.set_credentials"></a><div id="OAuth2Decorator.set_credentials-def"><a name="L574"></a><tt class="py-lineno">574</tt> <a class="py-toggle" href="#" id="OAuth2Decorator.set_credentials-toggle" onclick="return toggle('OAuth2Decorator.set_credentials');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2Decorator-class.html#set_credentials">set_credentials</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">credentials</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OAuth2Decorator.set_credentials-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OAuth2Decorator.set_credentials-expanded"><a name="L575"></a><tt class="py-lineno">575</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_tls</tt><tt class="py-op">.</tt><tt id="link-167" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-167', 'credentials', 'link-102');">credentials</a></tt> <tt class="py-op">=</tt> <tt id="link-168" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-168', 'credentials', 'link-102');">credentials</a></tt> </tt>
+</div><a name="L576"></a><tt class="py-lineno">576</tt> <tt class="py-line"> </tt>
+<a name="OAuth2Decorator.get_credentials"></a><div id="OAuth2Decorator.get_credentials-def"><a name="L577"></a><tt class="py-lineno">577</tt> <a class="py-toggle" href="#" id="OAuth2Decorator.get_credentials-toggle" onclick="return toggle('OAuth2Decorator.get_credentials');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2Decorator-class.html#get_credentials">get_credentials</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OAuth2Decorator.get_credentials-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OAuth2Decorator.get_credentials-expanded"><a name="L578"></a><tt class="py-lineno">578</tt> <tt class="py-line"> <tt class="py-docstring">"""A thread local Credentials object.</tt> </tt>
+<a name="L579"></a><tt class="py-lineno">579</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L580"></a><tt class="py-lineno">580</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L581"></a><tt class="py-lineno">581</tt> <tt class="py-line"><tt class="py-docstring"> A client.Credentials object, or None if credentials hasn't been set in</tt> </tt>
+<a name="L582"></a><tt class="py-lineno">582</tt> <tt class="py-line"><tt class="py-docstring"> this thread yet, which may happen when calling has_credentials inside</tt> </tt>
+<a name="L583"></a><tt class="py-lineno">583</tt> <tt class="py-line"><tt class="py-docstring"> oauth_aware.</tt> </tt>
+<a name="L584"></a><tt class="py-lineno">584</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L585"></a><tt class="py-lineno">585</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_tls</tt><tt class="py-op">,</tt> <tt class="py-string">'credentials'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L586"></a><tt class="py-lineno">586</tt> <tt class="py-line"> </tt>
+<a name="L587"></a><tt class="py-lineno">587</tt> <tt class="py-line"> <tt id="link-169" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-169', 'credentials', 'link-102');">credentials</a></tt> <tt class="py-op">=</tt> <tt class="py-name">property</tt><tt class="py-op">(</tt><tt id="link-170" class="py-name" targets="Method oauth2client.appengine.OAuth2Decorator.get_credentials()=oauth2client.appengine.OAuth2Decorator-class.html#get_credentials"><a title="oauth2client.appengine.OAuth2Decorator.get_credentials" class="py-name" href="#" onclick="return doclink('link-170', 'get_credentials', 'link-170');">get_credentials</a></tt><tt class="py-op">,</tt> <tt id="link-171" class="py-name" targets="Method oauth2client.appengine.OAuth2Decorator.set_credentials()=oauth2client.appengine.OAuth2Decorator-class.html#set_credentials"><a title="oauth2client.appengine.OAuth2Decorator.set_credentials" class="py-name" href="#" onclick="return doclink('link-171', 'set_credentials', 'link-171');">set_credentials</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L588"></a><tt class="py-lineno">588</tt> <tt class="py-line"> </tt>
+<a name="OAuth2Decorator.set_flow"></a><div id="OAuth2Decorator.set_flow-def"><a name="L589"></a><tt class="py-lineno">589</tt> <a class="py-toggle" href="#" id="OAuth2Decorator.set_flow-toggle" onclick="return toggle('OAuth2Decorator.set_flow');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2Decorator-class.html#set_flow">set_flow</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">flow</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OAuth2Decorator.set_flow-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OAuth2Decorator.set_flow-expanded"><a name="L590"></a><tt class="py-lineno">590</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_tls</tt><tt class="py-op">.</tt><tt id="link-172" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator.flow" class="py-name" href="#" onclick="return doclink('link-172', 'flow', 'link-84');">flow</a></tt> <tt class="py-op">=</tt> <tt id="link-173" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator.flow" class="py-name" href="#" onclick="return doclink('link-173', 'flow', 'link-84');">flow</a></tt> </tt>
+</div><a name="L591"></a><tt class="py-lineno">591</tt> <tt class="py-line"> </tt>
+<a name="OAuth2Decorator.get_flow"></a><div id="OAuth2Decorator.get_flow-def"><a name="L592"></a><tt class="py-lineno">592</tt> <a class="py-toggle" href="#" id="OAuth2Decorator.get_flow-toggle" onclick="return toggle('OAuth2Decorator.get_flow');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2Decorator-class.html#get_flow">get_flow</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OAuth2Decorator.get_flow-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OAuth2Decorator.get_flow-expanded"><a name="L593"></a><tt class="py-lineno">593</tt> <tt class="py-line"> <tt class="py-docstring">"""A thread local Flow object.</tt> </tt>
+<a name="L594"></a><tt class="py-lineno">594</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L595"></a><tt class="py-lineno">595</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L596"></a><tt class="py-lineno">596</tt> <tt class="py-line"><tt class="py-docstring"> A credentials.Flow object, or None if the flow hasn't been set in this</tt> </tt>
+<a name="L597"></a><tt class="py-lineno">597</tt> <tt class="py-line"><tt class="py-docstring"> thread yet, which happens in _create_flow() since Flows are created</tt> </tt>
+<a name="L598"></a><tt class="py-lineno">598</tt> <tt class="py-line"><tt class="py-docstring"> lazily.</tt> </tt>
+<a name="L599"></a><tt class="py-lineno">599</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L600"></a><tt class="py-lineno">600</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_tls</tt><tt class="py-op">,</tt> <tt class="py-string">'flow'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L601"></a><tt class="py-lineno">601</tt> <tt class="py-line"> </tt>
+<a name="L602"></a><tt class="py-lineno">602</tt> <tt class="py-line"> <tt id="link-174" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator.flow" class="py-name" href="#" onclick="return doclink('link-174', 'flow', 'link-84');">flow</a></tt> <tt class="py-op">=</tt> <tt class="py-name">property</tt><tt class="py-op">(</tt><tt id="link-175" class="py-name" targets="Method oauth2client.appengine.OAuth2Decorator.get_flow()=oauth2client.appengine.OAuth2Decorator-class.html#get_flow"><a title="oauth2client.appengine.OAuth2Decorator.get_flow" class="py-name" href="#" onclick="return doclink('link-175', 'get_flow', 'link-175');">get_flow</a></tt><tt class="py-op">,</tt> <tt id="link-176" class="py-name" targets="Method oauth2client.appengine.OAuth2Decorator.set_flow()=oauth2client.appengine.OAuth2Decorator-class.html#set_flow"><a title="oauth2client.appengine.OAuth2Decorator.set_flow" class="py-name" href="#" onclick="return doclink('link-176', 'set_flow', 'link-176');">set_flow</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L603"></a><tt class="py-lineno">603</tt> <tt class="py-line"> </tt>
+<a name="L604"></a><tt class="py-lineno">604</tt> <tt class="py-line"> </tt>
+<a name="L605"></a><tt class="py-lineno">605</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-177" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-177', 'positional', 'link-73');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">4</tt><tt class="py-op">)</tt> </tt>
+<a name="OAuth2Decorator.__init__"></a><div id="OAuth2Decorator.__init__-def"><a name="L606"></a><tt class="py-lineno">606</tt> <a class="py-toggle" href="#" id="OAuth2Decorator.__init__-toggle" onclick="return toggle('OAuth2Decorator.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2Decorator-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">client_id</tt><tt class="py-op">,</tt> <tt class="py-param">client_secret</tt><tt class="py-op">,</tt> <tt class="py-param">scope</tt><tt class="py-op">,</tt> </tt>
+<a name="L607"></a><tt class="py-lineno">607</tt> <tt class="py-line"> <tt class="py-param">auth_uri</tt><tt class="py-op">=</tt><tt id="link-178" class="py-name"><a title="oauth2client.GOOGLE_AUTH_URI" class="py-name" href="#" onclick="return doclink('link-178', 'GOOGLE_AUTH_URI', 'link-10');">GOOGLE_AUTH_URI</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L608"></a><tt class="py-lineno">608</tt> <tt class="py-line"> <tt class="py-param">token_uri</tt><tt class="py-op">=</tt><tt id="link-179" class="py-name"><a title="oauth2client.GOOGLE_TOKEN_URI" class="py-name" href="#" onclick="return doclink('link-179', 'GOOGLE_TOKEN_URI', 'link-14');">GOOGLE_TOKEN_URI</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L609"></a><tt class="py-lineno">609</tt> <tt class="py-line"> <tt class="py-param">revoke_uri</tt><tt class="py-op">=</tt><tt id="link-180" class="py-name"><a title="oauth2client.GOOGLE_REVOKE_URI" class="py-name" href="#" onclick="return doclink('link-180', 'GOOGLE_REVOKE_URI', 'link-12');">GOOGLE_REVOKE_URI</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L610"></a><tt class="py-lineno">610</tt> <tt class="py-line"> <tt class="py-param">user_agent</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L611"></a><tt class="py-lineno">611</tt> <tt class="py-line"> <tt class="py-param">message</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L612"></a><tt class="py-lineno">612</tt> <tt class="py-line"> <tt class="py-param">callback_path</tt><tt class="py-op">=</tt><tt class="py-string">'/oauth2callback'</tt><tt class="py-op">,</tt> </tt>
+<a name="L613"></a><tt class="py-lineno">613</tt> <tt class="py-line"> <tt class="py-param">token_response_param</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L614"></a><tt class="py-lineno">614</tt> <tt class="py-line"> <tt class="py-param">_storage_class</tt><tt class="py-op">=</tt><tt id="link-181" class="py-name" targets="Class oauth2client.appengine.StorageByKeyName=oauth2client.appengine.StorageByKeyName-class.html"><a title="oauth2client.appengine.StorageByKeyName" class="py-name" href="#" onclick="return doclink('link-181', 'StorageByKeyName', 'link-181');">StorageByKeyName</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L615"></a><tt class="py-lineno">615</tt> <tt class="py-line"> <tt class="py-param">_credentials_class</tt><tt class="py-op">=</tt><tt id="link-182" class="py-name" targets="Class oauth2client.appengine.CredentialsModel=oauth2client.appengine.CredentialsModel-class.html"><a title="oauth2client.appengine.CredentialsModel" class="py-name" href="#" onclick="return doclink('link-182', 'CredentialsModel', 'link-182');">CredentialsModel</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L616"></a><tt class="py-lineno">616</tt> <tt class="py-line"> <tt class="py-param">_credentials_property_name</tt><tt class="py-op">=</tt><tt class="py-string">'credentials'</tt><tt class="py-op">,</tt> </tt>
+<a name="L617"></a><tt class="py-lineno">617</tt> <tt class="py-line"> <tt class="py-op">**</tt><tt class="py-param">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OAuth2Decorator.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OAuth2Decorator.__init__-expanded"><a name="L618"></a><tt class="py-lineno">618</tt> <tt class="py-line"> </tt>
+<a name="L619"></a><tt class="py-lineno">619</tt> <tt class="py-line"> <tt class="py-docstring">"""Constructor for OAuth2Decorator</tt> </tt>
+<a name="L620"></a><tt class="py-lineno">620</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L621"></a><tt class="py-lineno">621</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L622"></a><tt class="py-lineno">622</tt> <tt class="py-line"><tt class="py-docstring"> client_id: string, client identifier.</tt> </tt>
+<a name="L623"></a><tt class="py-lineno">623</tt> <tt class="py-line"><tt class="py-docstring"> client_secret: string client secret.</tt> </tt>
+<a name="L624"></a><tt class="py-lineno">624</tt> <tt class="py-line"><tt class="py-docstring"> scope: string or iterable of strings, scope(s) of the credentials being</tt> </tt>
+<a name="L625"></a><tt class="py-lineno">625</tt> <tt class="py-line"><tt class="py-docstring"> requested.</tt> </tt>
+<a name="L626"></a><tt class="py-lineno">626</tt> <tt class="py-line"><tt class="py-docstring"> auth_uri: string, URI for authorization endpoint. For convenience</tt> </tt>
+<a name="L627"></a><tt class="py-lineno">627</tt> <tt class="py-line"><tt class="py-docstring"> defaults to Google's endpoints but any OAuth 2.0 provider can be used.</tt> </tt>
+<a name="L628"></a><tt class="py-lineno">628</tt> <tt class="py-line"><tt class="py-docstring"> token_uri: string, URI for token endpoint. For convenience</tt> </tt>
+<a name="L629"></a><tt class="py-lineno">629</tt> <tt class="py-line"><tt class="py-docstring"> defaults to Google's endpoints but any OAuth 2.0 provider can be used.</tt> </tt>
+<a name="L630"></a><tt class="py-lineno">630</tt> <tt class="py-line"><tt class="py-docstring"> revoke_uri: string, URI for revoke endpoint. For convenience</tt> </tt>
+<a name="L631"></a><tt class="py-lineno">631</tt> <tt class="py-line"><tt class="py-docstring"> defaults to Google's endpoints but any OAuth 2.0 provider can be used.</tt> </tt>
+<a name="L632"></a><tt class="py-lineno">632</tt> <tt class="py-line"><tt class="py-docstring"> user_agent: string, User agent of your application, default to None.</tt> </tt>
+<a name="L633"></a><tt class="py-lineno">633</tt> <tt class="py-line"><tt class="py-docstring"> message: Message to display if there are problems with the OAuth 2.0</tt> </tt>
+<a name="L634"></a><tt class="py-lineno">634</tt> <tt class="py-line"><tt class="py-docstring"> configuration. The message may contain HTML and will be presented on the</tt> </tt>
+<a name="L635"></a><tt class="py-lineno">635</tt> <tt class="py-line"><tt class="py-docstring"> web interface for any method that uses the decorator.</tt> </tt>
+<a name="L636"></a><tt class="py-lineno">636</tt> <tt class="py-line"><tt class="py-docstring"> callback_path: string, The absolute path to use as the callback URI. Note</tt> </tt>
+<a name="L637"></a><tt class="py-lineno">637</tt> <tt class="py-line"><tt class="py-docstring"> that this must match up with the URI given when registering the</tt> </tt>
+<a name="L638"></a><tt class="py-lineno">638</tt> <tt class="py-line"><tt class="py-docstring"> application in the APIs Console.</tt> </tt>
+<a name="L639"></a><tt class="py-lineno">639</tt> <tt class="py-line"><tt class="py-docstring"> token_response_param: string. If provided, the full JSON response</tt> </tt>
+<a name="L640"></a><tt class="py-lineno">640</tt> <tt class="py-line"><tt class="py-docstring"> to the access token request will be encoded and included in this query</tt> </tt>
+<a name="L641"></a><tt class="py-lineno">641</tt> <tt class="py-line"><tt class="py-docstring"> parameter in the callback URI. This is useful with providers (e.g.</tt> </tt>
+<a name="L642"></a><tt class="py-lineno">642</tt> <tt class="py-line"><tt class="py-docstring"> wordpress.com) that include extra fields that the client may want.</tt> </tt>
+<a name="L643"></a><tt class="py-lineno">643</tt> <tt class="py-line"><tt class="py-docstring"> _storage_class: "Protected" keyword argument not typically provided to</tt> </tt>
+<a name="L644"></a><tt class="py-lineno">644</tt> <tt class="py-line"><tt class="py-docstring"> this constructor. A storage class to aid in storing a Credentials object</tt> </tt>
+<a name="L645"></a><tt class="py-lineno">645</tt> <tt class="py-line"><tt class="py-docstring"> for a user in the datastore. Defaults to StorageByKeyName.</tt> </tt>
+<a name="L646"></a><tt class="py-lineno">646</tt> <tt class="py-line"><tt class="py-docstring"> _credentials_class: "Protected" keyword argument not typically provided to</tt> </tt>
+<a name="L647"></a><tt class="py-lineno">647</tt> <tt class="py-line"><tt class="py-docstring"> this constructor. A db or ndb Model class to hold credentials. Defaults</tt> </tt>
+<a name="L648"></a><tt class="py-lineno">648</tt> <tt class="py-line"><tt class="py-docstring"> to CredentialsModel.</tt> </tt>
+<a name="L649"></a><tt class="py-lineno">649</tt> <tt class="py-line"><tt class="py-docstring"> _credentials_property_name: "Protected" keyword argument not typically</tt> </tt>
+<a name="L650"></a><tt class="py-lineno">650</tt> <tt class="py-line"><tt class="py-docstring"> provided to this constructor. A string indicating the name of the field</tt> </tt>
+<a name="L651"></a><tt class="py-lineno">651</tt> <tt class="py-line"><tt class="py-docstring"> on the _credentials_class where a Credentials object will be stored.</tt> </tt>
+<a name="L652"></a><tt class="py-lineno">652</tt> <tt class="py-line"><tt class="py-docstring"> Defaults to 'credentials'.</tt> </tt>
+<a name="L653"></a><tt class="py-lineno">653</tt> <tt class="py-line"><tt class="py-docstring"> **kwargs: dict, Keyword arguments are be passed along as kwargs to the</tt> </tt>
+<a name="L654"></a><tt class="py-lineno">654</tt> <tt class="py-line"><tt class="py-docstring"> OAuth2WebServerFlow constructor.</tt> </tt>
+<a name="L655"></a><tt class="py-lineno">655</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L656"></a><tt class="py-lineno">656</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_tls</tt> <tt class="py-op">=</tt> <tt class="py-name">threading</tt><tt class="py-op">.</tt><tt class="py-name">local</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L657"></a><tt class="py-lineno">657</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-183" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator.flow" class="py-name" href="#" onclick="return doclink('link-183', 'flow', 'link-84');">flow</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L658"></a><tt class="py-lineno">658</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-184" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-184', 'credentials', 'link-102');">credentials</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L659"></a><tt class="py-lineno">659</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_client_id</tt> <tt class="py-op">=</tt> <tt class="py-name">client_id</tt> </tt>
+<a name="L660"></a><tt class="py-lineno">660</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_client_secret</tt> <tt class="py-op">=</tt> <tt class="py-name">client_secret</tt> </tt>
+<a name="L661"></a><tt class="py-lineno">661</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_scope</tt> <tt class="py-op">=</tt> <tt id="link-185" class="py-name"><a title="oauth2client.util" class="py-name" href="#" onclick="return doclink('link-185', 'util', 'link-6');">util</a></tt><tt class="py-op">.</tt><tt id="link-186" class="py-name"><a title="oauth2client.util.scopes_to_string" class="py-name" href="#" onclick="return doclink('link-186', 'scopes_to_string', 'link-75');">scopes_to_string</a></tt><tt class="py-op">(</tt><tt class="py-name">scope</tt><tt class="py-op">)</tt> </tt>
+<a name="L662"></a><tt class="py-lineno">662</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_auth_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">auth_uri</tt> </tt>
+<a name="L663"></a><tt class="py-lineno">663</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_token_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">token_uri</tt> </tt>
+<a name="L664"></a><tt class="py-lineno">664</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_revoke_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">revoke_uri</tt> </tt>
+<a name="L665"></a><tt class="py-lineno">665</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_user_agent</tt> <tt class="py-op">=</tt> <tt class="py-name">user_agent</tt> </tt>
+<a name="L666"></a><tt class="py-lineno">666</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_kwargs</tt> <tt class="py-op">=</tt> <tt class="py-name">kwargs</tt> </tt>
+<a name="L667"></a><tt class="py-lineno">667</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_message</tt> <tt class="py-op">=</tt> <tt class="py-name">message</tt> </tt>
+<a name="L668"></a><tt class="py-lineno">668</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_in_error</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L669"></a><tt class="py-lineno">669</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_callback_path</tt> <tt class="py-op">=</tt> <tt id="link-187" class="py-name" targets="Method oauth2client.appengine.OAuth2Decorator.callback_path()=oauth2client.appengine.OAuth2Decorator-class.html#callback_path"><a title="oauth2client.appengine.OAuth2Decorator.callback_path" class="py-name" href="#" onclick="return doclink('link-187', 'callback_path', 'link-187');">callback_path</a></tt> </tt>
+<a name="L670"></a><tt class="py-lineno">670</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_token_response_param</tt> <tt class="py-op">=</tt> <tt class="py-name">token_response_param</tt> </tt>
+<a name="L671"></a><tt class="py-lineno">671</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_storage_class</tt> <tt class="py-op">=</tt> <tt class="py-name">_storage_class</tt> </tt>
+<a name="L672"></a><tt class="py-lineno">672</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_credentials_class</tt> <tt class="py-op">=</tt> <tt class="py-name">_credentials_class</tt> </tt>
+<a name="L673"></a><tt class="py-lineno">673</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_credentials_property_name</tt> <tt class="py-op">=</tt> <tt class="py-name">_credentials_property_name</tt> </tt>
+</div><a name="L674"></a><tt class="py-lineno">674</tt> <tt class="py-line"> </tt>
+<a name="OAuth2Decorator._display_error_message"></a><div id="OAuth2Decorator._display_error_message-def"><a name="L675"></a><tt class="py-lineno">675</tt> <a class="py-toggle" href="#" id="OAuth2Decorator._display_error_message-toggle" onclick="return toggle('OAuth2Decorator._display_error_message');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2Decorator-class.html#_display_error_message">_display_error_message</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">request_handler</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OAuth2Decorator._display_error_message-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OAuth2Decorator._display_error_message-expanded"><a name="L676"></a><tt class="py-lineno">676</tt> <tt class="py-line"> <tt class="py-name">request_handler</tt><tt class="py-op">.</tt><tt id="link-188" class="py-name" targets="Method apiclient.model.BaseModel.response()=apiclient.model.BaseModel-class.html#response,Method apiclient.model.Model.response()=apiclient.model.Model-class.html#response"><a title="apiclient.model.BaseModel.response
+apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-188', 'response', 'link-188');">response</a></tt><tt class="py-op">.</tt><tt class="py-name">out</tt><tt class="py-op">.</tt><tt class="py-name">write</tt><tt class="py-op">(</tt><tt class="py-string">'<html><body>'</tt><tt class="py-op">)</tt> </tt>
+<a name="L677"></a><tt class="py-lineno">677</tt> <tt class="py-line"> <tt class="py-name">request_handler</tt><tt class="py-op">.</tt><tt id="link-189" class="py-name"><a title="apiclient.model.BaseModel.response
+apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-189', 'response', 'link-188');">response</a></tt><tt class="py-op">.</tt><tt class="py-name">out</tt><tt class="py-op">.</tt><tt class="py-name">write</tt><tt class="py-op">(</tt><tt id="link-190" class="py-name" targets="Function oauth2client.appengine._safe_html()=oauth2client.appengine-module.html#_safe_html"><a title="oauth2client.appengine._safe_html" class="py-name" href="#" onclick="return doclink('link-190', '_safe_html', 'link-190');">_safe_html</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_message</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L678"></a><tt class="py-lineno">678</tt> <tt class="py-line"> <tt class="py-name">request_handler</tt><tt class="py-op">.</tt><tt id="link-191" class="py-name"><a title="apiclient.model.BaseModel.response
+apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-191', 'response', 'link-188');">response</a></tt><tt class="py-op">.</tt><tt class="py-name">out</tt><tt class="py-op">.</tt><tt class="py-name">write</tt><tt class="py-op">(</tt><tt class="py-string">'</body></html>'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L679"></a><tt class="py-lineno">679</tt> <tt class="py-line"> </tt>
+<a name="OAuth2Decorator.oauth_required"></a><div id="OAuth2Decorator.oauth_required-def"><a name="L680"></a><tt class="py-lineno">680</tt> <a class="py-toggle" href="#" id="OAuth2Decorator.oauth_required-toggle" onclick="return toggle('OAuth2Decorator.oauth_required');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2Decorator-class.html#oauth_required">oauth_required</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">method</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OAuth2Decorator.oauth_required-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OAuth2Decorator.oauth_required-expanded"><a name="L681"></a><tt class="py-lineno">681</tt> <tt class="py-line"> <tt class="py-docstring">"""Decorator that starts the OAuth 2.0 dance.</tt> </tt>
+<a name="L682"></a><tt class="py-lineno">682</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L683"></a><tt class="py-lineno">683</tt> <tt class="py-line"><tt class="py-docstring"> Starts the OAuth dance for the logged in user if they haven't already</tt> </tt>
+<a name="L684"></a><tt class="py-lineno">684</tt> <tt class="py-line"><tt class="py-docstring"> granted access for this application.</tt> </tt>
+<a name="L685"></a><tt class="py-lineno">685</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L686"></a><tt class="py-lineno">686</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L687"></a><tt class="py-lineno">687</tt> <tt class="py-line"><tt class="py-docstring"> method: callable, to be decorated method of a webapp.RequestHandler</tt> </tt>
+<a name="L688"></a><tt class="py-lineno">688</tt> <tt class="py-line"><tt class="py-docstring"> instance.</tt> </tt>
+<a name="L689"></a><tt class="py-lineno">689</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L690"></a><tt class="py-lineno">690</tt> <tt class="py-line"> </tt>
+<a name="L691"></a><tt class="py-lineno">691</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">check_oauth</tt><tt class="py-op">(</tt><tt class="py-param">request_handler</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L692"></a><tt class="py-lineno">692</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_in_error</tt><tt class="py-op">:</tt> </tt>
+<a name="L693"></a><tt class="py-lineno">693</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-192" class="py-name" targets="Method oauth2client.appengine.OAuth2Decorator._display_error_message()=oauth2client.appengine.OAuth2Decorator-class.html#_display_error_message"><a title="oauth2client.appengine.OAuth2Decorator._display_error_message" class="py-name" href="#" onclick="return doclink('link-192', '_display_error_message', 'link-192');">_display_error_message</a></tt><tt class="py-op">(</tt><tt class="py-name">request_handler</tt><tt class="py-op">)</tt> </tt>
+<a name="L694"></a><tt class="py-lineno">694</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L695"></a><tt class="py-lineno">695</tt> <tt class="py-line"> </tt>
+<a name="L696"></a><tt class="py-lineno">696</tt> <tt class="py-line"> <tt class="py-name">user</tt> <tt class="py-op">=</tt> <tt class="py-name">users</tt><tt class="py-op">.</tt><tt class="py-name">get_current_user</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L697"></a><tt class="py-lineno">697</tt> <tt class="py-line"> <tt class="py-comment"># Don't use @login_decorator as this could be used in a POST request.</tt> </tt>
+<a name="L698"></a><tt class="py-lineno">698</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">user</tt><tt class="py-op">:</tt> </tt>
+<a name="L699"></a><tt class="py-lineno">699</tt> <tt class="py-line"> <tt class="py-name">request_handler</tt><tt class="py-op">.</tt><tt class="py-name">redirect</tt><tt class="py-op">(</tt><tt class="py-name">users</tt><tt class="py-op">.</tt><tt class="py-name">create_login_url</tt><tt class="py-op">(</tt> </tt>
+<a name="L700"></a><tt class="py-lineno">700</tt> <tt class="py-line"> <tt class="py-name">request_handler</tt><tt class="py-op">.</tt><tt id="link-193" class="py-name"><a title="apiclient.http.HttpMock.request
apiclient.http.HttpMockSequence.request
apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-184', 'request', 'link-160');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L645"></a><tt class="py-lineno">645</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
-<a name="L646"></a><tt class="py-lineno">646</tt> <tt class="py-line"> </tt>
-<a name="L647"></a><tt class="py-lineno">647</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-185" class="py-name" targets="Method oauth2client.appengine.OAuth2Decorator._create_flow()=oauth2client.appengine.OAuth2Decorator-class.html#_create_flow"><a title="oauth2client.appengine.OAuth2Decorator._create_flow" class="py-name" href="#" onclick="return doclink('link-185', '_create_flow', 'link-185');">_create_flow</a></tt><tt class="py-op">(</tt><tt class="py-name">request_handler</tt><tt class="py-op">)</tt> </tt>
-<a name="L648"></a><tt class="py-lineno">648</tt> <tt class="py-line"> </tt>
-<a name="L649"></a><tt class="py-lineno">649</tt> <tt class="py-line"> <tt class="py-comment"># Store the request URI in 'state' so we can use it later</tt> </tt>
-<a name="L650"></a><tt class="py-lineno">650</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">flow</tt><tt class="py-op">.</tt><tt class="py-name">params</tt><tt class="py-op">[</tt><tt class="py-string">'state'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-186" class="py-name" targets="Function oauth2client.appengine._build_state_value()=oauth2client.appengine-module.html#_build_state_value"><a title="oauth2client.appengine._build_state_value" class="py-name" href="#" onclick="return doclink('link-186', '_build_state_value', 'link-186');">_build_state_value</a></tt><tt class="py-op">(</tt><tt class="py-name">request_handler</tt><tt class="py-op">,</tt> <tt class="py-name">user</tt><tt class="py-op">)</tt> </tt>
-<a name="L651"></a><tt class="py-lineno">651</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-187" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
-oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-187', 'credentials', 'link-105');">credentials</a></tt> <tt class="py-op">=</tt> <tt id="link-188" class="py-name" targets="Class oauth2client.appengine.StorageByKeyName=oauth2client.appengine.StorageByKeyName-class.html"><a title="oauth2client.appengine.StorageByKeyName" class="py-name" href="#" onclick="return doclink('link-188', 'StorageByKeyName', 'link-188');">StorageByKeyName</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L652"></a><tt class="py-lineno">652</tt> <tt class="py-line"> <tt id="link-189" class="py-name" targets="Class oauth2client.appengine.CredentialsModel=oauth2client.appengine.CredentialsModel-class.html"><a title="oauth2client.appengine.CredentialsModel" class="py-name" href="#" onclick="return doclink('link-189', 'CredentialsModel', 'link-189');">CredentialsModel</a></tt><tt class="py-op">,</tt> <tt class="py-name">user</tt><tt class="py-op">.</tt><tt class="py-name">user_id</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">'credentials'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-190" class="py-name"><a title="apiclient.schema.Schemas.get
-oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-190', 'get', 'link-57');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L653"></a><tt class="py-lineno">653</tt> <tt class="py-line"> </tt>
-<a name="L654"></a><tt class="py-lineno">654</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-191" class="py-name" targets="Method oauth2client.appengine.OAuth2Decorator.has_credentials()=oauth2client.appengine.OAuth2Decorator-class.html#has_credentials"><a title="oauth2client.appengine.OAuth2Decorator.has_credentials" class="py-name" href="#" onclick="return doclink('link-191', 'has_credentials', 'link-191');">has_credentials</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L655"></a><tt class="py-lineno">655</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">request_handler</tt><tt class="py-op">.</tt><tt class="py-name">redirect</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-192" class="py-name" targets="Method oauth2client.appengine.OAuth2Decorator.authorize_url()=oauth2client.appengine.OAuth2Decorator-class.html#authorize_url"><a title="oauth2client.appengine.OAuth2Decorator.authorize_url" class="py-name" href="#" onclick="return doclink('link-192', 'authorize_url', 'link-192');">authorize_url</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L656"></a><tt class="py-lineno">656</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L657"></a><tt class="py-lineno">657</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">method</tt><tt class="py-op">(</tt><tt class="py-name">request_handler</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-name">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">kwargs</tt><tt class="py-op">)</tt> </tt>
-<a name="L658"></a><tt class="py-lineno">658</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-193" class="py-name"><a title="oauth2client.client.AccessTokenRefreshError" class="py-name" href="#" onclick="return doclink('link-193', 'AccessTokenRefreshError', 'link-29');">AccessTokenRefreshError</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L659"></a><tt class="py-lineno">659</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">request_handler</tt><tt class="py-op">.</tt><tt class="py-name">redirect</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-194" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator.authorize_url" class="py-name" href="#" onclick="return doclink('link-194', 'authorize_url', 'link-192');">authorize_url</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L660"></a><tt class="py-lineno">660</tt> <tt class="py-line"> </tt>
-<a name="L661"></a><tt class="py-lineno">661</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">check_oauth</tt> </tt>
-</div><a name="L662"></a><tt class="py-lineno">662</tt> <tt class="py-line"> </tt>
-<a name="OAuth2Decorator._create_flow"></a><div id="OAuth2Decorator._create_flow-def"><a name="L663"></a><tt class="py-lineno">663</tt> <a class="py-toggle" href="#" id="OAuth2Decorator._create_flow-toggle" onclick="return toggle('OAuth2Decorator._create_flow');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2Decorator-class.html#_create_flow">_create_flow</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">request_handler</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="OAuth2Decorator._create_flow-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OAuth2Decorator._create_flow-expanded"><a name="L664"></a><tt class="py-lineno">664</tt> <tt class="py-line"> <tt class="py-docstring">"""Create the Flow object.</tt> </tt>
-<a name="L665"></a><tt class="py-lineno">665</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L666"></a><tt class="py-lineno">666</tt> <tt class="py-line"><tt class="py-docstring"> The Flow is calculated lazily since we don't know where this app is</tt> </tt>
-<a name="L667"></a><tt class="py-lineno">667</tt> <tt class="py-line"><tt class="py-docstring"> running until it receives a request, at which point redirect_uri can be</tt> </tt>
-<a name="L668"></a><tt class="py-lineno">668</tt> <tt class="py-line"><tt class="py-docstring"> calculated and then the Flow object can be constructed.</tt> </tt>
-<a name="L669"></a><tt class="py-lineno">669</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L670"></a><tt class="py-lineno">670</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L671"></a><tt class="py-lineno">671</tt> <tt class="py-line"><tt class="py-docstring"> request_handler: webapp.RequestHandler, the request handler.</tt> </tt>
-<a name="L672"></a><tt class="py-lineno">672</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L673"></a><tt class="py-lineno">673</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">flow</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L674"></a><tt class="py-lineno">674</tt> <tt class="py-line"> <tt class="py-name">redirect_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">request_handler</tt><tt class="py-op">.</tt><tt id="link-195" class="py-name"><a title="apiclient.http.HttpMock.request
-apiclient.http.HttpMockSequence.request
-apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-195', 'request', 'link-160');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">relative_url</tt><tt class="py-op">(</tt> </tt>
-<a name="L675"></a><tt class="py-lineno">675</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_callback_path</tt><tt class="py-op">)</tt> <tt class="py-comment"># Usually /oauth2callback</tt> </tt>
-<a name="L676"></a><tt class="py-lineno">676</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">flow</tt> <tt class="py-op">=</tt> <tt id="link-196" class="py-name"><a title="oauth2client.client.OAuth2WebServerFlow" class="py-name" href="#" onclick="return doclink('link-196', 'OAuth2WebServerFlow', 'link-41');">OAuth2WebServerFlow</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_client_id</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_client_secret</tt><tt class="py-op">,</tt> </tt>
-<a name="L677"></a><tt class="py-lineno">677</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_scope</tt><tt class="py-op">,</tt> <tt class="py-name">redirect_uri</tt><tt class="py-op">=</tt><tt class="py-name">redirect_uri</tt><tt class="py-op">,</tt> </tt>
-<a name="L678"></a><tt class="py-lineno">678</tt> <tt class="py-line"> <tt class="py-name">user_agent</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_user_agent</tt><tt class="py-op">,</tt> </tt>
-<a name="L679"></a><tt class="py-lineno">679</tt> <tt class="py-line"> <tt class="py-name">auth_uri</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_auth_uri</tt><tt class="py-op">,</tt> </tt>
-<a name="L680"></a><tt class="py-lineno">680</tt> <tt class="py-line"> <tt class="py-name">token_uri</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_token_uri</tt><tt class="py-op">,</tt> </tt>
-<a name="L681"></a><tt class="py-lineno">681</tt> <tt class="py-line"> <tt class="py-name">revoke_uri</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_revoke_uri</tt><tt class="py-op">,</tt> </tt>
-<a name="L682"></a><tt class="py-lineno">682</tt> <tt class="py-line"> <tt class="py-op">**</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_kwargs</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L683"></a><tt class="py-lineno">683</tt> <tt class="py-line"> </tt>
-<a name="OAuth2Decorator.oauth_aware"></a><div id="OAuth2Decorator.oauth_aware-def"><a name="L684"></a><tt class="py-lineno">684</tt> <a class="py-toggle" href="#" id="OAuth2Decorator.oauth_aware-toggle" onclick="return toggle('OAuth2Decorator.oauth_aware');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2Decorator-class.html#oauth_aware">oauth_aware</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">method</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="OAuth2Decorator.oauth_aware-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OAuth2Decorator.oauth_aware-expanded"><a name="L685"></a><tt class="py-lineno">685</tt> <tt class="py-line"> <tt class="py-docstring">"""Decorator that sets up for OAuth 2.0 dance, but doesn't do it.</tt> </tt>
-<a name="L686"></a><tt class="py-lineno">686</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L687"></a><tt class="py-lineno">687</tt> <tt class="py-line"><tt class="py-docstring"> Does all the setup for the OAuth dance, but doesn't initiate it.</tt> </tt>
-<a name="L688"></a><tt class="py-lineno">688</tt> <tt class="py-line"><tt class="py-docstring"> This decorator is useful if you want to create a page that knows</tt> </tt>
-<a name="L689"></a><tt class="py-lineno">689</tt> <tt class="py-line"><tt class="py-docstring"> whether or not the user has granted access to this application.</tt> </tt>
-<a name="L690"></a><tt class="py-lineno">690</tt> <tt class="py-line"><tt class="py-docstring"> From within a method decorated with @oauth_aware the has_credentials()</tt> </tt>
-<a name="L691"></a><tt class="py-lineno">691</tt> <tt class="py-line"><tt class="py-docstring"> and authorize_url() methods can be called.</tt> </tt>
-<a name="L692"></a><tt class="py-lineno">692</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L693"></a><tt class="py-lineno">693</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L694"></a><tt class="py-lineno">694</tt> <tt class="py-line"><tt class="py-docstring"> method: callable, to be decorated method of a webapp.RequestHandler</tt> </tt>
-<a name="L695"></a><tt class="py-lineno">695</tt> <tt class="py-line"><tt class="py-docstring"> instance.</tt> </tt>
-<a name="L696"></a><tt class="py-lineno">696</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L697"></a><tt class="py-lineno">697</tt> <tt class="py-line"> </tt>
-<a name="L698"></a><tt class="py-lineno">698</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">setup_oauth</tt><tt class="py-op">(</tt><tt class="py-param">request_handler</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L699"></a><tt class="py-lineno">699</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_in_error</tt><tt class="py-op">:</tt> </tt>
-<a name="L700"></a><tt class="py-lineno">700</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-197" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator._display_error_message" class="py-name" href="#" onclick="return doclink('link-197', '_display_error_message', 'link-183');">_display_error_message</a></tt><tt class="py-op">(</tt><tt class="py-name">request_handler</tt><tt class="py-op">)</tt> </tt>
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-193', 'request', 'link-159');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L701"></a><tt class="py-lineno">701</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
<a name="L702"></a><tt class="py-lineno">702</tt> <tt class="py-line"> </tt>
-<a name="L703"></a><tt class="py-lineno">703</tt> <tt class="py-line"> <tt class="py-name">user</tt> <tt class="py-op">=</tt> <tt class="py-name">users</tt><tt class="py-op">.</tt><tt class="py-name">get_current_user</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L704"></a><tt class="py-lineno">704</tt> <tt class="py-line"> <tt class="py-comment"># Don't use @login_decorator as this could be used in a POST request.</tt> </tt>
-<a name="L705"></a><tt class="py-lineno">705</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">user</tt><tt class="py-op">:</tt> </tt>
-<a name="L706"></a><tt class="py-lineno">706</tt> <tt class="py-line"> <tt class="py-name">request_handler</tt><tt class="py-op">.</tt><tt class="py-name">redirect</tt><tt class="py-op">(</tt><tt class="py-name">users</tt><tt class="py-op">.</tt><tt class="py-name">create_login_url</tt><tt class="py-op">(</tt> </tt>
-<a name="L707"></a><tt class="py-lineno">707</tt> <tt class="py-line"> <tt class="py-name">request_handler</tt><tt class="py-op">.</tt><tt id="link-198" class="py-name"><a title="apiclient.http.HttpMock.request
+<a name="L703"></a><tt class="py-lineno">703</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-194" class="py-name" targets="Method oauth2client.appengine.OAuth2Decorator._create_flow()=oauth2client.appengine.OAuth2Decorator-class.html#_create_flow"><a title="oauth2client.appengine.OAuth2Decorator._create_flow" class="py-name" href="#" onclick="return doclink('link-194', '_create_flow', 'link-194');">_create_flow</a></tt><tt class="py-op">(</tt><tt class="py-name">request_handler</tt><tt class="py-op">)</tt> </tt>
+<a name="L704"></a><tt class="py-lineno">704</tt> <tt class="py-line"> </tt>
+<a name="L705"></a><tt class="py-lineno">705</tt> <tt class="py-line"> <tt class="py-comment"># Store the request URI in 'state' so we can use it later</tt> </tt>
+<a name="L706"></a><tt class="py-lineno">706</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-195" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator.flow" class="py-name" href="#" onclick="return doclink('link-195', 'flow', 'link-84');">flow</a></tt><tt class="py-op">.</tt><tt class="py-name">params</tt><tt class="py-op">[</tt><tt class="py-string">'state'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-196" class="py-name" targets="Function oauth2client.appengine._build_state_value()=oauth2client.appengine-module.html#_build_state_value"><a title="oauth2client.appengine._build_state_value" class="py-name" href="#" onclick="return doclink('link-196', '_build_state_value', 'link-196');">_build_state_value</a></tt><tt class="py-op">(</tt><tt class="py-name">request_handler</tt><tt class="py-op">,</tt> <tt class="py-name">user</tt><tt class="py-op">)</tt> </tt>
+<a name="L707"></a><tt class="py-lineno">707</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-197" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-197', 'credentials', 'link-102');">credentials</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_storage_class</tt><tt class="py-op">(</tt> </tt>
+<a name="L708"></a><tt class="py-lineno">708</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_credentials_class</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L709"></a><tt class="py-lineno">709</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_credentials_property_name</tt><tt class="py-op">,</tt> <tt class="py-name">user</tt><tt class="py-op">=</tt><tt class="py-name">user</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-198" class="py-name"><a title="apiclient.schema.Schemas.get
+oauth2client.client.MemoryCache.get
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-198', 'get', 'link-52');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L710"></a><tt class="py-lineno">710</tt> <tt class="py-line"> </tt>
+<a name="L711"></a><tt class="py-lineno">711</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-199" class="py-name" targets="Method oauth2client.appengine.OAuth2Decorator.has_credentials()=oauth2client.appengine.OAuth2Decorator-class.html#has_credentials"><a title="oauth2client.appengine.OAuth2Decorator.has_credentials" class="py-name" href="#" onclick="return doclink('link-199', 'has_credentials', 'link-199');">has_credentials</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L712"></a><tt class="py-lineno">712</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">request_handler</tt><tt class="py-op">.</tt><tt class="py-name">redirect</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-200" class="py-name" targets="Method oauth2client.appengine.OAuth2Decorator.authorize_url()=oauth2client.appengine.OAuth2Decorator-class.html#authorize_url"><a title="oauth2client.appengine.OAuth2Decorator.authorize_url" class="py-name" href="#" onclick="return doclink('link-200', 'authorize_url', 'link-200');">authorize_url</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L713"></a><tt class="py-lineno">713</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L714"></a><tt class="py-lineno">714</tt> <tt class="py-line"> <tt class="py-name">resp</tt> <tt class="py-op">=</tt> <tt class="py-name">method</tt><tt class="py-op">(</tt><tt class="py-name">request_handler</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-name">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">kwargs</tt><tt class="py-op">)</tt> </tt>
+<a name="L715"></a><tt class="py-lineno">715</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-201" class="py-name"><a title="oauth2client.client.AccessTokenRefreshError" class="py-name" href="#" onclick="return doclink('link-201', 'AccessTokenRefreshError', 'link-25');">AccessTokenRefreshError</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L716"></a><tt class="py-lineno">716</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">request_handler</tt><tt class="py-op">.</tt><tt class="py-name">redirect</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-202" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator.authorize_url" class="py-name" href="#" onclick="return doclink('link-202', 'authorize_url', 'link-200');">authorize_url</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L717"></a><tt class="py-lineno">717</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt>
+<a name="L718"></a><tt class="py-lineno">718</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-203" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-203', 'credentials', 'link-102');">credentials</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L719"></a><tt class="py-lineno">719</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">resp</tt> </tt>
+</div><a name="L720"></a><tt class="py-lineno">720</tt> <tt class="py-line"> </tt>
+<a name="L721"></a><tt class="py-lineno">721</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">check_oauth</tt> </tt>
+</div><a name="L722"></a><tt class="py-lineno">722</tt> <tt class="py-line"> </tt>
+<a name="OAuth2Decorator._create_flow"></a><div id="OAuth2Decorator._create_flow-def"><a name="L723"></a><tt class="py-lineno">723</tt> <a class="py-toggle" href="#" id="OAuth2Decorator._create_flow-toggle" onclick="return toggle('OAuth2Decorator._create_flow');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2Decorator-class.html#_create_flow">_create_flow</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">request_handler</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OAuth2Decorator._create_flow-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OAuth2Decorator._create_flow-expanded"><a name="L724"></a><tt class="py-lineno">724</tt> <tt class="py-line"> <tt class="py-docstring">"""Create the Flow object.</tt> </tt>
+<a name="L725"></a><tt class="py-lineno">725</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L726"></a><tt class="py-lineno">726</tt> <tt class="py-line"><tt class="py-docstring"> The Flow is calculated lazily since we don't know where this app is</tt> </tt>
+<a name="L727"></a><tt class="py-lineno">727</tt> <tt class="py-line"><tt class="py-docstring"> running until it receives a request, at which point redirect_uri can be</tt> </tt>
+<a name="L728"></a><tt class="py-lineno">728</tt> <tt class="py-line"><tt class="py-docstring"> calculated and then the Flow object can be constructed.</tt> </tt>
+<a name="L729"></a><tt class="py-lineno">729</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L730"></a><tt class="py-lineno">730</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L731"></a><tt class="py-lineno">731</tt> <tt class="py-line"><tt class="py-docstring"> request_handler: webapp.RequestHandler, the request handler.</tt> </tt>
+<a name="L732"></a><tt class="py-lineno">732</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L733"></a><tt class="py-lineno">733</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-204" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator.flow" class="py-name" href="#" onclick="return doclink('link-204', 'flow', 'link-84');">flow</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L734"></a><tt class="py-lineno">734</tt> <tt class="py-line"> <tt class="py-name">redirect_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">request_handler</tt><tt class="py-op">.</tt><tt id="link-205" class="py-name"><a title="apiclient.http.HttpMock.request
apiclient.http.HttpMockSequence.request
apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-198', 'request', 'link-160');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L708"></a><tt class="py-lineno">708</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
-<a name="L709"></a><tt class="py-lineno">709</tt> <tt class="py-line"> </tt>
-<a name="L710"></a><tt class="py-lineno">710</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-199" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator._create_flow" class="py-name" href="#" onclick="return doclink('link-199', '_create_flow', 'link-185');">_create_flow</a></tt><tt class="py-op">(</tt><tt class="py-name">request_handler</tt><tt class="py-op">)</tt> </tt>
-<a name="L711"></a><tt class="py-lineno">711</tt> <tt class="py-line"> </tt>
-<a name="L712"></a><tt class="py-lineno">712</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">flow</tt><tt class="py-op">.</tt><tt class="py-name">params</tt><tt class="py-op">[</tt><tt class="py-string">'state'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-200" class="py-name"><a title="oauth2client.appengine._build_state_value" class="py-name" href="#" onclick="return doclink('link-200', '_build_state_value', 'link-186');">_build_state_value</a></tt><tt class="py-op">(</tt><tt class="py-name">request_handler</tt><tt class="py-op">,</tt> <tt class="py-name">user</tt><tt class="py-op">)</tt> </tt>
-<a name="L713"></a><tt class="py-lineno">713</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-201" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
-oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-201', 'credentials', 'link-105');">credentials</a></tt> <tt class="py-op">=</tt> <tt id="link-202" class="py-name"><a title="oauth2client.appengine.StorageByKeyName" class="py-name" href="#" onclick="return doclink('link-202', 'StorageByKeyName', 'link-188');">StorageByKeyName</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L714"></a><tt class="py-lineno">714</tt> <tt class="py-line"> <tt id="link-203" class="py-name"><a title="oauth2client.appengine.CredentialsModel" class="py-name" href="#" onclick="return doclink('link-203', 'CredentialsModel', 'link-189');">CredentialsModel</a></tt><tt class="py-op">,</tt> <tt class="py-name">user</tt><tt class="py-op">.</tt><tt class="py-name">user_id</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">'credentials'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-204" class="py-name"><a title="apiclient.schema.Schemas.get
-oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-204', 'get', 'link-57');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L715"></a><tt class="py-lineno">715</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">method</tt><tt class="py-op">(</tt><tt class="py-name">request_handler</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-name">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">kwargs</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L716"></a><tt class="py-lineno">716</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">setup_oauth</tt> </tt>
-</div><a name="L717"></a><tt class="py-lineno">717</tt> <tt class="py-line"> </tt>
-<a name="OAuth2Decorator.has_credentials"></a><div id="OAuth2Decorator.has_credentials-def"><a name="L718"></a><tt class="py-lineno">718</tt> <a class="py-toggle" href="#" id="OAuth2Decorator.has_credentials-toggle" onclick="return toggle('OAuth2Decorator.has_credentials');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2Decorator-class.html#has_credentials">has_credentials</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="OAuth2Decorator.has_credentials-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OAuth2Decorator.has_credentials-expanded"><a name="L719"></a><tt class="py-lineno">719</tt> <tt class="py-line"> <tt class="py-docstring">"""True if for the logged in user there are valid access Credentials.</tt> </tt>
-<a name="L720"></a><tt class="py-lineno">720</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L721"></a><tt class="py-lineno">721</tt> <tt class="py-line"><tt class="py-docstring"> Must only be called from with a webapp.RequestHandler subclassed method</tt> </tt>
-<a name="L722"></a><tt class="py-lineno">722</tt> <tt class="py-line"><tt class="py-docstring"> that had been decorated with either @oauth_required or @oauth_aware.</tt> </tt>
-<a name="L723"></a><tt class="py-lineno">723</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L724"></a><tt class="py-lineno">724</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-205" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
-oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-205', 'credentials', 'link-105');">credentials</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-206" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
-oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-206', 'credentials', 'link-105');">credentials</a></tt><tt class="py-op">.</tt><tt class="py-name">invalid</tt> </tt>
-</div><a name="L725"></a><tt class="py-lineno">725</tt> <tt class="py-line"> </tt>
-<a name="OAuth2Decorator.authorize_url"></a><div id="OAuth2Decorator.authorize_url-def"><a name="L726"></a><tt class="py-lineno">726</tt> <a class="py-toggle" href="#" id="OAuth2Decorator.authorize_url-toggle" onclick="return toggle('OAuth2Decorator.authorize_url');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2Decorator-class.html#authorize_url">authorize_url</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="OAuth2Decorator.authorize_url-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OAuth2Decorator.authorize_url-expanded"><a name="L727"></a><tt class="py-lineno">727</tt> <tt class="py-line"> <tt class="py-docstring">"""Returns the URL to start the OAuth dance.</tt> </tt>
-<a name="L728"></a><tt class="py-lineno">728</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L729"></a><tt class="py-lineno">729</tt> <tt class="py-line"><tt class="py-docstring"> Must only be called from with a webapp.RequestHandler subclassed method</tt> </tt>
-<a name="L730"></a><tt class="py-lineno">730</tt> <tt class="py-line"><tt class="py-docstring"> that had been decorated with either @oauth_required or @oauth_aware.</tt> </tt>
-<a name="L731"></a><tt class="py-lineno">731</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L732"></a><tt class="py-lineno">732</tt> <tt class="py-line"> <tt class="py-name">url</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">flow</tt><tt class="py-op">.</tt><tt id="link-207" class="py-name" targets="Method oauth2client.client.OAuth2WebServerFlow.step1_get_authorize_url()=oauth2client.client.OAuth2WebServerFlow-class.html#step1_get_authorize_url"><a title="oauth2client.client.OAuth2WebServerFlow.step1_get_authorize_url" class="py-name" href="#" onclick="return doclink('link-207', 'step1_get_authorize_url', 'link-207');">step1_get_authorize_url</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L733"></a><tt class="py-lineno">733</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">url</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L734"></a><tt class="py-lineno">734</tt> <tt class="py-line"> </tt>
-<a name="OAuth2Decorator.http"></a><div id="OAuth2Decorator.http-def"><a name="L735"></a><tt class="py-lineno">735</tt> <a class="py-toggle" href="#" id="OAuth2Decorator.http-toggle" onclick="return toggle('OAuth2Decorator.http');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2Decorator-class.html#http">http</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="OAuth2Decorator.http-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OAuth2Decorator.http-expanded"><a name="L736"></a><tt class="py-lineno">736</tt> <tt class="py-line"> <tt class="py-docstring">"""Returns an authorized http instance.</tt> </tt>
-<a name="L737"></a><tt class="py-lineno">737</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L738"></a><tt class="py-lineno">738</tt> <tt class="py-line"><tt class="py-docstring"> Must only be called from within an @oauth_required decorated method, or</tt> </tt>
-<a name="L739"></a><tt class="py-lineno">739</tt> <tt class="py-line"><tt class="py-docstring"> from within an @oauth_aware decorated method where has_credentials()</tt> </tt>
-<a name="L740"></a><tt class="py-lineno">740</tt> <tt class="py-line"><tt class="py-docstring"> returns True.</tt> </tt>
-<a name="L741"></a><tt class="py-lineno">741</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L742"></a><tt class="py-lineno">742</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-208" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
-oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-208', 'credentials', 'link-105');">credentials</a></tt><tt class="py-op">.</tt><tt id="link-209" class="py-name" targets="Method oauth2client.client.Credentials.authorize()=oauth2client.client.Credentials-class.html#authorize,Method oauth2client.client.OAuth2Credentials.authorize()=oauth2client.client.OAuth2Credentials-class.html#authorize"><a title="oauth2client.client.Credentials.authorize
-oauth2client.client.OAuth2Credentials.authorize" class="py-name" href="#" onclick="return doclink('link-209', 'authorize', 'link-209');">authorize</a></tt><tt class="py-op">(</tt><tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">Http</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-205', 'request', 'link-159');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">relative_url</tt><tt class="py-op">(</tt> </tt>
+<a name="L735"></a><tt class="py-lineno">735</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_callback_path</tt><tt class="py-op">)</tt> <tt class="py-comment"># Usually /oauth2callback</tt> </tt>
+<a name="L736"></a><tt class="py-lineno">736</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-206" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator.flow" class="py-name" href="#" onclick="return doclink('link-206', 'flow', 'link-84');">flow</a></tt> <tt class="py-op">=</tt> <tt id="link-207" class="py-name"><a title="oauth2client.client.OAuth2WebServerFlow" class="py-name" href="#" onclick="return doclink('link-207', 'OAuth2WebServerFlow', 'link-37');">OAuth2WebServerFlow</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_client_id</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_client_secret</tt><tt class="py-op">,</tt> </tt>
+<a name="L737"></a><tt class="py-lineno">737</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_scope</tt><tt class="py-op">,</tt> <tt class="py-name">redirect_uri</tt><tt class="py-op">=</tt><tt class="py-name">redirect_uri</tt><tt class="py-op">,</tt> </tt>
+<a name="L738"></a><tt class="py-lineno">738</tt> <tt class="py-line"> <tt class="py-name">user_agent</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_user_agent</tt><tt class="py-op">,</tt> </tt>
+<a name="L739"></a><tt class="py-lineno">739</tt> <tt class="py-line"> <tt class="py-name">auth_uri</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_auth_uri</tt><tt class="py-op">,</tt> </tt>
+<a name="L740"></a><tt class="py-lineno">740</tt> <tt class="py-line"> <tt class="py-name">token_uri</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_token_uri</tt><tt class="py-op">,</tt> </tt>
+<a name="L741"></a><tt class="py-lineno">741</tt> <tt class="py-line"> <tt class="py-name">revoke_uri</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_revoke_uri</tt><tt class="py-op">,</tt> </tt>
+<a name="L742"></a><tt class="py-lineno">742</tt> <tt class="py-line"> <tt class="py-op">**</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_kwargs</tt><tt class="py-op">)</tt> </tt>
</div><a name="L743"></a><tt class="py-lineno">743</tt> <tt class="py-line"> </tt>
-<a name="L744"></a><tt class="py-lineno">744</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">property</tt> </tt>
-<a name="OAuth2Decorator.callback_path"></a><div id="OAuth2Decorator.callback_path-def"><a name="L745"></a><tt class="py-lineno">745</tt> <a class="py-toggle" href="#" id="OAuth2Decorator.callback_path-toggle" onclick="return toggle('OAuth2Decorator.callback_path');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2Decorator-class.html#callback_path">callback_path</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="OAuth2Decorator.callback_path-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OAuth2Decorator.callback_path-expanded"><a name="L746"></a><tt class="py-lineno">746</tt> <tt class="py-line"> <tt class="py-docstring">"""The absolute path where the callback will occur.</tt> </tt>
-<a name="L747"></a><tt class="py-lineno">747</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L748"></a><tt class="py-lineno">748</tt> <tt class="py-line"><tt class="py-docstring"> Note this is the absolute path, not the absolute URI, that will be</tt> </tt>
-<a name="L749"></a><tt class="py-lineno">749</tt> <tt class="py-line"><tt class="py-docstring"> calculated by the decorator at runtime. See callback_handler() for how this</tt> </tt>
-<a name="L750"></a><tt class="py-lineno">750</tt> <tt class="py-line"><tt class="py-docstring"> should be used.</tt> </tt>
-<a name="L751"></a><tt class="py-lineno">751</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L752"></a><tt class="py-lineno">752</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L753"></a><tt class="py-lineno">753</tt> <tt class="py-line"><tt class="py-docstring"> The callback path as a string.</tt> </tt>
-<a name="L754"></a><tt class="py-lineno">754</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L755"></a><tt class="py-lineno">755</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_callback_path</tt> </tt>
-</div><a name="L756"></a><tt class="py-lineno">756</tt> <tt class="py-line"> </tt>
+<a name="OAuth2Decorator.oauth_aware"></a><div id="OAuth2Decorator.oauth_aware-def"><a name="L744"></a><tt class="py-lineno">744</tt> <a class="py-toggle" href="#" id="OAuth2Decorator.oauth_aware-toggle" onclick="return toggle('OAuth2Decorator.oauth_aware');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2Decorator-class.html#oauth_aware">oauth_aware</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">method</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OAuth2Decorator.oauth_aware-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OAuth2Decorator.oauth_aware-expanded"><a name="L745"></a><tt class="py-lineno">745</tt> <tt class="py-line"> <tt class="py-docstring">"""Decorator that sets up for OAuth 2.0 dance, but doesn't do it.</tt> </tt>
+<a name="L746"></a><tt class="py-lineno">746</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L747"></a><tt class="py-lineno">747</tt> <tt class="py-line"><tt class="py-docstring"> Does all the setup for the OAuth dance, but doesn't initiate it.</tt> </tt>
+<a name="L748"></a><tt class="py-lineno">748</tt> <tt class="py-line"><tt class="py-docstring"> This decorator is useful if you want to create a page that knows</tt> </tt>
+<a name="L749"></a><tt class="py-lineno">749</tt> <tt class="py-line"><tt class="py-docstring"> whether or not the user has granted access to this application.</tt> </tt>
+<a name="L750"></a><tt class="py-lineno">750</tt> <tt class="py-line"><tt class="py-docstring"> From within a method decorated with @oauth_aware the has_credentials()</tt> </tt>
+<a name="L751"></a><tt class="py-lineno">751</tt> <tt class="py-line"><tt class="py-docstring"> and authorize_url() methods can be called.</tt> </tt>
+<a name="L752"></a><tt class="py-lineno">752</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L753"></a><tt class="py-lineno">753</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L754"></a><tt class="py-lineno">754</tt> <tt class="py-line"><tt class="py-docstring"> method: callable, to be decorated method of a webapp.RequestHandler</tt> </tt>
+<a name="L755"></a><tt class="py-lineno">755</tt> <tt class="py-line"><tt class="py-docstring"> instance.</tt> </tt>
+<a name="L756"></a><tt class="py-lineno">756</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
<a name="L757"></a><tt class="py-lineno">757</tt> <tt class="py-line"> </tt>
-<a name="OAuth2Decorator.callback_handler"></a><div id="OAuth2Decorator.callback_handler-def"><a name="L758"></a><tt class="py-lineno">758</tt> <a class="py-toggle" href="#" id="OAuth2Decorator.callback_handler-toggle" onclick="return toggle('OAuth2Decorator.callback_handler');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2Decorator-class.html#callback_handler">callback_handler</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="OAuth2Decorator.callback_handler-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OAuth2Decorator.callback_handler-expanded"><a name="L759"></a><tt class="py-lineno">759</tt> <tt class="py-line"> <tt class="py-docstring">"""RequestHandler for the OAuth 2.0 redirect callback.</tt> </tt>
-<a name="L760"></a><tt class="py-lineno">760</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L761"></a><tt class="py-lineno">761</tt> <tt class="py-line"><tt class="py-docstring"> Usage:</tt> </tt>
-<a name="L762"></a><tt class="py-lineno">762</tt> <tt class="py-line"><tt class="py-docstring"> app = webapp.WSGIApplication([</tt> </tt>
-<a name="L763"></a><tt class="py-lineno">763</tt> <tt class="py-line"><tt class="py-docstring"> ('/index', MyIndexHandler),</tt> </tt>
-<a name="L764"></a><tt class="py-lineno">764</tt> <tt class="py-line"><tt class="py-docstring"> ...,</tt> </tt>
-<a name="L765"></a><tt class="py-lineno">765</tt> <tt class="py-line"><tt class="py-docstring"> (decorator.callback_path, decorator.callback_handler())</tt> </tt>
-<a name="L766"></a><tt class="py-lineno">766</tt> <tt class="py-line"><tt class="py-docstring"> ])</tt> </tt>
-<a name="L767"></a><tt class="py-lineno">767</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L768"></a><tt class="py-lineno">768</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L769"></a><tt class="py-lineno">769</tt> <tt class="py-line"><tt class="py-docstring"> A webapp.RequestHandler that handles the redirect back from the</tt> </tt>
-<a name="L770"></a><tt class="py-lineno">770</tt> <tt class="py-line"><tt class="py-docstring"> server during the OAuth 2.0 dance.</tt> </tt>
-<a name="L771"></a><tt class="py-lineno">771</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L772"></a><tt class="py-lineno">772</tt> <tt class="py-line"> <tt class="py-name">decorator</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt> </tt>
-<a name="L773"></a><tt class="py-lineno">773</tt> <tt class="py-line"> </tt>
-<a name="L774"></a><tt class="py-lineno">774</tt> <tt class="py-line"> <tt class="py-keyword">class</tt> <tt class="py-def-name">OAuth2Handler</tt><tt class="py-op">(</tt><tt class="py-base-class">webapp</tt><tt class="py-op">.</tt><tt class="py-base-class">RequestHandler</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L775"></a><tt class="py-lineno">775</tt> <tt class="py-line"> <tt class="py-docstring">"""Handler for the redirect_uri of the OAuth 2.0 dance."""</tt> </tt>
-<a name="L776"></a><tt class="py-lineno">776</tt> <tt class="py-line"> </tt>
-<a name="L777"></a><tt class="py-lineno">777</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">login_required</tt> </tt>
-<a name="L778"></a><tt class="py-lineno">778</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">get</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L779"></a><tt class="py-lineno">779</tt> <tt class="py-line"> <tt class="py-name">error</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-210" class="py-name"><a title="apiclient.http.HttpMock.request
+<a name="L758"></a><tt class="py-lineno">758</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">setup_oauth</tt><tt class="py-op">(</tt><tt class="py-param">request_handler</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L759"></a><tt class="py-lineno">759</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_in_error</tt><tt class="py-op">:</tt> </tt>
+<a name="L760"></a><tt class="py-lineno">760</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-208" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator._display_error_message" class="py-name" href="#" onclick="return doclink('link-208', '_display_error_message', 'link-192');">_display_error_message</a></tt><tt class="py-op">(</tt><tt class="py-name">request_handler</tt><tt class="py-op">)</tt> </tt>
+<a name="L761"></a><tt class="py-lineno">761</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L762"></a><tt class="py-lineno">762</tt> <tt class="py-line"> </tt>
+<a name="L763"></a><tt class="py-lineno">763</tt> <tt class="py-line"> <tt class="py-name">user</tt> <tt class="py-op">=</tt> <tt class="py-name">users</tt><tt class="py-op">.</tt><tt class="py-name">get_current_user</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L764"></a><tt class="py-lineno">764</tt> <tt class="py-line"> <tt class="py-comment"># Don't use @login_decorator as this could be used in a POST request.</tt> </tt>
+<a name="L765"></a><tt class="py-lineno">765</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">user</tt><tt class="py-op">:</tt> </tt>
+<a name="L766"></a><tt class="py-lineno">766</tt> <tt class="py-line"> <tt class="py-name">request_handler</tt><tt class="py-op">.</tt><tt class="py-name">redirect</tt><tt class="py-op">(</tt><tt class="py-name">users</tt><tt class="py-op">.</tt><tt class="py-name">create_login_url</tt><tt class="py-op">(</tt> </tt>
+<a name="L767"></a><tt class="py-lineno">767</tt> <tt class="py-line"> <tt class="py-name">request_handler</tt><tt class="py-op">.</tt><tt id="link-209" class="py-name"><a title="apiclient.http.HttpMock.request
apiclient.http.HttpMockSequence.request
apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-210', 'request', 'link-160');">request</a></tt><tt class="py-op">.</tt><tt id="link-211" class="py-name"><a title="apiclient.schema.Schemas.get
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-209', 'request', 'link-159');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L768"></a><tt class="py-lineno">768</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L769"></a><tt class="py-lineno">769</tt> <tt class="py-line"> </tt>
+<a name="L770"></a><tt class="py-lineno">770</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-210" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator._create_flow" class="py-name" href="#" onclick="return doclink('link-210', '_create_flow', 'link-194');">_create_flow</a></tt><tt class="py-op">(</tt><tt class="py-name">request_handler</tt><tt class="py-op">)</tt> </tt>
+<a name="L771"></a><tt class="py-lineno">771</tt> <tt class="py-line"> </tt>
+<a name="L772"></a><tt class="py-lineno">772</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-211" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator.flow" class="py-name" href="#" onclick="return doclink('link-211', 'flow', 'link-84');">flow</a></tt><tt class="py-op">.</tt><tt class="py-name">params</tt><tt class="py-op">[</tt><tt class="py-string">'state'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-212" class="py-name"><a title="oauth2client.appengine._build_state_value" class="py-name" href="#" onclick="return doclink('link-212', '_build_state_value', 'link-196');">_build_state_value</a></tt><tt class="py-op">(</tt><tt class="py-name">request_handler</tt><tt class="py-op">,</tt> <tt class="py-name">user</tt><tt class="py-op">)</tt> </tt>
+<a name="L773"></a><tt class="py-lineno">773</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-213" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-213', 'credentials', 'link-102');">credentials</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_storage_class</tt><tt class="py-op">(</tt> </tt>
+<a name="L774"></a><tt class="py-lineno">774</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_credentials_class</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L775"></a><tt class="py-lineno">775</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_credentials_property_name</tt><tt class="py-op">,</tt> <tt class="py-name">user</tt><tt class="py-op">=</tt><tt class="py-name">user</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-214" class="py-name"><a title="apiclient.schema.Schemas.get
oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-211', 'get', 'link-57');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'error'</tt><tt class="py-op">)</tt> </tt>
-<a name="L780"></a><tt class="py-lineno">780</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">error</tt><tt class="py-op">:</tt> </tt>
-<a name="L781"></a><tt class="py-lineno">781</tt> <tt class="py-line"> <tt class="py-name">errormsg</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-212" class="py-name"><a title="apiclient.http.HttpMock.request
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-214', 'get', 'link-52');">get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L776"></a><tt class="py-lineno">776</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L777"></a><tt class="py-lineno">777</tt> <tt class="py-line"> <tt class="py-name">resp</tt> <tt class="py-op">=</tt> <tt class="py-name">method</tt><tt class="py-op">(</tt><tt class="py-name">request_handler</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-name">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">kwargs</tt><tt class="py-op">)</tt> </tt>
+<a name="L778"></a><tt class="py-lineno">778</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt>
+<a name="L779"></a><tt class="py-lineno">779</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-215" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-215', 'credentials', 'link-102');">credentials</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L780"></a><tt class="py-lineno">780</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">resp</tt> </tt>
+</div><a name="L781"></a><tt class="py-lineno">781</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">setup_oauth</tt> </tt>
+</div><a name="L782"></a><tt class="py-lineno">782</tt> <tt class="py-line"> </tt>
+<a name="L783"></a><tt class="py-lineno">783</tt> <tt class="py-line"> </tt>
+<a name="OAuth2Decorator.has_credentials"></a><div id="OAuth2Decorator.has_credentials-def"><a name="L784"></a><tt class="py-lineno">784</tt> <a class="py-toggle" href="#" id="OAuth2Decorator.has_credentials-toggle" onclick="return toggle('OAuth2Decorator.has_credentials');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2Decorator-class.html#has_credentials">has_credentials</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OAuth2Decorator.has_credentials-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OAuth2Decorator.has_credentials-expanded"><a name="L785"></a><tt class="py-lineno">785</tt> <tt class="py-line"> <tt class="py-docstring">"""True if for the logged in user there are valid access Credentials.</tt> </tt>
+<a name="L786"></a><tt class="py-lineno">786</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L787"></a><tt class="py-lineno">787</tt> <tt class="py-line"><tt class="py-docstring"> Must only be called from with a webapp.RequestHandler subclassed method</tt> </tt>
+<a name="L788"></a><tt class="py-lineno">788</tt> <tt class="py-line"><tt class="py-docstring"> that had been decorated with either @oauth_required or @oauth_aware.</tt> </tt>
+<a name="L789"></a><tt class="py-lineno">789</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L790"></a><tt class="py-lineno">790</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-216" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-216', 'credentials', 'link-102');">credentials</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-217" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-217', 'credentials', 'link-102');">credentials</a></tt><tt class="py-op">.</tt><tt class="py-name">invalid</tt> </tt>
+</div><a name="L791"></a><tt class="py-lineno">791</tt> <tt class="py-line"> </tt>
+<a name="OAuth2Decorator.authorize_url"></a><div id="OAuth2Decorator.authorize_url-def"><a name="L792"></a><tt class="py-lineno">792</tt> <a class="py-toggle" href="#" id="OAuth2Decorator.authorize_url-toggle" onclick="return toggle('OAuth2Decorator.authorize_url');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2Decorator-class.html#authorize_url">authorize_url</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OAuth2Decorator.authorize_url-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OAuth2Decorator.authorize_url-expanded"><a name="L793"></a><tt class="py-lineno">793</tt> <tt class="py-line"> <tt class="py-docstring">"""Returns the URL to start the OAuth dance.</tt> </tt>
+<a name="L794"></a><tt class="py-lineno">794</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L795"></a><tt class="py-lineno">795</tt> <tt class="py-line"><tt class="py-docstring"> Must only be called from with a webapp.RequestHandler subclassed method</tt> </tt>
+<a name="L796"></a><tt class="py-lineno">796</tt> <tt class="py-line"><tt class="py-docstring"> that had been decorated with either @oauth_required or @oauth_aware.</tt> </tt>
+<a name="L797"></a><tt class="py-lineno">797</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L798"></a><tt class="py-lineno">798</tt> <tt class="py-line"> <tt class="py-name">url</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-218" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator.flow" class="py-name" href="#" onclick="return doclink('link-218', 'flow', 'link-84');">flow</a></tt><tt class="py-op">.</tt><tt id="link-219" class="py-name" targets="Method oauth2client.client.OAuth2WebServerFlow.step1_get_authorize_url()=oauth2client.client.OAuth2WebServerFlow-class.html#step1_get_authorize_url"><a title="oauth2client.client.OAuth2WebServerFlow.step1_get_authorize_url" class="py-name" href="#" onclick="return doclink('link-219', 'step1_get_authorize_url', 'link-219');">step1_get_authorize_url</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L799"></a><tt class="py-lineno">799</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">url</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L800"></a><tt class="py-lineno">800</tt> <tt class="py-line"> </tt>
+<a name="OAuth2Decorator.http"></a><div id="OAuth2Decorator.http-def"><a name="L801"></a><tt class="py-lineno">801</tt> <a class="py-toggle" href="#" id="OAuth2Decorator.http-toggle" onclick="return toggle('OAuth2Decorator.http');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2Decorator-class.html#http">http</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OAuth2Decorator.http-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OAuth2Decorator.http-expanded"><a name="L802"></a><tt class="py-lineno">802</tt> <tt class="py-line"> <tt class="py-docstring">"""Returns an authorized http instance.</tt> </tt>
+<a name="L803"></a><tt class="py-lineno">803</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L804"></a><tt class="py-lineno">804</tt> <tt class="py-line"><tt class="py-docstring"> Must only be called from within an @oauth_required decorated method, or</tt> </tt>
+<a name="L805"></a><tt class="py-lineno">805</tt> <tt class="py-line"><tt class="py-docstring"> from within an @oauth_aware decorated method where has_credentials()</tt> </tt>
+<a name="L806"></a><tt class="py-lineno">806</tt> <tt class="py-line"><tt class="py-docstring"> returns True.</tt> </tt>
+<a name="L807"></a><tt class="py-lineno">807</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L808"></a><tt class="py-lineno">808</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-220" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-220', 'credentials', 'link-102');">credentials</a></tt><tt class="py-op">.</tt><tt id="link-221" class="py-name" targets="Method oauth2client.client.Credentials.authorize()=oauth2client.client.Credentials-class.html#authorize,Method oauth2client.client.OAuth2Credentials.authorize()=oauth2client.client.OAuth2Credentials-class.html#authorize"><a title="oauth2client.client.Credentials.authorize
+oauth2client.client.OAuth2Credentials.authorize" class="py-name" href="#" onclick="return doclink('link-221', 'authorize', 'link-221');">authorize</a></tt><tt class="py-op">(</tt><tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">Http</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L809"></a><tt class="py-lineno">809</tt> <tt class="py-line"> </tt>
+<a name="L810"></a><tt class="py-lineno">810</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">property</tt> </tt>
+<a name="OAuth2Decorator.callback_path"></a><div id="OAuth2Decorator.callback_path-def"><a name="L811"></a><tt class="py-lineno">811</tt> <a class="py-toggle" href="#" id="OAuth2Decorator.callback_path-toggle" onclick="return toggle('OAuth2Decorator.callback_path');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2Decorator-class.html#callback_path">callback_path</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OAuth2Decorator.callback_path-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OAuth2Decorator.callback_path-expanded"><a name="L812"></a><tt class="py-lineno">812</tt> <tt class="py-line"> <tt class="py-docstring">"""The absolute path where the callback will occur.</tt> </tt>
+<a name="L813"></a><tt class="py-lineno">813</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L814"></a><tt class="py-lineno">814</tt> <tt class="py-line"><tt class="py-docstring"> Note this is the absolute path, not the absolute URI, that will be</tt> </tt>
+<a name="L815"></a><tt class="py-lineno">815</tt> <tt class="py-line"><tt class="py-docstring"> calculated by the decorator at runtime. See callback_handler() for how this</tt> </tt>
+<a name="L816"></a><tt class="py-lineno">816</tt> <tt class="py-line"><tt class="py-docstring"> should be used.</tt> </tt>
+<a name="L817"></a><tt class="py-lineno">817</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L818"></a><tt class="py-lineno">818</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L819"></a><tt class="py-lineno">819</tt> <tt class="py-line"><tt class="py-docstring"> The callback path as a string.</tt> </tt>
+<a name="L820"></a><tt class="py-lineno">820</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L821"></a><tt class="py-lineno">821</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_callback_path</tt> </tt>
+</div><a name="L822"></a><tt class="py-lineno">822</tt> <tt class="py-line"> </tt>
+<a name="L823"></a><tt class="py-lineno">823</tt> <tt class="py-line"> </tt>
+<a name="OAuth2Decorator.callback_handler"></a><div id="OAuth2Decorator.callback_handler-def"><a name="L824"></a><tt class="py-lineno">824</tt> <a class="py-toggle" href="#" id="OAuth2Decorator.callback_handler-toggle" onclick="return toggle('OAuth2Decorator.callback_handler');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2Decorator-class.html#callback_handler">callback_handler</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OAuth2Decorator.callback_handler-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OAuth2Decorator.callback_handler-expanded"><a name="L825"></a><tt class="py-lineno">825</tt> <tt class="py-line"> <tt class="py-docstring">"""RequestHandler for the OAuth 2.0 redirect callback.</tt> </tt>
+<a name="L826"></a><tt class="py-lineno">826</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L827"></a><tt class="py-lineno">827</tt> <tt class="py-line"><tt class="py-docstring"> Usage:</tt> </tt>
+<a name="L828"></a><tt class="py-lineno">828</tt> <tt class="py-line"><tt class="py-docstring"> app = webapp.WSGIApplication([</tt> </tt>
+<a name="L829"></a><tt class="py-lineno">829</tt> <tt class="py-line"><tt class="py-docstring"> ('/index', MyIndexHandler),</tt> </tt>
+<a name="L830"></a><tt class="py-lineno">830</tt> <tt class="py-line"><tt class="py-docstring"> ...,</tt> </tt>
+<a name="L831"></a><tt class="py-lineno">831</tt> <tt class="py-line"><tt class="py-docstring"> (decorator.callback_path, decorator.callback_handler())</tt> </tt>
+<a name="L832"></a><tt class="py-lineno">832</tt> <tt class="py-line"><tt class="py-docstring"> ])</tt> </tt>
+<a name="L833"></a><tt class="py-lineno">833</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L834"></a><tt class="py-lineno">834</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L835"></a><tt class="py-lineno">835</tt> <tt class="py-line"><tt class="py-docstring"> A webapp.RequestHandler that handles the redirect back from the</tt> </tt>
+<a name="L836"></a><tt class="py-lineno">836</tt> <tt class="py-line"><tt class="py-docstring"> server during the OAuth 2.0 dance.</tt> </tt>
+<a name="L837"></a><tt class="py-lineno">837</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L838"></a><tt class="py-lineno">838</tt> <tt class="py-line"> <tt class="py-name">decorator</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt> </tt>
+<a name="L839"></a><tt class="py-lineno">839</tt> <tt class="py-line"> </tt>
+<a name="L840"></a><tt class="py-lineno">840</tt> <tt class="py-line"> <tt class="py-keyword">class</tt> <tt class="py-def-name">OAuth2Handler</tt><tt class="py-op">(</tt><tt class="py-base-class">webapp</tt><tt class="py-op">.</tt><tt class="py-base-class">RequestHandler</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L841"></a><tt class="py-lineno">841</tt> <tt class="py-line"> <tt class="py-docstring">"""Handler for the redirect_uri of the OAuth 2.0 dance."""</tt> </tt>
+<a name="L842"></a><tt class="py-lineno">842</tt> <tt class="py-line"> </tt>
+<a name="L843"></a><tt class="py-lineno">843</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">login_required</tt> </tt>
+<a name="L844"></a><tt class="py-lineno">844</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">get</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L845"></a><tt class="py-lineno">845</tt> <tt class="py-line"> <tt class="py-name">error</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-222" class="py-name"><a title="apiclient.http.HttpMock.request
apiclient.http.HttpMockSequence.request
apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-212', 'request', 'link-160');">request</a></tt><tt class="py-op">.</tt><tt id="link-213" class="py-name"><a title="apiclient.schema.Schemas.get
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-222', 'request', 'link-159');">request</a></tt><tt class="py-op">.</tt><tt id="link-223" class="py-name"><a title="apiclient.schema.Schemas.get
oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-213', 'get', 'link-57');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'error_description'</tt><tt class="py-op">,</tt> <tt class="py-name">error</tt><tt class="py-op">)</tt> </tt>
-<a name="L782"></a><tt class="py-lineno">782</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-214" class="py-name"><a title="apiclient.model.BaseModel.response
-apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-214', 'response', 'link-176');">response</a></tt><tt class="py-op">.</tt><tt class="py-name">out</tt><tt class="py-op">.</tt><tt id="link-215" class="py-name"><a title="apiclient.push.Headers.write" class="py-name" href="#" onclick="return doclink('link-215', 'write', 'link-177');">write</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L783"></a><tt class="py-lineno">783</tt> <tt class="py-line"> <tt class="py-string">'The authorization request failed: %s'</tt> <tt class="py-op">%</tt> <tt id="link-216" class="py-name"><a title="oauth2client.appengine._safe_html" class="py-name" href="#" onclick="return doclink('link-216', '_safe_html', 'link-180');">_safe_html</a></tt><tt class="py-op">(</tt><tt class="py-name">errormsg</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L784"></a><tt class="py-lineno">784</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L785"></a><tt class="py-lineno">785</tt> <tt class="py-line"> <tt class="py-name">user</tt> <tt class="py-op">=</tt> <tt class="py-name">users</tt><tt class="py-op">.</tt><tt class="py-name">get_current_user</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L786"></a><tt class="py-lineno">786</tt> <tt class="py-line"> <tt class="py-name">decorator</tt><tt class="py-op">.</tt><tt id="link-217" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator._create_flow" class="py-name" href="#" onclick="return doclink('link-217', '_create_flow', 'link-185');">_create_flow</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
-<a name="L787"></a><tt class="py-lineno">787</tt> <tt class="py-line"> <tt id="link-218" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
-oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-218', 'credentials', 'link-105');">credentials</a></tt> <tt class="py-op">=</tt> <tt class="py-name">decorator</tt><tt class="py-op">.</tt><tt class="py-name">flow</tt><tt class="py-op">.</tt><tt id="link-219" class="py-name" targets="Method oauth2client.client.OAuth2WebServerFlow.step2_exchange()=oauth2client.client.OAuth2WebServerFlow-class.html#step2_exchange"><a title="oauth2client.client.OAuth2WebServerFlow.step2_exchange" class="py-name" href="#" onclick="return doclink('link-219', 'step2_exchange', 'link-219');">step2_exchange</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-220" class="py-name"><a title="apiclient.http.HttpMock.request
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-223', 'get', 'link-52');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'error'</tt><tt class="py-op">)</tt> </tt>
+<a name="L846"></a><tt class="py-lineno">846</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">error</tt><tt class="py-op">:</tt> </tt>
+<a name="L847"></a><tt class="py-lineno">847</tt> <tt class="py-line"> <tt class="py-name">errormsg</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-224" class="py-name"><a title="apiclient.http.HttpMock.request
apiclient.http.HttpMockSequence.request
apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-220', 'request', 'link-160');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">params</tt><tt class="py-op">)</tt> </tt>
-<a name="L788"></a><tt class="py-lineno">788</tt> <tt class="py-line"> <tt id="link-221" class="py-name"><a title="oauth2client.appengine.StorageByKeyName" class="py-name" href="#" onclick="return doclink('link-221', 'StorageByKeyName', 'link-188');">StorageByKeyName</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L789"></a><tt class="py-lineno">789</tt> <tt class="py-line"> <tt id="link-222" class="py-name"><a title="oauth2client.appengine.CredentialsModel" class="py-name" href="#" onclick="return doclink('link-222', 'CredentialsModel', 'link-189');">CredentialsModel</a></tt><tt class="py-op">,</tt> <tt class="py-name">user</tt><tt class="py-op">.</tt><tt class="py-name">user_id</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">'credentials'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-223" class="py-name"><a title="oauth2client.client.Storage.put" class="py-name" href="#" onclick="return doclink('link-223', 'put', 'link-69');">put</a></tt><tt class="py-op">(</tt><tt id="link-224" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
-oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-224', 'credentials', 'link-105');">credentials</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L790"></a><tt class="py-lineno">790</tt> <tt class="py-line"> <tt class="py-name">redirect_uri</tt> <tt class="py-op">=</tt> <tt id="link-225" class="py-name" targets="Function oauth2client.appengine._parse_state_value()=oauth2client.appengine-module.html#_parse_state_value"><a title="oauth2client.appengine._parse_state_value" class="py-name" href="#" onclick="return doclink('link-225', '_parse_state_value', 'link-225');">_parse_state_value</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-226" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-224', 'request', 'link-159');">request</a></tt><tt class="py-op">.</tt><tt id="link-225" class="py-name"><a title="apiclient.schema.Schemas.get
+oauth2client.client.MemoryCache.get
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-225', 'get', 'link-52');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'error_description'</tt><tt class="py-op">,</tt> <tt class="py-name">error</tt><tt class="py-op">)</tt> </tt>
+<a name="L848"></a><tt class="py-lineno">848</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-226" class="py-name"><a title="apiclient.model.BaseModel.response
+apiclient.model.Model.response" class="py-name" href="#" onclick="return doclink('link-226', 'response', 'link-188');">response</a></tt><tt class="py-op">.</tt><tt class="py-name">out</tt><tt class="py-op">.</tt><tt class="py-name">write</tt><tt class="py-op">(</tt> </tt>
+<a name="L849"></a><tt class="py-lineno">849</tt> <tt class="py-line"> <tt class="py-string">'The authorization request failed: %s'</tt> <tt class="py-op">%</tt> <tt id="link-227" class="py-name"><a title="oauth2client.appengine._safe_html" class="py-name" href="#" onclick="return doclink('link-227', '_safe_html', 'link-190');">_safe_html</a></tt><tt class="py-op">(</tt><tt class="py-name">errormsg</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L850"></a><tt class="py-lineno">850</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L851"></a><tt class="py-lineno">851</tt> <tt class="py-line"> <tt class="py-name">user</tt> <tt class="py-op">=</tt> <tt class="py-name">users</tt><tt class="py-op">.</tt><tt class="py-name">get_current_user</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L852"></a><tt class="py-lineno">852</tt> <tt class="py-line"> <tt class="py-name">decorator</tt><tt class="py-op">.</tt><tt id="link-228" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator._create_flow" class="py-name" href="#" onclick="return doclink('link-228', '_create_flow', 'link-194');">_create_flow</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L853"></a><tt class="py-lineno">853</tt> <tt class="py-line"> <tt id="link-229" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-229', 'credentials', 'link-102');">credentials</a></tt> <tt class="py-op">=</tt> <tt class="py-name">decorator</tt><tt class="py-op">.</tt><tt id="link-230" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator.flow" class="py-name" href="#" onclick="return doclink('link-230', 'flow', 'link-84');">flow</a></tt><tt class="py-op">.</tt><tt id="link-231" class="py-name" targets="Method oauth2client.client.OAuth2WebServerFlow.step2_exchange()=oauth2client.client.OAuth2WebServerFlow-class.html#step2_exchange"><a title="oauth2client.client.OAuth2WebServerFlow.step2_exchange" class="py-name" href="#" onclick="return doclink('link-231', 'step2_exchange', 'link-231');">step2_exchange</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-232" class="py-name"><a title="apiclient.http.HttpMock.request
apiclient.http.HttpMockSequence.request
apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-226', 'request', 'link-160');">request</a></tt><tt class="py-op">.</tt><tt id="link-227" class="py-name"><a title="apiclient.schema.Schemas.get
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-232', 'request', 'link-159');">request</a></tt><tt class="py-op">.</tt><tt class="py-name">params</tt><tt class="py-op">)</tt> </tt>
+<a name="L854"></a><tt class="py-lineno">854</tt> <tt class="py-line"> <tt class="py-name">decorator</tt><tt class="py-op">.</tt><tt class="py-name">_storage_class</tt><tt class="py-op">(</tt> </tt>
+<a name="L855"></a><tt class="py-lineno">855</tt> <tt class="py-line"> <tt class="py-name">decorator</tt><tt class="py-op">.</tt><tt class="py-name">_credentials_class</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L856"></a><tt class="py-lineno">856</tt> <tt class="py-line"> <tt class="py-name">decorator</tt><tt class="py-op">.</tt><tt class="py-name">_credentials_property_name</tt><tt class="py-op">,</tt> <tt class="py-name">user</tt><tt class="py-op">=</tt><tt class="py-name">user</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-233" class="py-name"><a title="oauth2client.client.Storage.put" class="py-name" href="#" onclick="return doclink('link-233', 'put', 'link-64');">put</a></tt><tt class="py-op">(</tt><tt id="link-234" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-234', 'credentials', 'link-102');">credentials</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L857"></a><tt class="py-lineno">857</tt> <tt class="py-line"> <tt class="py-name">redirect_uri</tt> <tt class="py-op">=</tt> <tt id="link-235" class="py-name" targets="Function oauth2client.appengine._parse_state_value()=oauth2client.appengine-module.html#_parse_state_value"><a title="oauth2client.appengine._parse_state_value" class="py-name" href="#" onclick="return doclink('link-235', '_parse_state_value', 'link-235');">_parse_state_value</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-236" class="py-name"><a title="apiclient.http.HttpMock.request
+apiclient.http.HttpMockSequence.request
+apiclient.model.BaseModel.request
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-236', 'request', 'link-159');">request</a></tt><tt class="py-op">.</tt><tt id="link-237" class="py-name"><a title="apiclient.schema.Schemas.get
oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-227', 'get', 'link-57');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'state'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L791"></a><tt class="py-lineno">791</tt> <tt class="py-line"> <tt class="py-name">user</tt><tt class="py-op">)</tt> </tt>
-<a name="L792"></a><tt class="py-lineno">792</tt> <tt class="py-line"> </tt>
-<a name="L793"></a><tt class="py-lineno">793</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">decorator</tt><tt class="py-op">.</tt><tt class="py-name">_token_response_param</tt> <tt class="py-keyword">and</tt> <tt id="link-228" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
-oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-228', 'credentials', 'link-105');">credentials</a></tt><tt class="py-op">.</tt><tt class="py-name">token_response</tt><tt class="py-op">:</tt> </tt>
-<a name="L794"></a><tt class="py-lineno">794</tt> <tt class="py-line"> <tt class="py-name">resp_json</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt class="py-name">dumps</tt><tt class="py-op">(</tt><tt id="link-229" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
-oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-229', 'credentials', 'link-105');">credentials</a></tt><tt class="py-op">.</tt><tt class="py-name">token_response</tt><tt class="py-op">)</tt> </tt>
-<a name="L795"></a><tt class="py-lineno">795</tt> <tt class="py-line"> <tt class="py-name">redirect_uri</tt> <tt class="py-op">=</tt> <tt id="link-230" class="py-name"><a title="oauth2client.util" class="py-name" href="#" onclick="return doclink('link-230', 'util', 'link-9');">util</a></tt><tt class="py-op">.</tt><tt id="link-231" class="py-name" targets="Function oauth2client.util._add_query_parameter()=oauth2client.util-module.html#_add_query_parameter"><a title="oauth2client.util._add_query_parameter" class="py-name" href="#" onclick="return doclink('link-231', '_add_query_parameter', 'link-231');">_add_query_parameter</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L796"></a><tt class="py-lineno">796</tt> <tt class="py-line"> <tt class="py-name">redirect_uri</tt><tt class="py-op">,</tt> <tt class="py-name">decorator</tt><tt class="py-op">.</tt><tt class="py-name">_token_response_param</tt><tt class="py-op">,</tt> <tt class="py-name">resp_json</tt><tt class="py-op">)</tt> </tt>
-<a name="L797"></a><tt class="py-lineno">797</tt> <tt class="py-line"> </tt>
-<a name="L798"></a><tt class="py-lineno">798</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">redirect</tt><tt class="py-op">(</tt><tt class="py-name">redirect_uri</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L799"></a><tt class="py-lineno">799</tt> <tt class="py-line"> </tt>
-<a name="L800"></a><tt class="py-lineno">800</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">OAuth2Handler</tt> </tt>
-</div><a name="L801"></a><tt class="py-lineno">801</tt> <tt class="py-line"> </tt>
-<a name="OAuth2Decorator.callback_application"></a><div id="OAuth2Decorator.callback_application-def"><a name="L802"></a><tt class="py-lineno">802</tt> <a class="py-toggle" href="#" id="OAuth2Decorator.callback_application-toggle" onclick="return toggle('OAuth2Decorator.callback_application');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2Decorator-class.html#callback_application">callback_application</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="OAuth2Decorator.callback_application-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OAuth2Decorator.callback_application-expanded"><a name="L803"></a><tt class="py-lineno">803</tt> <tt class="py-line"> <tt class="py-docstring">"""WSGI application for handling the OAuth 2.0 redirect callback.</tt> </tt>
-<a name="L804"></a><tt class="py-lineno">804</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L805"></a><tt class="py-lineno">805</tt> <tt class="py-line"><tt class="py-docstring"> If you need finer grained control use `callback_handler` which returns just</tt> </tt>
-<a name="L806"></a><tt class="py-lineno">806</tt> <tt class="py-line"><tt class="py-docstring"> the webapp.RequestHandler.</tt> </tt>
-<a name="L807"></a><tt class="py-lineno">807</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L808"></a><tt class="py-lineno">808</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L809"></a><tt class="py-lineno">809</tt> <tt class="py-line"><tt class="py-docstring"> A webapp.WSGIApplication that handles the redirect back from the</tt> </tt>
-<a name="L810"></a><tt class="py-lineno">810</tt> <tt class="py-line"><tt class="py-docstring"> server during the OAuth 2.0 dance.</tt> </tt>
-<a name="L811"></a><tt class="py-lineno">811</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L812"></a><tt class="py-lineno">812</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">webapp</tt><tt class="py-op">.</tt><tt class="py-name">WSGIApplication</tt><tt class="py-op">(</tt><tt class="py-op">[</tt> </tt>
-<a name="L813"></a><tt class="py-lineno">813</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-232" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator.callback_path" class="py-name" href="#" onclick="return doclink('link-232', 'callback_path', 'link-175');">callback_path</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-233" class="py-name" targets="Method oauth2client.appengine.OAuth2Decorator.callback_handler()=oauth2client.appengine.OAuth2Decorator-class.html#callback_handler"><a title="oauth2client.appengine.OAuth2Decorator.callback_handler" class="py-name" href="#" onclick="return doclink('link-233', 'callback_handler', 'link-233');">callback_handler</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L814"></a><tt class="py-lineno">814</tt> <tt class="py-line"> <tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L815"></a><tt class="py-lineno">815</tt> <tt class="py-line"> </tt>
-<a name="OAuth2DecoratorFromClientSecrets"></a><div id="OAuth2DecoratorFromClientSecrets-def"><a name="L816"></a><tt class="py-lineno">816</tt> <tt class="py-line"> </tt>
-<a name="L817"></a><tt class="py-lineno">817</tt> <a class="py-toggle" href="#" id="OAuth2DecoratorFromClientSecrets-toggle" onclick="return toggle('OAuth2DecoratorFromClientSecrets');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html">OAuth2DecoratorFromClientSecrets</a><tt class="py-op">(</tt><tt class="py-base-class">OAuth2Decorator</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="OAuth2DecoratorFromClientSecrets-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="OAuth2DecoratorFromClientSecrets-expanded"><a name="L818"></a><tt class="py-lineno">818</tt> <tt class="py-line"> <tt class="py-docstring">"""An OAuth2Decorator that builds from a clientsecrets file.</tt> </tt>
-<a name="L819"></a><tt class="py-lineno">819</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L820"></a><tt class="py-lineno">820</tt> <tt class="py-line"><tt class="py-docstring"> Uses a clientsecrets file as the source for all the information when</tt> </tt>
-<a name="L821"></a><tt class="py-lineno">821</tt> <tt class="py-line"><tt class="py-docstring"> constructing an OAuth2Decorator.</tt> </tt>
-<a name="L822"></a><tt class="py-lineno">822</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L823"></a><tt class="py-lineno">823</tt> <tt class="py-line"><tt class="py-docstring"> Example:</tt> </tt>
-<a name="L824"></a><tt class="py-lineno">824</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L825"></a><tt class="py-lineno">825</tt> <tt class="py-line"><tt class="py-docstring"> decorator = OAuth2DecoratorFromClientSecrets(</tt> </tt>
-<a name="L826"></a><tt class="py-lineno">826</tt> <tt class="py-line"><tt class="py-docstring"> os.path.join(os.path.dirname(__file__), 'client_secrets.json')</tt> </tt>
-<a name="L827"></a><tt class="py-lineno">827</tt> <tt class="py-line"><tt class="py-docstring"> scope='https://www.googleapis.com/auth/plus')</tt> </tt>
-<a name="L828"></a><tt class="py-lineno">828</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L829"></a><tt class="py-lineno">829</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L830"></a><tt class="py-lineno">830</tt> <tt class="py-line"><tt class="py-docstring"> class MainHandler(webapp.RequestHandler):</tt> </tt>
-<a name="L831"></a><tt class="py-lineno">831</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L832"></a><tt class="py-lineno">832</tt> <tt class="py-line"><tt class="py-docstring"> @decorator.oauth_required</tt> </tt>
-<a name="L833"></a><tt class="py-lineno">833</tt> <tt class="py-line"><tt class="py-docstring"> def get(self):</tt> </tt>
-<a name="L834"></a><tt class="py-lineno">834</tt> <tt class="py-line"><tt class="py-docstring"> http = decorator.http()</tt> </tt>
-<a name="L835"></a><tt class="py-lineno">835</tt> <tt class="py-line"><tt class="py-docstring"> # http is authorized with the user's Credentials and can be used</tt> </tt>
-<a name="L836"></a><tt class="py-lineno">836</tt> <tt class="py-line"><tt class="py-docstring"> # in API calls</tt> </tt>
-<a name="L837"></a><tt class="py-lineno">837</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L838"></a><tt class="py-lineno">838</tt> <tt class="py-line"> </tt>
-<a name="L839"></a><tt class="py-lineno">839</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-234" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-234', 'positional', 'link-78');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
-<a name="OAuth2DecoratorFromClientSecrets.__init__"></a><div id="OAuth2DecoratorFromClientSecrets.__init__-def"><a name="L840"></a><tt class="py-lineno">840</tt> <a class="py-toggle" href="#" id="OAuth2DecoratorFromClientSecrets.__init__-toggle" onclick="return toggle('OAuth2DecoratorFromClientSecrets.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">filename</tt><tt class="py-op">,</tt> <tt class="py-param">scope</tt><tt class="py-op">,</tt> <tt class="py-param">message</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">cache</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="OAuth2DecoratorFromClientSecrets.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OAuth2DecoratorFromClientSecrets.__init__-expanded"><a name="L841"></a><tt class="py-lineno">841</tt> <tt class="py-line"> <tt class="py-docstring">"""Constructor</tt> </tt>
-<a name="L842"></a><tt class="py-lineno">842</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L843"></a><tt class="py-lineno">843</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L844"></a><tt class="py-lineno">844</tt> <tt class="py-line"><tt class="py-docstring"> filename: string, File name of client secrets.</tt> </tt>
-<a name="L845"></a><tt class="py-lineno">845</tt> <tt class="py-line"><tt class="py-docstring"> scope: string or iterable of strings, scope(s) of the credentials being</tt> </tt>
-<a name="L846"></a><tt class="py-lineno">846</tt> <tt class="py-line"><tt class="py-docstring"> requested.</tt> </tt>
-<a name="L847"></a><tt class="py-lineno">847</tt> <tt class="py-line"><tt class="py-docstring"> message: string, A friendly string to display to the user if the</tt> </tt>
-<a name="L848"></a><tt class="py-lineno">848</tt> <tt class="py-line"><tt class="py-docstring"> clientsecrets file is missing or invalid. The message may contain HTML</tt> </tt>
-<a name="L849"></a><tt class="py-lineno">849</tt> <tt class="py-line"><tt class="py-docstring"> and will be presented on the web interface for any method that uses the</tt> </tt>
-<a name="L850"></a><tt class="py-lineno">850</tt> <tt class="py-line"><tt class="py-docstring"> decorator.</tt> </tt>
-<a name="L851"></a><tt class="py-lineno">851</tt> <tt class="py-line"><tt class="py-docstring"> cache: An optional cache service client that implements get() and set()</tt> </tt>
-<a name="L852"></a><tt class="py-lineno">852</tt> <tt class="py-line"><tt class="py-docstring"> methods. See clientsecrets.loadfile() for details.</tt> </tt>
-<a name="L853"></a><tt class="py-lineno">853</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L854"></a><tt class="py-lineno">854</tt> <tt class="py-line"> <tt class="py-name">client_type</tt><tt class="py-op">,</tt> <tt class="py-name">client_info</tt> <tt class="py-op">=</tt> <tt id="link-235" class="py-name"><a title="oauth2client.clientsecrets" class="py-name" href="#" onclick="return doclink('link-235', 'clientsecrets', 'link-20');">clientsecrets</a></tt><tt class="py-op">.</tt><tt id="link-236" class="py-name" targets="Function oauth2client.clientsecrets.loadfile()=oauth2client.clientsecrets-module.html#loadfile"><a title="oauth2client.clientsecrets.loadfile" class="py-name" href="#" onclick="return doclink('link-236', 'loadfile', 'link-236');">loadfile</a></tt><tt class="py-op">(</tt><tt id="link-237" class="py-name" targets="Method oauth2client.locked_file.LockedFile.filename()=oauth2client.locked_file.LockedFile-class.html#filename,Method oauth2client.locked_file._Opener.filename()=oauth2client.locked_file._Opener-class.html#filename"><a title="oauth2client.locked_file.LockedFile.filename
-oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-237', 'filename', 'link-237');">filename</a></tt><tt class="py-op">,</tt> <tt class="py-name">cache</tt><tt class="py-op">=</tt><tt class="py-name">cache</tt><tt class="py-op">)</tt> </tt>
-<a name="L855"></a><tt class="py-lineno">855</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">client_type</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt> </tt>
-<a name="L856"></a><tt class="py-lineno">856</tt> <tt class="py-line"> <tt id="link-238" class="py-name"><a title="oauth2client.clientsecrets" class="py-name" href="#" onclick="return doclink('link-238', 'clientsecrets', 'link-20');">clientsecrets</a></tt><tt class="py-op">.</tt><tt id="link-239" class="py-name" targets="Variable oauth2client.clientsecrets.TYPE_WEB=oauth2client.clientsecrets-module.html#TYPE_WEB"><a title="oauth2client.clientsecrets.TYPE_WEB" class="py-name" href="#" onclick="return doclink('link-239', 'TYPE_WEB', 'link-239');">TYPE_WEB</a></tt><tt class="py-op">,</tt> <tt id="link-240" class="py-name"><a title="oauth2client.clientsecrets" class="py-name" href="#" onclick="return doclink('link-240', 'clientsecrets', 'link-20');">clientsecrets</a></tt><tt class="py-op">.</tt><tt id="link-241" class="py-name" targets="Variable oauth2client.clientsecrets.TYPE_INSTALLED=oauth2client.clientsecrets-module.html#TYPE_INSTALLED"><a title="oauth2client.clientsecrets.TYPE_INSTALLED" class="py-name" href="#" onclick="return doclink('link-241', 'TYPE_INSTALLED', 'link-241');">TYPE_INSTALLED</a></tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
-<a name="L857"></a><tt class="py-lineno">857</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-242" class="py-name" targets="Class oauth2client.appengine.InvalidClientSecretsError=oauth2client.appengine.InvalidClientSecretsError-class.html,Class oauth2client.clientsecrets.InvalidClientSecretsError=oauth2client.clientsecrets.InvalidClientSecretsError-class.html"><a title="oauth2client.appengine.InvalidClientSecretsError
-oauth2client.clientsecrets.InvalidClientSecretsError" class="py-name" href="#" onclick="return doclink('link-242', 'InvalidClientSecretsError', 'link-242');">InvalidClientSecretsError</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L858"></a><tt class="py-lineno">858</tt> <tt class="py-line"> <tt class="py-string">'OAuth2Decorator doesn\'t support this OAuth 2.0 flow.'</tt><tt class="py-op">)</tt> </tt>
-<a name="L859"></a><tt class="py-lineno">859</tt> <tt class="py-line"> <tt class="py-name">constructor_kwargs</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
-<a name="L860"></a><tt class="py-lineno">860</tt> <tt class="py-line"> <tt class="py-string">'auth_uri'</tt><tt class="py-op">:</tt> <tt class="py-name">client_info</tt><tt class="py-op">[</tt><tt class="py-string">'auth_uri'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L861"></a><tt class="py-lineno">861</tt> <tt class="py-line"> <tt class="py-string">'token_uri'</tt><tt class="py-op">:</tt> <tt class="py-name">client_info</tt><tt class="py-op">[</tt><tt class="py-string">'token_uri'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L862"></a><tt class="py-lineno">862</tt> <tt class="py-line"> <tt class="py-string">'message'</tt><tt class="py-op">:</tt> <tt class="py-name">message</tt><tt class="py-op">,</tt> </tt>
-<a name="L863"></a><tt class="py-lineno">863</tt> <tt class="py-line"> <tt class="py-op">}</tt> </tt>
-<a name="L864"></a><tt class="py-lineno">864</tt> <tt class="py-line"> <tt class="py-name">revoke_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">client_info</tt><tt class="py-op">.</tt><tt id="link-243" class="py-name"><a title="apiclient.schema.Schemas.get
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-237', 'get', 'link-52');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'state'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L858"></a><tt class="py-lineno">858</tt> <tt class="py-line"> <tt class="py-name">user</tt><tt class="py-op">)</tt> </tt>
+<a name="L859"></a><tt class="py-lineno">859</tt> <tt class="py-line"> </tt>
+<a name="L860"></a><tt class="py-lineno">860</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">decorator</tt><tt class="py-op">.</tt><tt class="py-name">_token_response_param</tt> <tt class="py-keyword">and</tt> <tt id="link-238" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-238', 'credentials', 'link-102');">credentials</a></tt><tt class="py-op">.</tt><tt class="py-name">token_response</tt><tt class="py-op">:</tt> </tt>
+<a name="L861"></a><tt class="py-lineno">861</tt> <tt class="py-line"> <tt class="py-name">resp_json</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt class="py-name">dumps</tt><tt class="py-op">(</tt><tt id="link-239" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-239', 'credentials', 'link-102');">credentials</a></tt><tt class="py-op">.</tt><tt class="py-name">token_response</tt><tt class="py-op">)</tt> </tt>
+<a name="L862"></a><tt class="py-lineno">862</tt> <tt class="py-line"> <tt class="py-name">redirect_uri</tt> <tt class="py-op">=</tt> <tt id="link-240" class="py-name"><a title="oauth2client.util" class="py-name" href="#" onclick="return doclink('link-240', 'util', 'link-6');">util</a></tt><tt class="py-op">.</tt><tt id="link-241" class="py-name" targets="Function oauth2client.util._add_query_parameter()=oauth2client.util-module.html#_add_query_parameter"><a title="oauth2client.util._add_query_parameter" class="py-name" href="#" onclick="return doclink('link-241', '_add_query_parameter', 'link-241');">_add_query_parameter</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L863"></a><tt class="py-lineno">863</tt> <tt class="py-line"> <tt class="py-name">redirect_uri</tt><tt class="py-op">,</tt> <tt class="py-name">decorator</tt><tt class="py-op">.</tt><tt class="py-name">_token_response_param</tt><tt class="py-op">,</tt> <tt class="py-name">resp_json</tt><tt class="py-op">)</tt> </tt>
+<a name="L864"></a><tt class="py-lineno">864</tt> <tt class="py-line"> </tt>
+<a name="L865"></a><tt class="py-lineno">865</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">redirect</tt><tt class="py-op">(</tt><tt class="py-name">redirect_uri</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L866"></a><tt class="py-lineno">866</tt> <tt class="py-line"> </tt>
+<a name="L867"></a><tt class="py-lineno">867</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">OAuth2Handler</tt> </tt>
+</div><a name="L868"></a><tt class="py-lineno">868</tt> <tt class="py-line"> </tt>
+<a name="OAuth2Decorator.callback_application"></a><div id="OAuth2Decorator.callback_application-def"><a name="L869"></a><tt class="py-lineno">869</tt> <a class="py-toggle" href="#" id="OAuth2Decorator.callback_application-toggle" onclick="return toggle('OAuth2Decorator.callback_application');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2Decorator-class.html#callback_application">callback_application</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OAuth2Decorator.callback_application-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OAuth2Decorator.callback_application-expanded"><a name="L870"></a><tt class="py-lineno">870</tt> <tt class="py-line"> <tt class="py-docstring">"""WSGI application for handling the OAuth 2.0 redirect callback.</tt> </tt>
+<a name="L871"></a><tt class="py-lineno">871</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L872"></a><tt class="py-lineno">872</tt> <tt class="py-line"><tt class="py-docstring"> If you need finer grained control use `callback_handler` which returns just</tt> </tt>
+<a name="L873"></a><tt class="py-lineno">873</tt> <tt class="py-line"><tt class="py-docstring"> the webapp.RequestHandler.</tt> </tt>
+<a name="L874"></a><tt class="py-lineno">874</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L875"></a><tt class="py-lineno">875</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L876"></a><tt class="py-lineno">876</tt> <tt class="py-line"><tt class="py-docstring"> A webapp.WSGIApplication that handles the redirect back from the</tt> </tt>
+<a name="L877"></a><tt class="py-lineno">877</tt> <tt class="py-line"><tt class="py-docstring"> server during the OAuth 2.0 dance.</tt> </tt>
+<a name="L878"></a><tt class="py-lineno">878</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L879"></a><tt class="py-lineno">879</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">webapp</tt><tt class="py-op">.</tt><tt class="py-name">WSGIApplication</tt><tt class="py-op">(</tt><tt class="py-op">[</tt> </tt>
+<a name="L880"></a><tt class="py-lineno">880</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-242" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator.callback_path" class="py-name" href="#" onclick="return doclink('link-242', 'callback_path', 'link-187');">callback_path</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-243" class="py-name" targets="Method oauth2client.appengine.OAuth2Decorator.callback_handler()=oauth2client.appengine.OAuth2Decorator-class.html#callback_handler"><a title="oauth2client.appengine.OAuth2Decorator.callback_handler" class="py-name" href="#" onclick="return doclink('link-243', 'callback_handler', 'link-243');">callback_handler</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L881"></a><tt class="py-lineno">881</tt> <tt class="py-line"> <tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L882"></a><tt class="py-lineno">882</tt> <tt class="py-line"> </tt>
+<a name="OAuth2DecoratorFromClientSecrets"></a><div id="OAuth2DecoratorFromClientSecrets-def"><a name="L883"></a><tt class="py-lineno">883</tt> <tt class="py-line"> </tt>
+<a name="L884"></a><tt class="py-lineno">884</tt> <a class="py-toggle" href="#" id="OAuth2DecoratorFromClientSecrets-toggle" onclick="return toggle('OAuth2DecoratorFromClientSecrets');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html">OAuth2DecoratorFromClientSecrets</a><tt class="py-op">(</tt><tt class="py-base-class">OAuth2Decorator</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OAuth2DecoratorFromClientSecrets-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="OAuth2DecoratorFromClientSecrets-expanded"><a name="L885"></a><tt class="py-lineno">885</tt> <tt class="py-line"> <tt class="py-docstring">"""An OAuth2Decorator that builds from a clientsecrets file.</tt> </tt>
+<a name="L886"></a><tt class="py-lineno">886</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L887"></a><tt class="py-lineno">887</tt> <tt class="py-line"><tt class="py-docstring"> Uses a clientsecrets file as the source for all the information when</tt> </tt>
+<a name="L888"></a><tt class="py-lineno">888</tt> <tt class="py-line"><tt class="py-docstring"> constructing an OAuth2Decorator.</tt> </tt>
+<a name="L889"></a><tt class="py-lineno">889</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L890"></a><tt class="py-lineno">890</tt> <tt class="py-line"><tt class="py-docstring"> Example:</tt> </tt>
+<a name="L891"></a><tt class="py-lineno">891</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L892"></a><tt class="py-lineno">892</tt> <tt class="py-line"><tt class="py-docstring"> decorator = OAuth2DecoratorFromClientSecrets(</tt> </tt>
+<a name="L893"></a><tt class="py-lineno">893</tt> <tt class="py-line"><tt class="py-docstring"> os.path.join(os.path.dirname(__file__), 'client_secrets.json')</tt> </tt>
+<a name="L894"></a><tt class="py-lineno">894</tt> <tt class="py-line"><tt class="py-docstring"> scope='https://www.googleapis.com/auth/plus')</tt> </tt>
+<a name="L895"></a><tt class="py-lineno">895</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L896"></a><tt class="py-lineno">896</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L897"></a><tt class="py-lineno">897</tt> <tt class="py-line"><tt class="py-docstring"> class MainHandler(webapp.RequestHandler):</tt> </tt>
+<a name="L898"></a><tt class="py-lineno">898</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L899"></a><tt class="py-lineno">899</tt> <tt class="py-line"><tt class="py-docstring"> @decorator.oauth_required</tt> </tt>
+<a name="L900"></a><tt class="py-lineno">900</tt> <tt class="py-line"><tt class="py-docstring"> def get(self):</tt> </tt>
+<a name="L901"></a><tt class="py-lineno">901</tt> <tt class="py-line"><tt class="py-docstring"> http = decorator.http()</tt> </tt>
+<a name="L902"></a><tt class="py-lineno">902</tt> <tt class="py-line"><tt class="py-docstring"> # http is authorized with the user's Credentials and can be used</tt> </tt>
+<a name="L903"></a><tt class="py-lineno">903</tt> <tt class="py-line"><tt class="py-docstring"> # in API calls</tt> </tt>
+<a name="L904"></a><tt class="py-lineno">904</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L905"></a><tt class="py-lineno">905</tt> <tt class="py-line"> </tt>
+<a name="L906"></a><tt class="py-lineno">906</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-244" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-244', 'positional', 'link-73');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
+<a name="OAuth2DecoratorFromClientSecrets.__init__"></a><div id="OAuth2DecoratorFromClientSecrets.__init__-def"><a name="L907"></a><tt class="py-lineno">907</tt> <a class="py-toggle" href="#" id="OAuth2DecoratorFromClientSecrets.__init__-toggle" onclick="return toggle('OAuth2DecoratorFromClientSecrets.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">filename</tt><tt class="py-op">,</tt> <tt class="py-param">scope</tt><tt class="py-op">,</tt> <tt class="py-param">message</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">cache</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="OAuth2DecoratorFromClientSecrets.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="OAuth2DecoratorFromClientSecrets.__init__-expanded"><a name="L908"></a><tt class="py-lineno">908</tt> <tt class="py-line"> <tt class="py-docstring">"""Constructor</tt> </tt>
+<a name="L909"></a><tt class="py-lineno">909</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L910"></a><tt class="py-lineno">910</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L911"></a><tt class="py-lineno">911</tt> <tt class="py-line"><tt class="py-docstring"> filename: string, File name of client secrets.</tt> </tt>
+<a name="L912"></a><tt class="py-lineno">912</tt> <tt class="py-line"><tt class="py-docstring"> scope: string or iterable of strings, scope(s) of the credentials being</tt> </tt>
+<a name="L913"></a><tt class="py-lineno">913</tt> <tt class="py-line"><tt class="py-docstring"> requested.</tt> </tt>
+<a name="L914"></a><tt class="py-lineno">914</tt> <tt class="py-line"><tt class="py-docstring"> message: string, A friendly string to display to the user if the</tt> </tt>
+<a name="L915"></a><tt class="py-lineno">915</tt> <tt class="py-line"><tt class="py-docstring"> clientsecrets file is missing or invalid. The message may contain HTML</tt> </tt>
+<a name="L916"></a><tt class="py-lineno">916</tt> <tt class="py-line"><tt class="py-docstring"> and will be presented on the web interface for any method that uses the</tt> </tt>
+<a name="L917"></a><tt class="py-lineno">917</tt> <tt class="py-line"><tt class="py-docstring"> decorator.</tt> </tt>
+<a name="L918"></a><tt class="py-lineno">918</tt> <tt class="py-line"><tt class="py-docstring"> cache: An optional cache service client that implements get() and set()</tt> </tt>
+<a name="L919"></a><tt class="py-lineno">919</tt> <tt class="py-line"><tt class="py-docstring"> methods. See clientsecrets.loadfile() for details.</tt> </tt>
+<a name="L920"></a><tt class="py-lineno">920</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L921"></a><tt class="py-lineno">921</tt> <tt class="py-line"> <tt class="py-name">client_type</tt><tt class="py-op">,</tt> <tt class="py-name">client_info</tt> <tt class="py-op">=</tt> <tt id="link-245" class="py-name"><a title="oauth2client.clientsecrets" class="py-name" href="#" onclick="return doclink('link-245', 'clientsecrets', 'link-16');">clientsecrets</a></tt><tt class="py-op">.</tt><tt id="link-246" class="py-name" targets="Function oauth2client.clientsecrets.loadfile()=oauth2client.clientsecrets-module.html#loadfile"><a title="oauth2client.clientsecrets.loadfile" class="py-name" href="#" onclick="return doclink('link-246', 'loadfile', 'link-246');">loadfile</a></tt><tt class="py-op">(</tt><tt id="link-247" class="py-name" targets="Method oauth2client.locked_file.LockedFile.filename()=oauth2client.locked_file.LockedFile-class.html#filename,Method oauth2client.locked_file._Opener.filename()=oauth2client.locked_file._Opener-class.html#filename"><a title="oauth2client.locked_file.LockedFile.filename
+oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-247', 'filename', 'link-247');">filename</a></tt><tt class="py-op">,</tt> <tt class="py-name">cache</tt><tt class="py-op">=</tt><tt class="py-name">cache</tt><tt class="py-op">)</tt> </tt>
+<a name="L922"></a><tt class="py-lineno">922</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">client_type</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt> </tt>
+<a name="L923"></a><tt class="py-lineno">923</tt> <tt class="py-line"> <tt id="link-248" class="py-name"><a title="oauth2client.clientsecrets" class="py-name" href="#" onclick="return doclink('link-248', 'clientsecrets', 'link-16');">clientsecrets</a></tt><tt class="py-op">.</tt><tt id="link-249" class="py-name" targets="Variable oauth2client.clientsecrets.TYPE_WEB=oauth2client.clientsecrets-module.html#TYPE_WEB"><a title="oauth2client.clientsecrets.TYPE_WEB" class="py-name" href="#" onclick="return doclink('link-249', 'TYPE_WEB', 'link-249');">TYPE_WEB</a></tt><tt class="py-op">,</tt> <tt id="link-250" class="py-name"><a title="oauth2client.clientsecrets" class="py-name" href="#" onclick="return doclink('link-250', 'clientsecrets', 'link-16');">clientsecrets</a></tt><tt class="py-op">.</tt><tt id="link-251" class="py-name" targets="Variable oauth2client.clientsecrets.TYPE_INSTALLED=oauth2client.clientsecrets-module.html#TYPE_INSTALLED"><a title="oauth2client.clientsecrets.TYPE_INSTALLED" class="py-name" href="#" onclick="return doclink('link-251', 'TYPE_INSTALLED', 'link-251');">TYPE_INSTALLED</a></tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L924"></a><tt class="py-lineno">924</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-252" class="py-name" targets="Class oauth2client.appengine.InvalidClientSecretsError=oauth2client.appengine.InvalidClientSecretsError-class.html,Class oauth2client.clientsecrets.InvalidClientSecretsError=oauth2client.clientsecrets.InvalidClientSecretsError-class.html"><a title="oauth2client.appengine.InvalidClientSecretsError
+oauth2client.clientsecrets.InvalidClientSecretsError" class="py-name" href="#" onclick="return doclink('link-252', 'InvalidClientSecretsError', 'link-252');">InvalidClientSecretsError</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L925"></a><tt class="py-lineno">925</tt> <tt class="py-line"> <tt class="py-string">'OAuth2Decorator doesn\'t support this OAuth 2.0 flow.'</tt><tt class="py-op">)</tt> </tt>
+<a name="L926"></a><tt class="py-lineno">926</tt> <tt class="py-line"> <tt class="py-name">constructor_kwargs</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L927"></a><tt class="py-lineno">927</tt> <tt class="py-line"> <tt class="py-string">'auth_uri'</tt><tt class="py-op">:</tt> <tt class="py-name">client_info</tt><tt class="py-op">[</tt><tt class="py-string">'auth_uri'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L928"></a><tt class="py-lineno">928</tt> <tt class="py-line"> <tt class="py-string">'token_uri'</tt><tt class="py-op">:</tt> <tt class="py-name">client_info</tt><tt class="py-op">[</tt><tt class="py-string">'token_uri'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L929"></a><tt class="py-lineno">929</tt> <tt class="py-line"> <tt class="py-string">'message'</tt><tt class="py-op">:</tt> <tt class="py-name">message</tt><tt class="py-op">,</tt> </tt>
+<a name="L930"></a><tt class="py-lineno">930</tt> <tt class="py-line"> <tt class="py-op">}</tt> </tt>
+<a name="L931"></a><tt class="py-lineno">931</tt> <tt class="py-line"> <tt class="py-name">revoke_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">client_info</tt><tt class="py-op">.</tt><tt id="link-253" class="py-name"><a title="apiclient.schema.Schemas.get
oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-243', 'get', 'link-57');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'revoke_uri'</tt><tt class="py-op">)</tt> </tt>
-<a name="L865"></a><tt class="py-lineno">865</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">revoke_uri</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L866"></a><tt class="py-lineno">866</tt> <tt class="py-line"> <tt class="py-name">constructor_kwargs</tt><tt class="py-op">[</tt><tt class="py-string">'revoke_uri'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">revoke_uri</tt> </tt>
-<a name="L867"></a><tt class="py-lineno">867</tt> <tt class="py-line"> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-244" class="py-name" targets="Class oauth2client.appengine.OAuth2DecoratorFromClientSecrets=oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html"><a title="oauth2client.appengine.OAuth2DecoratorFromClientSecrets" class="py-name" href="#" onclick="return doclink('link-244', 'OAuth2DecoratorFromClientSecrets', 'link-244');">OAuth2DecoratorFromClientSecrets</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-245" class="py-name"><a title="apiclient.discovery.Resource.__init__
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-253', 'get', 'link-52');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'revoke_uri'</tt><tt class="py-op">)</tt> </tt>
+<a name="L932"></a><tt class="py-lineno">932</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">revoke_uri</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L933"></a><tt class="py-lineno">933</tt> <tt class="py-line"> <tt class="py-name">constructor_kwargs</tt><tt class="py-op">[</tt><tt class="py-string">'revoke_uri'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">revoke_uri</tt> </tt>
+<a name="L934"></a><tt class="py-lineno">934</tt> <tt class="py-line"> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-254" class="py-name" targets="Class oauth2client.appengine.OAuth2DecoratorFromClientSecrets=oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html"><a title="oauth2client.appengine.OAuth2DecoratorFromClientSecrets" class="py-name" href="#" onclick="return doclink('link-254', 'OAuth2DecoratorFromClientSecrets', 'link-254');">OAuth2DecoratorFromClientSecrets</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-255" class="py-name"><a title="apiclient.channel.Channel.__init__
+apiclient.channel.Notification.__init__
+apiclient.discovery.Resource.__init__
apiclient.discovery.ResourceMethodParameters.__init__
apiclient.errors.BatchError.__init__
apiclient.errors.HttpError.__init__
@@ -1152,10 +1260,6 @@
apiclient.http._StreamSlice.__init__
apiclient.model.JsonModel.__init__
apiclient.model.ProtocolBufferModel.__init__
-apiclient.push.Channel.__init__
-apiclient.push.Headers.__init__
-apiclient.push.Subscription.__init__
-apiclient.push.WebhookChannel.__init__
apiclient.schema.Schemas.__init__
apiclient.schema._SchemaToStruct.__init__
oauth2client.appengine.AppAssertionCredentials.__init__
@@ -1177,38 +1281,38 @@
oauth2client.locked_file.LockedFile.__init__
oauth2client.locked_file._Opener.__init__
oauth2client.multistore_file._MultiStore._Storage.__init__
-oauth2client.multistore_file._MultiStore.__init__" class="py-name" href="#" onclick="return doclink('link-245', '__init__', 'link-82');">__init__</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L868"></a><tt class="py-lineno">868</tt> <tt class="py-line"> <tt class="py-name">client_info</tt><tt class="py-op">[</tt><tt class="py-string">'client_id'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">client_info</tt><tt class="py-op">[</tt><tt class="py-string">'client_secret'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L869"></a><tt class="py-lineno">869</tt> <tt class="py-line"> <tt class="py-name">scope</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">constructor_kwargs</tt><tt class="py-op">)</tt> </tt>
-<a name="L870"></a><tt class="py-lineno">870</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">message</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L871"></a><tt class="py-lineno">871</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_message</tt> <tt class="py-op">=</tt> <tt class="py-name">message</tt> </tt>
-<a name="L872"></a><tt class="py-lineno">872</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L873"></a><tt class="py-lineno">873</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_message</tt> <tt class="py-op">=</tt> <tt class="py-string">'Please configure your application for OAuth 2.0.'</tt> </tt>
-</div></div><a name="L874"></a><tt class="py-lineno">874</tt> <tt class="py-line"> </tt>
-<a name="oauth2decorator_from_clientsecrets"></a><div id="oauth2decorator_from_clientsecrets-def"><a name="L875"></a><tt class="py-lineno">875</tt> <tt class="py-line"> </tt>
-<a name="L876"></a><tt class="py-lineno">876</tt> <tt class="py-line"><tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-246" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-246', 'positional', 'link-78');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
-<a name="L877"></a><tt class="py-lineno">877</tt> <a class="py-toggle" href="#" id="oauth2decorator_from_clientsecrets-toggle" onclick="return toggle('oauth2decorator_from_clientsecrets');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine-module.html#oauth2decorator_from_clientsecrets">oauth2decorator_from_clientsecrets</a><tt class="py-op">(</tt><tt class="py-param">filename</tt><tt class="py-op">,</tt> <tt class="py-param">scope</tt><tt class="py-op">,</tt> </tt>
-<a name="L878"></a><tt class="py-lineno">878</tt> <tt class="py-line"> <tt class="py-param">message</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">cache</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="oauth2decorator_from_clientsecrets-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="oauth2decorator_from_clientsecrets-expanded"><a name="L879"></a><tt class="py-lineno">879</tt> <tt class="py-line"> <tt class="py-docstring">"""Creates an OAuth2Decorator populated from a clientsecrets file.</tt> </tt>
-<a name="L880"></a><tt class="py-lineno">880</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L881"></a><tt class="py-lineno">881</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L882"></a><tt class="py-lineno">882</tt> <tt class="py-line"><tt class="py-docstring"> filename: string, File name of client secrets.</tt> </tt>
-<a name="L883"></a><tt class="py-lineno">883</tt> <tt class="py-line"><tt class="py-docstring"> scope: string or list of strings, scope(s) of the credentials being</tt> </tt>
-<a name="L884"></a><tt class="py-lineno">884</tt> <tt class="py-line"><tt class="py-docstring"> requested.</tt> </tt>
-<a name="L885"></a><tt class="py-lineno">885</tt> <tt class="py-line"><tt class="py-docstring"> message: string, A friendly string to display to the user if the</tt> </tt>
-<a name="L886"></a><tt class="py-lineno">886</tt> <tt class="py-line"><tt class="py-docstring"> clientsecrets file is missing or invalid. The message may contain HTML and</tt> </tt>
-<a name="L887"></a><tt class="py-lineno">887</tt> <tt class="py-line"><tt class="py-docstring"> will be presented on the web interface for any method that uses the</tt> </tt>
-<a name="L888"></a><tt class="py-lineno">888</tt> <tt class="py-line"><tt class="py-docstring"> decorator.</tt> </tt>
-<a name="L889"></a><tt class="py-lineno">889</tt> <tt class="py-line"><tt class="py-docstring"> cache: An optional cache service client that implements get() and set()</tt> </tt>
-<a name="L890"></a><tt class="py-lineno">890</tt> <tt class="py-line"><tt class="py-docstring"> methods. See clientsecrets.loadfile() for details.</tt> </tt>
-<a name="L891"></a><tt class="py-lineno">891</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L892"></a><tt class="py-lineno">892</tt> <tt class="py-line"><tt class="py-docstring"> Returns: An OAuth2Decorator</tt> </tt>
-<a name="L893"></a><tt class="py-lineno">893</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L894"></a><tt class="py-lineno">894</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L895"></a><tt class="py-lineno">895</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-247" class="py-name"><a title="oauth2client.appengine.OAuth2DecoratorFromClientSecrets" class="py-name" href="#" onclick="return doclink('link-247', 'OAuth2DecoratorFromClientSecrets', 'link-244');">OAuth2DecoratorFromClientSecrets</a></tt><tt class="py-op">(</tt><tt id="link-248" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
-oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-248', 'filename', 'link-237');">filename</a></tt><tt class="py-op">,</tt> <tt class="py-name">scope</tt><tt class="py-op">,</tt> </tt>
-<a name="L896"></a><tt class="py-lineno">896</tt> <tt class="py-line"> <tt class="py-name">message</tt><tt class="py-op">=</tt><tt class="py-name">message</tt><tt class="py-op">,</tt> <tt class="py-name">cache</tt><tt class="py-op">=</tt><tt class="py-name">cache</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L897"></a><tt class="py-lineno">897</tt> <tt class="py-line"> </tt><script type="text/javascript">
+oauth2client.multistore_file._MultiStore.__init__" class="py-name" href="#" onclick="return doclink('link-255', '__init__', 'link-77');">__init__</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L935"></a><tt class="py-lineno">935</tt> <tt class="py-line"> <tt class="py-name">client_info</tt><tt class="py-op">[</tt><tt class="py-string">'client_id'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">client_info</tt><tt class="py-op">[</tt><tt class="py-string">'client_secret'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L936"></a><tt class="py-lineno">936</tt> <tt class="py-line"> <tt class="py-name">scope</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">constructor_kwargs</tt><tt class="py-op">)</tt> </tt>
+<a name="L937"></a><tt class="py-lineno">937</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">message</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L938"></a><tt class="py-lineno">938</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_message</tt> <tt class="py-op">=</tt> <tt class="py-name">message</tt> </tt>
+<a name="L939"></a><tt class="py-lineno">939</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L940"></a><tt class="py-lineno">940</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_message</tt> <tt class="py-op">=</tt> <tt class="py-string">'Please configure your application for OAuth 2.0.'</tt> </tt>
+</div></div><a name="L941"></a><tt class="py-lineno">941</tt> <tt class="py-line"> </tt>
+<a name="oauth2decorator_from_clientsecrets"></a><div id="oauth2decorator_from_clientsecrets-def"><a name="L942"></a><tt class="py-lineno">942</tt> <tt class="py-line"> </tt>
+<a name="L943"></a><tt class="py-lineno">943</tt> <tt class="py-line"><tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-256" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-256', 'positional', 'link-73');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="L944"></a><tt class="py-lineno">944</tt> <a class="py-toggle" href="#" id="oauth2decorator_from_clientsecrets-toggle" onclick="return toggle('oauth2decorator_from_clientsecrets');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.appengine-module.html#oauth2decorator_from_clientsecrets">oauth2decorator_from_clientsecrets</a><tt class="py-op">(</tt><tt class="py-param">filename</tt><tt class="py-op">,</tt> <tt class="py-param">scope</tt><tt class="py-op">,</tt> </tt>
+<a name="L945"></a><tt class="py-lineno">945</tt> <tt class="py-line"> <tt class="py-param">message</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">cache</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="oauth2decorator_from_clientsecrets-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="oauth2decorator_from_clientsecrets-expanded"><a name="L946"></a><tt class="py-lineno">946</tt> <tt class="py-line"> <tt class="py-docstring">"""Creates an OAuth2Decorator populated from a clientsecrets file.</tt> </tt>
+<a name="L947"></a><tt class="py-lineno">947</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L948"></a><tt class="py-lineno">948</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L949"></a><tt class="py-lineno">949</tt> <tt class="py-line"><tt class="py-docstring"> filename: string, File name of client secrets.</tt> </tt>
+<a name="L950"></a><tt class="py-lineno">950</tt> <tt class="py-line"><tt class="py-docstring"> scope: string or list of strings, scope(s) of the credentials being</tt> </tt>
+<a name="L951"></a><tt class="py-lineno">951</tt> <tt class="py-line"><tt class="py-docstring"> requested.</tt> </tt>
+<a name="L952"></a><tt class="py-lineno">952</tt> <tt class="py-line"><tt class="py-docstring"> message: string, A friendly string to display to the user if the</tt> </tt>
+<a name="L953"></a><tt class="py-lineno">953</tt> <tt class="py-line"><tt class="py-docstring"> clientsecrets file is missing or invalid. The message may contain HTML and</tt> </tt>
+<a name="L954"></a><tt class="py-lineno">954</tt> <tt class="py-line"><tt class="py-docstring"> will be presented on the web interface for any method that uses the</tt> </tt>
+<a name="L955"></a><tt class="py-lineno">955</tt> <tt class="py-line"><tt class="py-docstring"> decorator.</tt> </tt>
+<a name="L956"></a><tt class="py-lineno">956</tt> <tt class="py-line"><tt class="py-docstring"> cache: An optional cache service client that implements get() and set()</tt> </tt>
+<a name="L957"></a><tt class="py-lineno">957</tt> <tt class="py-line"><tt class="py-docstring"> methods. See clientsecrets.loadfile() for details.</tt> </tt>
+<a name="L958"></a><tt class="py-lineno">958</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L959"></a><tt class="py-lineno">959</tt> <tt class="py-line"><tt class="py-docstring"> Returns: An OAuth2Decorator</tt> </tt>
+<a name="L960"></a><tt class="py-lineno">960</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L961"></a><tt class="py-lineno">961</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L962"></a><tt class="py-lineno">962</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-257" class="py-name"><a title="oauth2client.appengine.OAuth2DecoratorFromClientSecrets" class="py-name" href="#" onclick="return doclink('link-257', 'OAuth2DecoratorFromClientSecrets', 'link-254');">OAuth2DecoratorFromClientSecrets</a></tt><tt class="py-op">(</tt><tt id="link-258" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
+oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-258', 'filename', 'link-247');">filename</a></tt><tt class="py-op">,</tt> <tt class="py-name">scope</tt><tt class="py-op">,</tt> </tt>
+<a name="L963"></a><tt class="py-lineno">963</tt> <tt class="py-line"> <tt class="py-name">message</tt><tt class="py-op">=</tt><tt class="py-name">message</tt><tt class="py-op">,</tt> <tt class="py-name">cache</tt><tt class="py-op">=</tt><tt class="py-name">cache</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L964"></a><tt class="py-lineno">964</tt> <tt class="py-line"> </tt><script type="text/javascript">
<!--
expandto(location.href);
// -->
@@ -1238,7 +1342,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:26 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:47 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.appengine.AppAssertionCredentials-class.html b/docs/epy/oauth2client.appengine.AppAssertionCredentials-class.html
index ecc73e4..28a704c 100644
--- a/docs/epy/oauth2client.appengine.AppAssertionCredentials-class.html
+++ b/docs/epy/oauth2client.appengine.AppAssertionCredentials-class.html
@@ -55,13 +55,26 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class AppAssertionCredentials</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.appengine-pysrc.html#AppAssertionCredentials">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_appasserti" name="class_hierarchy_for_appasserti">
-<area shape="rect" id="node1" href="oauth2client.appengine.AppAssertionCredentials-class.html" title="AppAssertionCredentials" alt="" coords="5,6,171,34"/>
-<area shape="rect" id="node2" href="oauth2client.client.AssertionCredentials-class.html" title="client.AssertionCredentials" alt="" coords="195,6,373,34"/>
-<area shape="rect" id="node3" href="oauth2client.client.Credentials-class.html" title="client.Credentials" alt="" coords="397,6,520,34"/>
-<area shape="rect" id="node4" href="oauth2client.client.OAuth2Credentials-class.html" title="client.OAuth2Credentials" alt="" coords="544,6,709,34"/>
+<center> <map id="uml_class_diagram_for_oauth2cl" name="uml_class_diagram_for_oauth2cl">
+<area shape="rect" id="node101" href="oauth2client.appengine.AppAssertionCredentials-class.html#__init__" title="Constructor for AppAssertionCredentials" alt="" coords="25,420,209,439"/>
+<area shape="rect" id="node101" href="oauth2client.appengine.AppAssertionCredentials-class.html#from_json" title="Instantiate a Credentials object from a JSON description of it." alt="" coords="25,439,209,457"/>
+<area shape="rect" id="node1" href="oauth2client.appengine.AppAssertionCredentials-class.html" title="Credentials object for App Engine Assertion Grants" alt="" coords="13,387,221,463"/>
+<area shape="rect" id="node2" href="oauth2client.client.AssertionCredentials-class.html" title="Abstract Credentials object used for OAuth 2.0 assertion grants." alt="" coords="25,323,207,367"/>
+<area shape="rect" id="node103" href="oauth2client.client.OAuth2Credentials-class.html#authorize" title="Authorize an httplib2.Http instance with these credentials." alt="" coords="33,129,200,148"/>
+<area shape="rect" id="node103" href="oauth2client.client.OAuth2Credentials-class.html#refresh" title="Forces a refresh of the access_token." alt="" coords="33,148,200,167"/>
+<area shape="rect" id="node103" href="oauth2client.client.OAuth2Credentials-class.html#revoke" title="Revokes a refresh_token and makes the credentials void." alt="" coords="33,167,200,185"/>
+<area shape="rect" id="node103" href="oauth2client.client.OAuth2Credentials-class.html#apply" title="Add the authorization to the headers." alt="" coords="33,185,200,204"/>
+<area shape="rect" id="node103" href="oauth2client.client.OAuth2Credentials-class.html#to_json" title="Creating a JSON representation of an instance of Credentials." alt="" coords="33,204,200,223"/>
+<area shape="rect" id="node103" href="oauth2client.client.OAuth2Credentials-class.html#access_token_expired" title="True if the credential is expired or invalid." alt="" coords="33,223,200,241"/>
+<area shape="rect" id="node103" href="oauth2client.client.OAuth2Credentials-class.html#set_store" title="Set the Storage for the credential." alt="" coords="33,241,200,260"/>
+<area shape="rect" id="node103" href="oauth2client.client.OAuth2Credentials-class.html#__getstate__" title="Trim the state down to something that can be pickled." alt="" coords="33,260,200,279"/>
+<area shape="rect" id="node103" href="oauth2client.client.OAuth2Credentials-class.html#__setstate__" title="Reconstitute the state of the object from being pickled." alt="" coords="33,279,200,297"/>
+<area shape="rect" id="node3" href="oauth2client.client.OAuth2Credentials-class.html" title="Credentials object for OAuth 2.0." alt="" coords="21,97,211,303"/>
+<area shape="rect" id="node104" href="oauth2client.client.Credentials-class.html#NON_SERIALIZED_MEMBERS" title="oauth2client.client.Credentials.NON_SERIALIZED_MEMBERS" alt="" coords="17,31,216,49"/>
+<area shape="rect" id="node104" href="oauth2client.client.Credentials-class.html#new_from_json" title="Utility class method to instantiate a Credentials subclass from a JSON representation produced by to_json()." alt="" coords="17,52,216,71"/>
+<area shape="rect" id="node4" href="oauth2client.client.Credentials-class.html" title="Base class for all Credentials objects." alt="" coords="5,6,227,77"/>
</map>
- <img src="class_hierarchy_for_appasserti.gif" alt='' usemap="#class_hierarchy_for_appasserti" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_oauth2cl.gif" alt='' usemap="#uml_class_diagram_for_oauth2cl" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -420,7 +433,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:24 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:44 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.appengine.CredentialsModel-class.html b/docs/epy/oauth2client.appengine.CredentialsModel-class.html
index 3171705..8ea09fc 100644
--- a/docs/epy/oauth2client.appengine.CredentialsModel-class.html
+++ b/docs/epy/oauth2client.appengine.CredentialsModel-class.html
@@ -55,11 +55,27 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class CredentialsModel</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.appengine-pysrc.html#CredentialsModel">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_credential" name="class_hierarchy_for_credential">
-<area shape="rect" id="node1" href="javascript:void(0);" title="google.appengine.ext.db.Model" alt="" coords="5,6,208,34"/>
-<area shape="rect" id="node2" href="oauth2client.appengine.CredentialsModel-class.html" title="CredentialsModel" alt="" coords="232,6,355,34"/>
+<center> <map id="uml_class_diagram_for_oauth2cl_2" name="uml_class_diagram_for_oauth2cl_2">
+<area shape="rect" id="node105" href="oauth2client.appengine.CredentialsModel-class.html#credentials" title="oauth2client.appengine.CredentialsModel.credentials" alt="" coords="224,383,327,401"/>
+<area shape="rect" id="node1" href="oauth2client.appengine.CredentialsModel-class.html" title="Storage for OAuth 2.0 Credentials" alt="" coords="212,358,337,415"/>
+<area shape="rect" id="node106" href="google.appengine.ext.db.PropertiedClass-class.html" title="Meta-class for initializing Model classes properties." alt="" coords="17,31,533,49"/>
+<area shape="rect" id="node106" href="javascript:void(0);" title="Allow subclasses to call __new__() with arguments." alt="" coords="17,52,533,71"/>
+<area shape="rect" id="node106" href="javascript:void(0);" title="Creates a new instance of this model." alt="" coords="17,71,533,89"/>
+<area shape="rect" id="node106" href="javascript:void(0);" title="Unique key for this entity." alt="" coords="17,89,533,108"/>
+<area shape="rect" id="node106" href="javascript:void(0);" title="Writes this model instance to the datastore." alt="" coords="17,108,533,127"/>
+<area shape="rect" id="node106" href="javascript:void(0);" title="Writes this model instance to the datastore." alt="" coords="17,127,533,145"/>
+<area shape="rect" id="node106" href="javascript:void(0);" title="Deletes this entity from the datastore." alt="" coords="17,145,533,164"/>
+<area shape="rect" id="node106" href="javascript:void(0);" title="Determine if entity is persisted in the datastore." alt="" coords="17,164,533,183"/>
+<area shape="rect" id="node106" href="javascript:void(0);" title="Determine if this model instance has a complete key." alt="" coords="17,183,533,201"/>
+<area shape="rect" id="node106" href="javascript:void(0);" title="Returns a list of all dynamic properties defined for instance." alt="" coords="17,201,533,220"/>
+<area shape="rect" id="node106" href="javascript:void(0);" title="Alias for dyanmic_properties." alt="" coords="17,220,533,239"/>
+<area shape="rect" id="node106" href="javascript:void(0);" title="Get the parent of the model instance." alt="" coords="17,239,533,257"/>
+<area shape="rect" id="node106" href="javascript:void(0);" title="Get the parent's key." alt="" coords="17,257,533,276"/>
+<area shape="rect" id="node106" href="javascript:void(0);" title="Generate an XML representation of this model instance." alt="" coords="17,276,533,295"/>
+<area shape="rect" id="node106" href="javascript:void(0);" title="Soon to be removed alias for properties." alt="" coords="17,313,533,332"/>
+<area shape="rect" id="node2" href="javascript:void(0);" title="Model is the superclass of all object entities in the datastore." alt="" coords="5,6,544,338"/>
</map>
- <img src="class_hierarchy_for_credential.gif" alt='' usemap="#class_hierarchy_for_credential" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_oauth2cl_2.gif" alt='' usemap="#uml_class_diagram_for_oauth2cl_2" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -261,7 +277,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:24 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:44 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.appengine.CredentialsNDBModel-class.html b/docs/epy/oauth2client.appengine.CredentialsNDBModel-class.html
index b7aa5d3..02c4e90 100644
--- a/docs/epy/oauth2client.appengine.CredentialsNDBModel-class.html
+++ b/docs/epy/oauth2client.appengine.CredentialsNDBModel-class.html
@@ -55,11 +55,12 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class CredentialsNDBModel</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.appengine-pysrc.html#CredentialsNDBModel">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_credential_2" name="class_hierarchy_for_credential_2">
-<area shape="rect" id="node1" href="javascript:void(0);" title="??-104" alt="" coords="5,6,67,34"/>
-<area shape="rect" id="node2" href="oauth2client.appengine.CredentialsNDBModel-class.html" title="CredentialsNDBModel" alt="" coords="91,6,243,34"/>
+<center> <map id="uml_class_diagram_for_oauth2cl_3" name="uml_class_diagram_for_oauth2cl_3">
+<area shape="rect" id="node107" href="oauth2client.appengine.CredentialsNDBModel-class.html#credentials" title="oauth2client.appengine.CredentialsNDBModel.credentials" alt="" coords="17,95,149,113"/>
+<area shape="rect" id="node1" href="oauth2client.appengine.CredentialsNDBModel-class.html" title="NDB Model for storage of OAuth 2.0 Credentials" alt="" coords="5,70,160,127"/>
+<area shape="rect" id="node2" href="javascript:void(0);" title="??-104" alt="" coords="51,6,115,50"/>
</map>
- <img src="class_hierarchy_for_credential_2.gif" alt='' usemap="#class_hierarchy_for_credential_2" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_oauth2cl_3.gif" alt='' usemap="#uml_class_diagram_for_oauth2cl_3" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -159,7 +160,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:24 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:44 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.appengine.CredentialsNDBProperty-class.html b/docs/epy/oauth2client.appengine.CredentialsNDBProperty-class.html
index 4a5be5a..af793cb 100644
--- a/docs/epy/oauth2client.appengine.CredentialsNDBProperty-class.html
+++ b/docs/epy/oauth2client.appengine.CredentialsNDBProperty-class.html
@@ -55,11 +55,11 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class CredentialsNDBProperty</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.appengine-pysrc.html#CredentialsNDBProperty">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_credential_3" name="class_hierarchy_for_credential_3">
-<area shape="rect" id="node1" href="javascript:void(0);" title="??-108" alt="" coords="5,6,67,34"/>
-<area shape="rect" id="node2" href="oauth2client.appengine.CredentialsNDBProperty-class.html" title="CredentialsNDBProperty" alt="" coords="91,6,256,34"/>
+<center> <map id="uml_class_diagram_for_oauth2cl_4" name="uml_class_diagram_for_oauth2cl_4">
+<area shape="rect" id="node1" href="oauth2client.appengine.CredentialsNDBProperty-class.html" title="App Engine NDB datastore Property for Credentials." alt="" coords="5,70,176,114"/>
+<area shape="rect" id="node2" href="javascript:void(0);" title="??-108" alt="" coords="57,6,121,50"/>
</map>
- <img src="class_hierarchy_for_credential_3.gif" alt='' usemap="#class_hierarchy_for_credential_3" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_oauth2cl_4.gif" alt='' usemap="#uml_class_diagram_for_oauth2cl_4" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -277,7 +277,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:24 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:44 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.appengine.CredentialsProperty-class.html b/docs/epy/oauth2client.appengine.CredentialsProperty-class.html
index 0194486..bff5347 100644
--- a/docs/epy/oauth2client.appengine.CredentialsProperty-class.html
+++ b/docs/epy/oauth2client.appengine.CredentialsProperty-class.html
@@ -55,11 +55,25 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class CredentialsProperty</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.appengine-pysrc.html#CredentialsProperty">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_credential_4" name="class_hierarchy_for_credential_4">
-<area shape="rect" id="node1" href="javascript:void(0);" title="google.appengine.ext.db.Property" alt="" coords="5,6,221,34"/>
-<area shape="rect" id="node2" href="oauth2client.appengine.CredentialsProperty-class.html" title="CredentialsProperty" alt="" coords="245,6,381,34"/>
+<center> <map id="uml_class_diagram_for_oauth2cl_5" name="uml_class_diagram_for_oauth2cl_5">
+<area shape="rect" id="node111" href="oauth2client.appengine.CredentialsProperty-class.html#data_type" title="str(object) -> string" alt="" coords="255,271,529,289"/>
+<area shape="rect" id="node111" href="oauth2client.appengine.CredentialsProperty-class.html#get_value_for_datastore" title="Datastore representation of this property." alt="" coords="255,292,529,311"/>
+<area shape="rect" id="node111" href="oauth2client.appengine.CredentialsProperty-class.html#make_value_from_datastore" title="Native representation of this property." alt="" coords="255,311,529,329"/>
+<area shape="rect" id="node111" href="oauth2client.appengine.CredentialsProperty-class.html#validate" title="Assert that provided value is compatible with this property." alt="" coords="255,329,529,348"/>
+<area shape="rect" id="node1" href="oauth2client.appengine.CredentialsProperty-class.html" title="App Engine datastore Property for Credentials." alt="" coords="243,246,541,354"/>
+<area shape="rect" id="node112" href="javascript:void(0);" title="google.appengine.ext.db.Property.creation_counter" alt="" coords="17,31,765,49"/>
+<area shape="rect" id="node112" href="javascript:void(0);" title="Initializes this Property with the given options." alt="" coords="17,52,765,71"/>
+<area shape="rect" id="node112" href="javascript:void(0);" title="Configure property, connecting it to its model." alt="" coords="17,71,765,89"/>
+<area shape="rect" id="node112" href="javascript:void(0);" title="Returns the value for this property on the given model instance." alt="" coords="17,89,765,108"/>
+<area shape="rect" id="node112" href="javascript:void(0);" title="Sets the value for this property on the given model instance." alt="" coords="17,108,765,127"/>
+<area shape="rect" id="node112" href="javascript:void(0);" title="Default value for unassigned values." alt="" coords="17,127,765,145"/>
+<area shape="rect" id="node112" href="javascript:void(0);" title="Determine if value is empty in the context of this property." alt="" coords="17,145,765,164"/>
+<area shape="rect" id="node112" href="javascript:void(0);" title="Determine new value for auto-updated property." alt="" coords="17,164,765,183"/>
+<area shape="rect" id="node112" href="javascript:void(0);" title="google.appengine.ext.db.Property.make_value_from_datastore_index_value" alt="" coords="17,183,765,201"/>
+<area shape="rect" id="node112" href="javascript:void(0);" title="Deprecated backwards-compatible accessor method for self.data_type." alt="" coords="17,201,765,220"/>
+<area shape="rect" id="node2" href="javascript:void(0);" title="A Property is an attribute of a Model." alt="" coords="5,6,776,226"/>
</map>
- <img src="class_hierarchy_for_credential_4.gif" alt='' usemap="#class_hierarchy_for_credential_4" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_oauth2cl_5.gif" alt='' usemap="#uml_class_diagram_for_oauth2cl_5" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -401,7 +415,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:24 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:44 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.appengine.FlowNDBProperty-class.html b/docs/epy/oauth2client.appengine.FlowNDBProperty-class.html
index 65eb09a..1b3a599 100644
--- a/docs/epy/oauth2client.appengine.FlowNDBProperty-class.html
+++ b/docs/epy/oauth2client.appengine.FlowNDBProperty-class.html
@@ -55,11 +55,11 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class FlowNDBProperty</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.appengine-pysrc.html#FlowNDBProperty">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_flowndbpro" name="class_hierarchy_for_flowndbpro">
-<area shape="rect" id="node1" href="javascript:void(0);" title="??-105" alt="" coords="5,6,67,34"/>
-<area shape="rect" id="node2" href="oauth2client.appengine.FlowNDBProperty-class.html" title="FlowNDBProperty" alt="" coords="91,6,219,34"/>
+<center> <map id="uml_class_diagram_for_oauth2cl_6" name="uml_class_diagram_for_oauth2cl_6">
+<area shape="rect" id="node1" href="oauth2client.appengine.FlowNDBProperty-class.html" title="App Engine NDB datastore Property for Flow." alt="" coords="5,70,136,114"/>
+<area shape="rect" id="node2" href="javascript:void(0);" title="??-105" alt="" coords="39,6,103,50"/>
</map>
- <img src="class_hierarchy_for_flowndbpro.gif" alt='' usemap="#class_hierarchy_for_flowndbpro" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_oauth2cl_6.gif" alt='' usemap="#uml_class_diagram_for_oauth2cl_6" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -182,7 +182,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:24 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:44 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.appengine.FlowProperty-class.html b/docs/epy/oauth2client.appengine.FlowProperty-class.html
index fcda59f..c05a8b4 100644
--- a/docs/epy/oauth2client.appengine.FlowProperty-class.html
+++ b/docs/epy/oauth2client.appengine.FlowProperty-class.html
@@ -55,11 +55,25 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class FlowProperty</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.appengine-pysrc.html#FlowProperty">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_flowproper" name="class_hierarchy_for_flowproper">
-<area shape="rect" id="node1" href="javascript:void(0);" title="google.appengine.ext.db.Property" alt="" coords="5,6,221,34"/>
-<area shape="rect" id="node2" href="oauth2client.appengine.FlowProperty-class.html" title="FlowProperty" alt="" coords="245,6,344,34"/>
+<center> <map id="uml_class_diagram_for_oauth2cl_7" name="uml_class_diagram_for_oauth2cl_7">
+<area shape="rect" id="node115" href="oauth2client.appengine.FlowProperty-class.html#data_type" title="str(object) -> string" alt="" coords="255,252,529,271"/>
+<area shape="rect" id="node115" href="oauth2client.appengine.FlowProperty-class.html#get_value_for_datastore" title="Datastore representation of this property." alt="" coords="255,273,529,292"/>
+<area shape="rect" id="node115" href="oauth2client.appengine.FlowProperty-class.html#make_value_from_datastore" title="Native representation of this property." alt="" coords="255,292,529,311"/>
+<area shape="rect" id="node115" href="oauth2client.appengine.FlowProperty-class.html#validate" title="Assert that provided value is compatible with this property." alt="" coords="255,311,529,329"/>
+<area shape="rect" id="node115" href="oauth2client.appengine.FlowProperty-class.html#empty" title="Determine if value is empty in the context of this property." alt="" coords="255,329,529,348"/>
+<area shape="rect" id="node1" href="oauth2client.appengine.FlowProperty-class.html" title="App Engine datastore Property for Flow." alt="" coords="243,227,541,354"/>
+<area shape="rect" id="node116" href="javascript:void(0);" title="google.appengine.ext.db.Property.creation_counter" alt="" coords="17,31,765,49"/>
+<area shape="rect" id="node116" href="javascript:void(0);" title="Initializes this Property with the given options." alt="" coords="17,52,765,71"/>
+<area shape="rect" id="node116" href="javascript:void(0);" title="Configure property, connecting it to its model." alt="" coords="17,71,765,89"/>
+<area shape="rect" id="node116" href="javascript:void(0);" title="Returns the value for this property on the given model instance." alt="" coords="17,89,765,108"/>
+<area shape="rect" id="node116" href="javascript:void(0);" title="Sets the value for this property on the given model instance." alt="" coords="17,108,765,127"/>
+<area shape="rect" id="node116" href="javascript:void(0);" title="Default value for unassigned values." alt="" coords="17,127,765,145"/>
+<area shape="rect" id="node116" href="javascript:void(0);" title="Determine new value for auto-updated property." alt="" coords="17,145,765,164"/>
+<area shape="rect" id="node116" href="javascript:void(0);" title="google.appengine.ext.db.Property.make_value_from_datastore_index_value" alt="" coords="17,164,765,183"/>
+<area shape="rect" id="node116" href="javascript:void(0);" title="Deprecated backwards-compatible accessor method for self.data_type." alt="" coords="17,183,765,201"/>
+<area shape="rect" id="node2" href="javascript:void(0);" title="A Property is an attribute of a Model." alt="" coords="5,6,776,207"/>
</map>
- <img src="class_hierarchy_for_flowproper.gif" alt='' usemap="#class_hierarchy_for_flowproper" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_oauth2cl_7.gif" alt='' usemap="#uml_class_diagram_for_oauth2cl_7" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -456,7 +470,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:24 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:44 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.appengine.InvalidClientSecretsError-class.html b/docs/epy/oauth2client.appengine.InvalidClientSecretsError-class.html
index 7c83acd..e25fe6b 100644
--- a/docs/epy/oauth2client.appengine.InvalidClientSecretsError-class.html
+++ b/docs/epy/oauth2client.appengine.InvalidClientSecretsError-class.html
@@ -55,12 +55,26 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class InvalidClientSecretsError</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.appengine-pysrc.html#InvalidClientSecretsError">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_invalidcli" name="class_hierarchy_for_invalidcli">
-<area shape="rect" id="node1" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
-<area shape="rect" id="node2" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
-<area shape="rect" id="node3" href="oauth2client.appengine.InvalidClientSecretsError-class.html" title="InvalidClientSecretsError" alt="" coords="11,123,176,151"/>
+<center> <map id="uml_class_diagram_for_oauth2cl_8" name="uml_class_diagram_for_oauth2cl_8">
+<area shape="rect" id="node1" href="oauth2client.appengine.InvalidClientSecretsError-class.html" title="The client_secrets.json file is malformed or missing required fields." alt="" coords="11,379,181,423"/>
+<area shape="rect" id="node118" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="32,316,159,335"/>
+<area shape="rect" id="node118" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="32,335,159,353"/>
+<area shape="rect" id="node2" href="javascript:void(0);" title="Common base class for all non-exit exceptions." alt="" coords="20,283,169,359"/>
+<area shape="rect" id="node119" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="17,31,175,49"/>
+<area shape="rect" id="node119" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="17,49,175,68"/>
+<area shape="rect" id="node119" href="javascript:void(0);" title="x.__delattr__('name') <==> del x.name" alt="" coords="17,71,175,89"/>
+<area shape="rect" id="node119" href="javascript:void(0);" title="x.__getattribute__('name') <==> x.name" alt="" coords="17,89,175,108"/>
+<area shape="rect" id="node119" href="javascript:void(0);" title="x[y]" alt="" coords="17,108,175,127"/>
+<area shape="rect" id="node119" href="javascript:void(0);" title="x[i:j]" alt="" coords="17,127,175,145"/>
+<area shape="rect" id="node119" href="javascript:void(0);" title="helper for pickle" alt="" coords="17,145,175,164"/>
+<area shape="rect" id="node119" href="javascript:void(0);" title="repr(x)" alt="" coords="17,164,175,183"/>
+<area shape="rect" id="node119" href="javascript:void(0);" title="x.__setattr__('name', value) <==> x.name = value" alt="" coords="17,183,175,201"/>
+<area shape="rect" id="node119" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="17,201,175,220"/>
+<area shape="rect" id="node119" href="javascript:void(0);" title="str(x)" alt="" coords="17,220,175,239"/>
+<area shape="rect" id="node119" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="17,239,175,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,6,187,263"/>
</map>
- <img src="class_hierarchy_for_invalidcli.gif" alt='' usemap="#class_hierarchy_for_invalidcli" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_oauth2cl_8.gif" alt='' usemap="#uml_class_diagram_for_oauth2cl_8" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -166,7 +180,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:24 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:44 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.appengine.InvalidXsrfTokenError-class.html b/docs/epy/oauth2client.appengine.InvalidXsrfTokenError-class.html
index 782a342..41b0b70 100644
--- a/docs/epy/oauth2client.appengine.InvalidXsrfTokenError-class.html
+++ b/docs/epy/oauth2client.appengine.InvalidXsrfTokenError-class.html
@@ -55,12 +55,26 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class InvalidXsrfTokenError</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.appengine-pysrc.html#InvalidXsrfTokenError">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_invalidxsr" name="class_hierarchy_for_invalidxsr">
-<area shape="rect" id="node1" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
-<area shape="rect" id="node2" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
-<area shape="rect" id="node3" href="oauth2client.appengine.InvalidXsrfTokenError-class.html" title="InvalidXsrfTokenError" alt="" coords="20,123,167,151"/>
+<center> <map id="uml_class_diagram_for_oauth2cl_9" name="uml_class_diagram_for_oauth2cl_9">
+<area shape="rect" id="node1" href="oauth2client.appengine.InvalidXsrfTokenError-class.html" title="The XSRF token is invalid or expired." alt="" coords="20,379,172,423"/>
+<area shape="rect" id="node121" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="32,316,159,335"/>
+<area shape="rect" id="node121" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="32,335,159,353"/>
+<area shape="rect" id="node2" href="javascript:void(0);" title="Common base class for all non-exit exceptions." alt="" coords="20,283,169,359"/>
+<area shape="rect" id="node122" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="17,31,175,49"/>
+<area shape="rect" id="node122" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="17,49,175,68"/>
+<area shape="rect" id="node122" href="javascript:void(0);" title="x.__delattr__('name') <==> del x.name" alt="" coords="17,71,175,89"/>
+<area shape="rect" id="node122" href="javascript:void(0);" title="x.__getattribute__('name') <==> x.name" alt="" coords="17,89,175,108"/>
+<area shape="rect" id="node122" href="javascript:void(0);" title="x[y]" alt="" coords="17,108,175,127"/>
+<area shape="rect" id="node122" href="javascript:void(0);" title="x[i:j]" alt="" coords="17,127,175,145"/>
+<area shape="rect" id="node122" href="javascript:void(0);" title="helper for pickle" alt="" coords="17,145,175,164"/>
+<area shape="rect" id="node122" href="javascript:void(0);" title="repr(x)" alt="" coords="17,164,175,183"/>
+<area shape="rect" id="node122" href="javascript:void(0);" title="x.__setattr__('name', value) <==> x.name = value" alt="" coords="17,183,175,201"/>
+<area shape="rect" id="node122" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="17,201,175,220"/>
+<area shape="rect" id="node122" href="javascript:void(0);" title="str(x)" alt="" coords="17,220,175,239"/>
+<area shape="rect" id="node122" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="17,239,175,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,6,187,263"/>
</map>
- <img src="class_hierarchy_for_invalidxsr.gif" alt='' usemap="#class_hierarchy_for_invalidxsr" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_oauth2cl_9.gif" alt='' usemap="#uml_class_diagram_for_oauth2cl_9" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -166,7 +180,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:24 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:44 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.appengine.OAuth2Decorator-class.html b/docs/epy/oauth2client.appengine.OAuth2Decorator-class.html
index 009e159..32073b9 100644
--- a/docs/epy/oauth2client.appengine.OAuth2Decorator-class.html
+++ b/docs/epy/oauth2client.appengine.OAuth2Decorator-class.html
@@ -55,10 +55,25 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class OAuth2Decorator</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.appengine-pysrc.html#OAuth2Decorator">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_oauth2deco" name="class_hierarchy_for_oauth2deco">
-<area shape="rect" id="node1" href="oauth2client.appengine.OAuth2Decorator-class.html" title="OAuth2Decorator" alt="" coords="5,6,128,34"/>
+<center> <map id="uml_class_diagram_for_oauth2cl_10" name="uml_class_diagram_for_oauth2cl_10">
+<area shape="rect" id="node123" href="oauth2client.appengine.OAuth2Decorator-class.html#credentials" title="oauth2client.appengine.OAuth2Decorator.credentials" alt="" coords="17,31,2249,49"/>
+<area shape="rect" id="node123" href="oauth2client.appengine.OAuth2Decorator-class.html#flow" title="oauth2client.appengine.OAuth2Decorator.flow" alt="" coords="17,49,2249,68"/>
+<area shape="rect" id="node123" href="oauth2client.appengine.OAuth2Decorator-class.html#set_credentials" title="oauth2client.appengine.OAuth2Decorator.set_credentials" alt="" coords="17,71,2249,89"/>
+<area shape="rect" id="node123" href="oauth2client.appengine.OAuth2Decorator-class.html#get_credentials" title="A thread local Credentials object." alt="" coords="17,89,2249,108"/>
+<area shape="rect" id="node123" href="oauth2client.appengine.OAuth2Decorator-class.html#set_flow" title="oauth2client.appengine.OAuth2Decorator.set_flow" alt="" coords="17,108,2249,127"/>
+<area shape="rect" id="node123" href="oauth2client.appengine.OAuth2Decorator-class.html#get_flow" title="A thread local Flow object." alt="" coords="17,127,2249,145"/>
+<area shape="rect" id="node123" href="oauth2client.appengine.OAuth2Decorator-class.html#__init__" title="Constructor for OAuth2Decorator" alt="" coords="17,145,2249,164"/>
+<area shape="rect" id="node123" href="oauth2client.appengine.OAuth2Decorator-class.html#oauth_required" title="Decorator that starts the OAuth 2.0 dance." alt="" coords="17,164,2249,183"/>
+<area shape="rect" id="node123" href="oauth2client.appengine.OAuth2Decorator-class.html#oauth_aware" title="Decorator that sets up for OAuth 2.0 dance, but doesn't do it." alt="" coords="17,183,2249,201"/>
+<area shape="rect" id="node123" href="oauth2client.appengine.OAuth2Decorator-class.html#has_credentials" title="True if for the logged in user there are valid access Credentials." alt="" coords="17,201,2249,220"/>
+<area shape="rect" id="node123" href="oauth2client.appengine.OAuth2Decorator-class.html#authorize_url" title="Returns the URL to start the OAuth dance." alt="" coords="17,220,2249,239"/>
+<area shape="rect" id="node123" href="oauth2client.appengine.OAuth2Decorator-class.html#http" title="Returns an authorized http instance." alt="" coords="17,239,2249,257"/>
+<area shape="rect" id="node123" href="oauth2client.appengine.OAuth2Decorator-class.html#callback_path" title="The absolute path where the callback will occur." alt="" coords="17,257,2249,276"/>
+<area shape="rect" id="node123" href="oauth2client.appengine.OAuth2Decorator-class.html#callback_handler" title="RequestHandler for the OAuth 2.0 redirect callback." alt="" coords="17,276,2249,295"/>
+<area shape="rect" id="node123" href="oauth2client.appengine.OAuth2Decorator-class.html#callback_application" title="WSGI application for handling the OAuth 2.0 redirect callback." alt="" coords="17,295,2249,313"/>
+<area shape="rect" id="node1" href="oauth2client.appengine.OAuth2Decorator-class.html" title="Utility for making OAuth 2.0 easier." alt="" coords="5,6,2261,319"/>
</map>
- <img src="class_hierarchy_for_oauth2deco.gif" alt='' usemap="#class_hierarchy_for_oauth2deco" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_oauth2cl_10.gif" alt='' usemap="#uml_class_diagram_for_oauth2cl_10" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -109,6 +124,74 @@
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
+ <td><span class="summary-sig"><a name="set_credentials"></a><span class="summary-sig-name">set_credentials</span>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">credentials</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="oauth2client.appengine-pysrc.html#OAuth2Decorator.set_credentials">source code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="oauth2client.appengine.OAuth2Decorator-class.html#get_credentials" class="summary-sig-name">get_credentials</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ A thread local Credentials object.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="oauth2client.appengine-pysrc.html#OAuth2Decorator.get_credentials">source code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a name="set_flow"></a><span class="summary-sig-name">set_flow</span>(<span class="summary-sig-arg">self</span>,
+ <span class="summary-sig-arg">flow</span>)</span></td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="oauth2client.appengine-pysrc.html#OAuth2Decorator.set_flow">source code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="oauth2client.appengine.OAuth2Decorator-class.html#get_flow" class="summary-sig-name">get_flow</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ A thread local Flow object.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="oauth2client.appengine-pysrc.html#OAuth2Decorator.get_flow">source code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
<td><span class="summary-sig"><a href="oauth2client.appengine.OAuth2Decorator-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
<span class="summary-sig-arg">client_id</span>,
<span class="summary-sig-arg">client_secret</span>,
@@ -120,6 +203,9 @@
<span class="summary-sig-arg">message</span>=<span class="summary-sig-default">None</span>,
<span class="summary-sig-arg">callback_path</span>=<span class="summary-sig-default">'/oauth2callback'</span>,
<span class="summary-sig-arg">token_response_param</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">_storage_class</span>=<span class="summary-sig-default">StorageByKeyName</span>,
+ <span class="summary-sig-arg">_credentials_class</span>=<span class="summary-sig-default">CredentialsModel</span>,
+ <span class="summary-sig-arg">_credentials_property_name</span>=<span class="summary-sig-default">'credentials'</span>,
<span class="summary-sig-arg">**kwargs</span>)</span><br />
Constructor for OAuth2Decorator</td>
<td align="right" valign="top">
@@ -323,6 +409,38 @@
</td>
</tr>
</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Class Variables</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-ClassVariables"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <a name="credentials"></a><span class="summary-name">credentials</span> = <code title="property(get_credentials, set_credentials)">property(get_credentials, set_credentials)</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <a name="flow"></a><span class="summary-name">flow</span> = <code title="property(get_flow, set_flow)">property(get_flow, set_flow)</code>
+ </td>
+ </tr>
+</table>
<!-- ==================== PROPERTIES ==================== -->
<a name="section-Properties"></a>
<table class="summary" border="1" cellpadding="3"
@@ -366,6 +484,60 @@
</td>
</tr>
</table>
+<a name="get_credentials"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">get_credentials</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="oauth2client.appengine-pysrc.html#OAuth2Decorator.get_credentials">source code</a></span>
+ </td>
+ </tr></table>
+
+ <pre class="literalblock">
+A thread local Credentials object.
+
+Returns:
+ A client.Credentials object, or None if credentials hasn't been set in
+ this thread yet, which may happen when calling has_credentials inside
+ oauth_aware.
+
+</pre>
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
+<a name="get_flow"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">get_flow</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="oauth2client.appengine-pysrc.html#OAuth2Decorator.get_flow">source code</a></span>
+ </td>
+ </tr></table>
+
+ <pre class="literalblock">
+A thread local Flow object.
+
+Returns:
+ A credentials.Flow object, or None if the flow hasn't been set in this
+ thread yet, which happens in _create_flow() since Flows are created
+ lazily.
+
+</pre>
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
<a name="__init__"></a>
<div>
<table class="details" border="1" cellpadding="3"
@@ -384,6 +556,9 @@
<span class="sig-arg">message</span>=<span class="sig-default">None</span>,
<span class="sig-arg">callback_path</span>=<span class="sig-default">'/oauth2callback'</span>,
<span class="sig-arg">token_response_param</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">_storage_class</span>=<span class="sig-default">StorageByKeyName</span>,
+ <span class="sig-arg">_credentials_class</span>=<span class="sig-default">CredentialsModel</span>,
+ <span class="sig-arg">_credentials_property_name</span>=<span class="sig-default">'credentials'</span>,
<span class="sig-arg">**kwargs</span>)</span>
<br /><em class="fname">(Constructor)</em>
</h3>
@@ -417,6 +592,16 @@
to the access token request will be encoded and included in this query
parameter in the callback URI. This is useful with providers (e.g.
wordpress.com) that include extra fields that the client may want.
+ _storage_class: "Protected" keyword argument not typically provided to
+ this constructor. A storage class to aid in storing a Credentials object
+ for a user in the datastore. Defaults to StorageByKeyName.
+ _credentials_class: "Protected" keyword argument not typically provided to
+ this constructor. A db or ndb Model class to hold credentials. Defaults
+ to CredentialsModel.
+ _credentials_property_name: "Protected" keyword argument not typically
+ provided to this constructor. A string indicating the name of the field
+ on the _credentials_class where a Credentials object will be stored.
+ Defaults to 'credentials'.
**kwargs: dict, Keyword arguments are be passed along as kwargs to the
OAuth2WebServerFlow constructor.
@@ -720,7 +905,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:24 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:45 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html b/docs/epy/oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html
index b1695d2..aac7ddc 100644
--- a/docs/epy/oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html
+++ b/docs/epy/oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html
@@ -55,11 +55,26 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class OAuth2DecoratorFromClientSecrets</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.appengine-pysrc.html#OAuth2DecoratorFromClientSecrets">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_oauth2deco_2" name="class_hierarchy_for_oauth2deco_2">
-<area shape="rect" id="node1" href="oauth2client.appengine.OAuth2Decorator-class.html" title="OAuth2Decorator" alt="" coords="5,6,128,34"/>
-<area shape="rect" id="node2" href="oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html" title="OAuth2DecoratorFromClientSecrets" alt="" coords="152,6,384,34"/>
+<center> <map id="uml_class_diagram_for_oauth2cl_11" name="uml_class_diagram_for_oauth2cl_11">
+<area shape="rect" id="node124" href="oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html#__init__" title="Constructor" alt="" coords="17,353,381,372"/>
+<area shape="rect" id="node1" href="oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html" title="An OAuth2Decorator that builds from a clientsecrets file." alt="" coords="5,321,392,378"/>
+<area shape="rect" id="node125" href="oauth2client.appengine.OAuth2Decorator-class.html#credentials" title="oauth2client.appengine.OAuth2Decorator.credentials" alt="" coords="101,31,297,49"/>
+<area shape="rect" id="node125" href="oauth2client.appengine.OAuth2Decorator-class.html#flow" title="oauth2client.appengine.OAuth2Decorator.flow" alt="" coords="101,49,297,68"/>
+<area shape="rect" id="node125" href="oauth2client.appengine.OAuth2Decorator-class.html#set_credentials" title="oauth2client.appengine.OAuth2Decorator.set_credentials" alt="" coords="101,71,297,89"/>
+<area shape="rect" id="node125" href="oauth2client.appengine.OAuth2Decorator-class.html#get_credentials" title="A thread local Credentials object." alt="" coords="101,89,297,108"/>
+<area shape="rect" id="node125" href="oauth2client.appengine.OAuth2Decorator-class.html#set_flow" title="oauth2client.appengine.OAuth2Decorator.set_flow" alt="" coords="101,108,297,127"/>
+<area shape="rect" id="node125" href="oauth2client.appengine.OAuth2Decorator-class.html#get_flow" title="A thread local Flow object." alt="" coords="101,127,297,145"/>
+<area shape="rect" id="node125" href="oauth2client.appengine.OAuth2Decorator-class.html#oauth_required" title="Decorator that starts the OAuth 2.0 dance." alt="" coords="101,145,297,164"/>
+<area shape="rect" id="node125" href="oauth2client.appengine.OAuth2Decorator-class.html#oauth_aware" title="Decorator that sets up for OAuth 2.0 dance, but doesn't do it." alt="" coords="101,164,297,183"/>
+<area shape="rect" id="node125" href="oauth2client.appengine.OAuth2Decorator-class.html#has_credentials" title="True if for the logged in user there are valid access Credentials." alt="" coords="101,183,297,201"/>
+<area shape="rect" id="node125" href="oauth2client.appengine.OAuth2Decorator-class.html#authorize_url" title="Returns the URL to start the OAuth dance." alt="" coords="101,201,297,220"/>
+<area shape="rect" id="node125" href="oauth2client.appengine.OAuth2Decorator-class.html#http" title="Returns an authorized http instance." alt="" coords="101,220,297,239"/>
+<area shape="rect" id="node125" href="oauth2client.appengine.OAuth2Decorator-class.html#callback_path" title="The absolute path where the callback will occur." alt="" coords="101,239,297,257"/>
+<area shape="rect" id="node125" href="oauth2client.appengine.OAuth2Decorator-class.html#callback_handler" title="RequestHandler for the OAuth 2.0 redirect callback." alt="" coords="101,257,297,276"/>
+<area shape="rect" id="node125" href="oauth2client.appengine.OAuth2Decorator-class.html#callback_application" title="WSGI application for handling the OAuth 2.0 redirect callback." alt="" coords="101,276,297,295"/>
+<area shape="rect" id="node2" href="oauth2client.appengine.OAuth2Decorator-class.html" title="Utility for making OAuth 2.0 easier." alt="" coords="89,6,308,301"/>
</map>
- <img src="class_hierarchy_for_oauth2deco_2.gif" alt='' usemap="#class_hierarchy_for_oauth2deco_2" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_oauth2cl_11.gif" alt='' usemap="#uml_class_diagram_for_oauth2cl_11" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -131,10 +146,14 @@
<code><a href="oauth2client.appengine.OAuth2Decorator-class.html#callback_application">callback_application</a></code>,
<code><a href="oauth2client.appengine.OAuth2Decorator-class.html#callback_handler">callback_handler</a></code>,
<code><a href="oauth2client.appengine.OAuth2Decorator-class.html#callback_path">callback_path</a></code>,
+ <code><a href="oauth2client.appengine.OAuth2Decorator-class.html#get_credentials">get_credentials</a></code>,
+ <code><a href="oauth2client.appengine.OAuth2Decorator-class.html#get_flow">get_flow</a></code>,
<code><a href="oauth2client.appengine.OAuth2Decorator-class.html#has_credentials">has_credentials</a></code>,
<code><a href="oauth2client.appengine.OAuth2Decorator-class.html#http">http</a></code>,
<code><a href="oauth2client.appengine.OAuth2Decorator-class.html#oauth_aware">oauth_aware</a></code>,
- <code><a href="oauth2client.appengine.OAuth2Decorator-class.html#oauth_required">oauth_required</a></code>
+ <code><a href="oauth2client.appengine.OAuth2Decorator-class.html#oauth_required">oauth_required</a></code>,
+ <code><a href="oauth2client.appengine.OAuth2Decorator-class.html#set_credentials">set_credentials</a></code>,
+ <code><a href="oauth2client.appengine.OAuth2Decorator-class.html#set_flow">set_flow</a></code>
</p>
<div class="private"> <p class="indent-wrapped-lines"><b>Inherited from <code><a href="oauth2client.appengine.OAuth2Decorator-class.html">OAuth2Decorator</a></code></b> (private):
<code><a href="oauth2client.appengine.OAuth2Decorator-class.html#_create_flow" onclick="show_private();">_create_flow</a></code>,
@@ -157,6 +176,32 @@
</td>
</tr>
</table>
+<!-- ==================== CLASS VARIABLES ==================== -->
+<a name="section-ClassVariables"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Class Variables</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-ClassVariables"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+ <tr>
+ <td colspan="2" class="summary">
+ <p class="indent-wrapped-lines"><b>Inherited from <code><a href="oauth2client.appengine.OAuth2Decorator-class.html">OAuth2Decorator</a></code></b>:
+ <code><a href="oauth2client.appengine.OAuth2Decorator-class.html#credentials">credentials</a></code>,
+ <code><a href="oauth2client.appengine.OAuth2Decorator-class.html#flow">flow</a></code>
+ </p>
+ </td>
+ </tr>
+</table>
<!-- ==================== PROPERTIES ==================== -->
<a name="section-Properties"></a>
<table class="summary" border="1" cellpadding="3"
@@ -269,7 +314,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:24 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:45 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.appengine.SiteXsrfSecretKey-class.html b/docs/epy/oauth2client.appengine.SiteXsrfSecretKey-class.html
index 9591a26..5e10a0f 100644
--- a/docs/epy/oauth2client.appengine.SiteXsrfSecretKey-class.html
+++ b/docs/epy/oauth2client.appengine.SiteXsrfSecretKey-class.html
@@ -55,11 +55,27 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class SiteXsrfSecretKey</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.appengine-pysrc.html#SiteXsrfSecretKey">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_sitexsrfse" name="class_hierarchy_for_sitexsrfse">
-<area shape="rect" id="node1" href="javascript:void(0);" title="google.appengine.ext.db.Model" alt="" coords="5,6,208,34"/>
-<area shape="rect" id="node2" href="oauth2client.appengine.SiteXsrfSecretKey-class.html" title="SiteXsrfSecretKey" alt="" coords="232,6,363,34"/>
+<center> <map id="uml_class_diagram_for_oauth2cl_12" name="uml_class_diagram_for_oauth2cl_12">
+<area shape="rect" id="node126" href="oauth2client.appengine.SiteXsrfSecretKey-class.html#secret" title="oauth2client.appengine.SiteXsrfSecretKey.secret" alt="" coords="220,383,331,401"/>
+<area shape="rect" id="node1" href="oauth2client.appengine.SiteXsrfSecretKey-class.html" title="Storage for the sites XSRF secret key." alt="" coords="208,358,341,415"/>
+<area shape="rect" id="node127" href="google.appengine.ext.db.PropertiedClass-class.html" title="Meta-class for initializing Model classes properties." alt="" coords="17,31,533,49"/>
+<area shape="rect" id="node127" href="javascript:void(0);" title="Allow subclasses to call __new__() with arguments." alt="" coords="17,52,533,71"/>
+<area shape="rect" id="node127" href="javascript:void(0);" title="Creates a new instance of this model." alt="" coords="17,71,533,89"/>
+<area shape="rect" id="node127" href="javascript:void(0);" title="Unique key for this entity." alt="" coords="17,89,533,108"/>
+<area shape="rect" id="node127" href="javascript:void(0);" title="Writes this model instance to the datastore." alt="" coords="17,108,533,127"/>
+<area shape="rect" id="node127" href="javascript:void(0);" title="Writes this model instance to the datastore." alt="" coords="17,127,533,145"/>
+<area shape="rect" id="node127" href="javascript:void(0);" title="Deletes this entity from the datastore." alt="" coords="17,145,533,164"/>
+<area shape="rect" id="node127" href="javascript:void(0);" title="Determine if entity is persisted in the datastore." alt="" coords="17,164,533,183"/>
+<area shape="rect" id="node127" href="javascript:void(0);" title="Determine if this model instance has a complete key." alt="" coords="17,183,533,201"/>
+<area shape="rect" id="node127" href="javascript:void(0);" title="Returns a list of all dynamic properties defined for instance." alt="" coords="17,201,533,220"/>
+<area shape="rect" id="node127" href="javascript:void(0);" title="Alias for dyanmic_properties." alt="" coords="17,220,533,239"/>
+<area shape="rect" id="node127" href="javascript:void(0);" title="Get the parent of the model instance." alt="" coords="17,239,533,257"/>
+<area shape="rect" id="node127" href="javascript:void(0);" title="Get the parent's key." alt="" coords="17,257,533,276"/>
+<area shape="rect" id="node127" href="javascript:void(0);" title="Generate an XML representation of this model instance." alt="" coords="17,276,533,295"/>
+<area shape="rect" id="node127" href="javascript:void(0);" title="Soon to be removed alias for properties." alt="" coords="17,313,533,332"/>
+<area shape="rect" id="node2" href="javascript:void(0);" title="Model is the superclass of all object entities in the datastore." alt="" coords="5,6,544,338"/>
</map>
- <img src="class_hierarchy_for_sitexsrfse.gif" alt='' usemap="#class_hierarchy_for_sitexsrfse" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_oauth2cl_12.gif" alt='' usemap="#uml_class_diagram_for_oauth2cl_12" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -262,7 +278,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:24 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:45 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.appengine.SiteXsrfSecretKeyNDB-class.html b/docs/epy/oauth2client.appengine.SiteXsrfSecretKeyNDB-class.html
index 1796e9c..f074fc6 100644
--- a/docs/epy/oauth2client.appengine.SiteXsrfSecretKeyNDB-class.html
+++ b/docs/epy/oauth2client.appengine.SiteXsrfSecretKeyNDB-class.html
@@ -55,11 +55,12 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class SiteXsrfSecretKeyNDB</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.appengine-pysrc.html#SiteXsrfSecretKeyNDB">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_sitexsrfse_2" name="class_hierarchy_for_sitexsrfse_2">
-<area shape="rect" id="node1" href="javascript:void(0);" title="??-98" alt="" coords="5,6,59,34"/>
-<area shape="rect" id="node2" href="oauth2client.appengine.SiteXsrfSecretKeyNDB-class.html" title="SiteXsrfSecretKeyNDB" alt="" coords="83,6,240,34"/>
+<center> <map id="uml_class_diagram_for_oauth2cl_13" name="uml_class_diagram_for_oauth2cl_13">
+<area shape="rect" id="node128" href="oauth2client.appengine.SiteXsrfSecretKeyNDB-class.html#secret" title="oauth2client.appengine.SiteXsrfSecretKeyNDB.secret" alt="" coords="17,95,156,113"/>
+<area shape="rect" id="node1" href="oauth2client.appengine.SiteXsrfSecretKeyNDB-class.html" title="NDB Model for storage for the sites XSRF secret key." alt="" coords="5,70,168,127"/>
+<area shape="rect" id="node2" href="javascript:void(0);" title="??-98" alt="" coords="57,6,116,50"/>
</map>
- <img src="class_hierarchy_for_sitexsrfse_2.gif" alt='' usemap="#class_hierarchy_for_sitexsrfse_2" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_oauth2cl_13.gif" alt='' usemap="#uml_class_diagram_for_oauth2cl_13" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -158,7 +159,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:24 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:45 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.appengine.StorageByKeyName-class.html b/docs/epy/oauth2client.appengine.StorageByKeyName-class.html
index a180a94..c0c87be 100644
--- a/docs/epy/oauth2client.appengine.StorageByKeyName-class.html
+++ b/docs/epy/oauth2client.appengine.StorageByKeyName-class.html
@@ -55,11 +55,20 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class StorageByKeyName</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.appengine-pysrc.html#StorageByKeyName">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_storagebyk" name="class_hierarchy_for_storagebyk">
-<area shape="rect" id="node1" href="oauth2client.appengine.StorageByKeyName-class.html" title="StorageByKeyName" alt="" coords="5,6,147,34"/>
-<area shape="rect" id="node2" href="oauth2client.client.Storage-class.html" title="client.Storage" alt="" coords="171,6,272,34"/>
+<center> <map id="uml_class_diagram_for_oauth2cl_14" name="uml_class_diagram_for_oauth2cl_14">
+<area shape="rect" id="node130" href="oauth2client.appengine.StorageByKeyName-class.html#__init__" title="Constructor for Storage." alt="" coords="17,191,457,209"/>
+<area shape="rect" id="node130" href="oauth2client.appengine.StorageByKeyName-class.html#locked_get" title="Retrieve Credential from datastore." alt="" coords="17,209,457,228"/>
+<area shape="rect" id="node130" href="oauth2client.appengine.StorageByKeyName-class.html#locked_put" title="Write a Credentials to the datastore." alt="" coords="17,228,457,247"/>
+<area shape="rect" id="node130" href="oauth2client.appengine.StorageByKeyName-class.html#locked_delete" title="Delete Credential from datastore." alt="" coords="17,247,457,265"/>
+<area shape="rect" id="node1" href="oauth2client.appengine.StorageByKeyName-class.html" title="Store and retrieve a credential to and from the App Engine datastore." alt="" coords="5,158,469,271"/>
+<area shape="rect" id="node131" href="oauth2client.client.Storage-class.html#acquire_lock" title="Acquires any lock necessary to access this Storage." alt="" coords="175,39,300,57"/>
+<area shape="rect" id="node131" href="oauth2client.client.Storage-class.html#release_lock" title="Release the Storage lock." alt="" coords="175,57,300,76"/>
+<area shape="rect" id="node131" href="oauth2client.client.Storage-class.html#get" title="Retrieve credential." alt="" coords="175,76,300,95"/>
+<area shape="rect" id="node131" href="oauth2client.client.Storage-class.html#put" title="Write a credential." alt="" coords="175,95,300,113"/>
+<area shape="rect" id="node131" href="oauth2client.client.Storage-class.html#delete" title="Delete credential." alt="" coords="175,113,300,132"/>
+<area shape="rect" id="node2" href="oauth2client.client.Storage-class.html" title="Base class for all Storage objects." alt="" coords="163,6,312,138"/>
</map>
- <img src="class_hierarchy_for_storagebyk.gif" alt='' usemap="#class_hierarchy_for_storagebyk" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_oauth2cl_14.gif" alt='' usemap="#uml_class_diagram_for_oauth2cl_14" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -99,7 +108,8 @@
<span class="summary-sig-arg">model</span>,
<span class="summary-sig-arg">key_name</span>,
<span class="summary-sig-arg">property_name</span>,
- <span class="summary-sig-arg">cache</span>=<span class="summary-sig-default">None</span>)</span><br />
+ <span class="summary-sig-arg">cache</span>=<span class="summary-sig-default">None</span>,
+ <span class="summary-sig-arg">user</span>=<span class="summary-sig-default">None</span>)</span><br />
Constructor for Storage.</td>
<td align="right" valign="top">
<span class="codelink"><a href="oauth2client.appengine-pysrc.html#StorageByKeyName.__init__">source code</a></span>
@@ -293,7 +303,8 @@
<span class="sig-arg">model</span>,
<span class="sig-arg">key_name</span>,
<span class="sig-arg">property_name</span>,
- <span class="sig-arg">cache</span>=<span class="sig-default">None</span>)</span>
+ <span class="sig-arg">cache</span>=<span class="sig-default">None</span>,
+ <span class="sig-arg">user</span>=<span class="sig-default">None</span>)</span>
<br /><em class="fname">(Constructor)</em>
</h3>
</td><td align="right" valign="top"
@@ -312,6 +323,8 @@
cache: memcache, a write-through cache to put in front of the datastore.
If the model you are using is an NDB model, using a cache will be
redundant since the model uses an instance cache and memcache for you.
+ user: users.User object, optional. Can be used to grab user ID as a
+ key_name if no key name is specified.
</pre>
<dl class="fields">
@@ -509,7 +522,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:24 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:45 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.client-module.html b/docs/epy/oauth2client.client-module.html
index 4eee0af..88b6510 100644
--- a/docs/epy/oauth2client.client-module.html
+++ b/docs/epy/oauth2client.client-module.html
@@ -922,7 +922,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:23 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:42 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.client-pysrc.html b/docs/epy/oauth2client.client-pysrc.html
index 511d2d7..d47a09e 100644
--- a/docs/epy/oauth2client.client-pysrc.html
+++ b/docs/epy/oauth2client.client-pysrc.html
@@ -427,8 +427,9 @@
oauth2client.django_orm.Storage.locked_put
oauth2client.file.Storage.locked_put
oauth2client.keyring_storage.Storage.locked_put
-oauth2client.multistore_file._MultiStore._Storage.locked_put" class="py-name" href="#" onclick="return doclink('link-45', 'locked_put', 'link-45');">locked_put</a></tt><tt class="py-op">(</tt><tt id="link-46" class="py-name" targets="Variable oauth2client.appengine.CredentialsModel.credentials=oauth2client.appengine.CredentialsModel-class.html#credentials,Variable oauth2client.appengine.CredentialsNDBModel.credentials=oauth2client.appengine.CredentialsNDBModel-class.html#credentials"><a title="oauth2client.appengine.CredentialsModel.credentials
-oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-46', 'credentials', 'link-46');">credentials</a></tt><tt class="py-op">)</tt> </tt>
+oauth2client.multistore_file._MultiStore._Storage.locked_put" class="py-name" href="#" onclick="return doclink('link-45', 'locked_put', 'link-45');">locked_put</a></tt><tt class="py-op">(</tt><tt id="link-46" class="py-name" targets="Variable oauth2client.appengine.CredentialsModel.credentials=oauth2client.appengine.CredentialsModel-class.html#credentials,Variable oauth2client.appengine.CredentialsNDBModel.credentials=oauth2client.appengine.CredentialsNDBModel-class.html#credentials,Variable oauth2client.appengine.OAuth2Decorator.credentials=oauth2client.appengine.OAuth2Decorator-class.html#credentials"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-46', 'credentials', 'link-46');">credentials</a></tt><tt class="py-op">)</tt> </tt>
<a name="L326"></a><tt class="py-lineno"> 326</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt>
<a name="L327"></a><tt class="py-lineno"> 327</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-47" class="py-name"><a title="oauth2client.client.Storage.release_lock
oauth2client.file.Storage.release_lock
@@ -496,8 +497,8 @@
<a name="L376"></a><tt class="py-lineno"> 376</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
<a name="L377"></a><tt class="py-lineno"> 377</tt> <tt class="py-line"> <tt class="py-name">parts</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">urlparse</tt><tt class="py-op">.</tt><tt class="py-name">urlparse</tt><tt class="py-op">(</tt><tt class="py-name">uri</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L378"></a><tt class="py-lineno"> 378</tt> <tt class="py-line"> <tt id="link-52" class="py-name" targets="Variable oauth2client.tools.ClientRedirectServer.query_params=oauth2client.tools.ClientRedirectServer-class.html#query_params"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-52', 'query_params', 'link-52');">query_params</a></tt> <tt class="py-op">=</tt> <tt class="py-name">dict</tt><tt class="py-op">(</tt><tt class="py-name">parse_qsl</tt><tt class="py-op">(</tt><tt class="py-name">parts</tt><tt class="py-op">[</tt><tt class="py-number">4</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-comment"># 4 is the index of the query part</tt> </tt>
-<a name="L379"></a><tt class="py-lineno"> 379</tt> <tt class="py-line"> <tt id="link-53" class="py-name"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-53', 'query_params', 'link-52');">query_params</a></tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">params</tt><tt class="py-op">)</tt> </tt>
-<a name="L380"></a><tt class="py-lineno"> 380</tt> <tt class="py-line"> <tt class="py-name">parts</tt><tt class="py-op">[</tt><tt class="py-number">4</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">urlencode</tt><tt class="py-op">(</tt><tt id="link-54" class="py-name"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-54', 'query_params', 'link-52');">query_params</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L379"></a><tt class="py-lineno"> 379</tt> <tt class="py-line"> <tt id="link-53" class="py-name"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-53', 'query_params', 'link-52');">query_params</a></tt><tt class="py-op">.</tt><tt id="link-54" class="py-name" targets="Method apiclient.channel.Channel.update()=apiclient.channel.Channel-class.html#update"><a title="apiclient.channel.Channel.update" class="py-name" href="#" onclick="return doclink('link-54', 'update', 'link-54');">update</a></tt><tt class="py-op">(</tt><tt class="py-name">params</tt><tt class="py-op">)</tt> </tt>
+<a name="L380"></a><tt class="py-lineno"> 380</tt> <tt class="py-line"> <tt class="py-name">parts</tt><tt class="py-op">[</tt><tt class="py-number">4</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">urlencode</tt><tt class="py-op">(</tt><tt id="link-55" class="py-name"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-55', 'query_params', 'link-52');">query_params</a></tt><tt class="py-op">)</tt> </tt>
<a name="L381"></a><tt class="py-lineno"> 381</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">urlparse</tt><tt class="py-op">.</tt><tt class="py-name">urlunparse</tt><tt class="py-op">(</tt><tt class="py-name">parts</tt><tt class="py-op">)</tt> </tt>
</div><a name="L382"></a><tt class="py-lineno"> 382</tt> <tt class="py-line"> </tt>
<a name="OAuth2Credentials"></a><div id="OAuth2Credentials-def"><a name="L383"></a><tt class="py-lineno"> 383</tt> <tt class="py-line"> </tt>
@@ -510,7 +511,7 @@
<a name="L390"></a><tt class="py-lineno"> 390</tt> <tt class="py-line"><tt class="py-docstring"> OAuth2Credentials objects may be safely pickled and unpickled.</tt> </tt>
<a name="L391"></a><tt class="py-lineno"> 391</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
<a name="L392"></a><tt class="py-lineno"> 392</tt> <tt class="py-line"> </tt>
-<a name="L393"></a><tt class="py-lineno"> 393</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-55" class="py-name" targets="Function oauth2client.util.positional()=oauth2client.util-module.html#positional"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-55', 'positional', 'link-55');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">8</tt><tt class="py-op">)</tt> </tt>
+<a name="L393"></a><tt class="py-lineno"> 393</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-56" class="py-name" targets="Function oauth2client.util.positional()=oauth2client.util-module.html#positional"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-56', 'positional', 'link-56');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">8</tt><tt class="py-op">)</tt> </tt>
<a name="OAuth2Credentials.__init__"></a><div id="OAuth2Credentials.__init__-def"><a name="L394"></a><tt class="py-lineno"> 394</tt> <a class="py-toggle" href="#" id="OAuth2Credentials.__init__-toggle" onclick="return toggle('OAuth2Credentials.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.OAuth2Credentials-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">access_token</tt><tt class="py-op">,</tt> <tt class="py-param">client_id</tt><tt class="py-op">,</tt> <tt class="py-param">client_secret</tt><tt class="py-op">,</tt> <tt class="py-param">refresh_token</tt><tt class="py-op">,</tt> </tt>
<a name="L395"></a><tt class="py-lineno"> 395</tt> <tt class="py-line"> <tt class="py-param">token_expiry</tt><tt class="py-op">,</tt> <tt class="py-param">token_uri</tt><tt class="py-op">,</tt> <tt class="py-param">user_agent</tt><tt class="py-op">,</tt> <tt class="py-param">revoke_uri</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
<a name="L396"></a><tt class="py-lineno"> 396</tt> <tt class="py-line"> <tt class="py-param">id_token</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">token_response</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
@@ -583,37 +584,37 @@
<a name="L463"></a><tt class="py-lineno"> 463</tt> <tt class="py-line"><tt class="py-docstring"> that adds in the Authorization header and then calls the original</tt> </tt>
<a name="L464"></a><tt class="py-lineno"> 464</tt> <tt class="py-line"><tt class="py-docstring"> version of 'request()'.</tt> </tt>
<a name="L465"></a><tt class="py-lineno"> 465</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L466"></a><tt class="py-lineno"> 466</tt> <tt class="py-line"> <tt class="py-name">request_orig</tt> <tt class="py-op">=</tt> <tt id="link-56" class="py-name" targets="Module apiclient.http=apiclient.http-module.html,Method oauth2client.appengine.OAuth2Decorator.http()=oauth2client.appengine.OAuth2Decorator-class.html#http"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-56', 'http', 'link-56');">http</a></tt><tt class="py-op">.</tt><tt id="link-57" class="py-name" targets="Method apiclient.http.HttpMock.request()=apiclient.http.HttpMock-class.html#request,Method apiclient.http.HttpMockSequence.request()=apiclient.http.HttpMockSequence-class.html#request,Method apiclient.model.BaseModel.request()=apiclient.model.BaseModel-class.html#request,Method apiclient.model.Model.request()=apiclient.model.Model-class.html#request"><a title="apiclient.http.HttpMock.request
+<a name="L466"></a><tt class="py-lineno"> 466</tt> <tt class="py-line"> <tt class="py-name">request_orig</tt> <tt class="py-op">=</tt> <tt id="link-57" class="py-name" targets="Module apiclient.http=apiclient.http-module.html,Method oauth2client.appengine.OAuth2Decorator.http()=oauth2client.appengine.OAuth2Decorator-class.html#http"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-57', 'http', 'link-57');">http</a></tt><tt class="py-op">.</tt><tt id="link-58" class="py-name" targets="Method apiclient.http.HttpMock.request()=apiclient.http.HttpMock-class.html#request,Method apiclient.http.HttpMockSequence.request()=apiclient.http.HttpMockSequence-class.html#request,Method apiclient.model.BaseModel.request()=apiclient.model.BaseModel-class.html#request,Method apiclient.model.Model.request()=apiclient.model.Model-class.html#request"><a title="apiclient.http.HttpMock.request
apiclient.http.HttpMockSequence.request
apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-57', 'request', 'link-57');">request</a></tt> </tt>
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-58', 'request', 'link-58');">request</a></tt> </tt>
<a name="L467"></a><tt class="py-lineno"> 467</tt> <tt class="py-line"> </tt>
<a name="L468"></a><tt class="py-lineno"> 468</tt> <tt class="py-line"> <tt class="py-comment"># The closure that will replace 'httplib2.Http.request'.</tt> </tt>
-<a name="L469"></a><tt class="py-lineno"> 469</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-58" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-58', 'positional', 'link-55');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L469"></a><tt class="py-lineno"> 469</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-59" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-59', 'positional', 'link-56');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
<a name="L470"></a><tt class="py-lineno"> 470</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">new_request</tt><tt class="py-op">(</tt><tt class="py-param">uri</tt><tt class="py-op">,</tt> <tt class="py-param">method</tt><tt class="py-op">=</tt><tt class="py-string">'GET'</tt><tt class="py-op">,</tt> <tt class="py-param">body</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">headers</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
<a name="L471"></a><tt class="py-lineno"> 471</tt> <tt class="py-line"> <tt class="py-param">redirections</tt><tt class="py-op">=</tt><tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">DEFAULT_MAX_REDIRECTS</tt><tt class="py-op">,</tt> </tt>
<a name="L472"></a><tt class="py-lineno"> 472</tt> <tt class="py-line"> <tt class="py-param">connection_type</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L473"></a><tt class="py-lineno"> 473</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">access_token</tt><tt class="py-op">:</tt> </tt>
-<a name="L474"></a><tt class="py-lineno"> 474</tt> <tt class="py-line"> <tt id="link-59" class="py-name"><a title="apiclient.discovery.logger
+<a name="L474"></a><tt class="py-lineno"> 474</tt> <tt class="py-line"> <tt id="link-60" class="py-name"><a title="apiclient.discovery.logger
oauth2client.appengine.logger
oauth2client.client.logger
oauth2client.crypt.logger
oauth2client.gce.logger
oauth2client.locked_file.logger
oauth2client.multistore_file.logger
-oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-59', 'logger', 'link-19');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Attempting refresh to obtain initial access_token'</tt><tt class="py-op">)</tt> </tt>
-<a name="L475"></a><tt class="py-lineno"> 475</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-60" class="py-name" targets="Method oauth2client.appengine.AppAssertionCredentials._refresh()=oauth2client.appengine.AppAssertionCredentials-class.html#_refresh,Method oauth2client.client.AccessTokenCredentials._refresh()=oauth2client.client.AccessTokenCredentials-class.html#_refresh,Method oauth2client.client.OAuth2Credentials._refresh()=oauth2client.client.OAuth2Credentials-class.html#_refresh,Method oauth2client.gce.AppAssertionCredentials._refresh()=oauth2client.gce.AppAssertionCredentials-class.html#_refresh"><a title="oauth2client.appengine.AppAssertionCredentials._refresh
+oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-60', 'logger', 'link-19');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Attempting refresh to obtain initial access_token'</tt><tt class="py-op">)</tt> </tt>
+<a name="L475"></a><tt class="py-lineno"> 475</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-61" class="py-name" targets="Method oauth2client.appengine.AppAssertionCredentials._refresh()=oauth2client.appengine.AppAssertionCredentials-class.html#_refresh,Method oauth2client.client.AccessTokenCredentials._refresh()=oauth2client.client.AccessTokenCredentials-class.html#_refresh,Method oauth2client.client.OAuth2Credentials._refresh()=oauth2client.client.OAuth2Credentials-class.html#_refresh,Method oauth2client.gce.AppAssertionCredentials._refresh()=oauth2client.gce.AppAssertionCredentials-class.html#_refresh"><a title="oauth2client.appengine.AppAssertionCredentials._refresh
oauth2client.client.AccessTokenCredentials._refresh
oauth2client.client.OAuth2Credentials._refresh
-oauth2client.gce.AppAssertionCredentials._refresh" class="py-name" href="#" onclick="return doclink('link-60', '_refresh', 'link-60');">_refresh</a></tt><tt class="py-op">(</tt><tt class="py-name">request_orig</tt><tt class="py-op">)</tt> </tt>
+oauth2client.gce.AppAssertionCredentials._refresh" class="py-name" href="#" onclick="return doclink('link-61', '_refresh', 'link-61');">_refresh</a></tt><tt class="py-op">(</tt><tt class="py-name">request_orig</tt><tt class="py-op">)</tt> </tt>
<a name="L476"></a><tt class="py-lineno"> 476</tt> <tt class="py-line"> </tt>
<a name="L477"></a><tt class="py-lineno"> 477</tt> <tt class="py-line"> <tt class="py-comment"># Modify the request headers to add the appropriate</tt> </tt>
<a name="L478"></a><tt class="py-lineno"> 478</tt> <tt class="py-line"> <tt class="py-comment"># Authorization header.</tt> </tt>
<a name="L479"></a><tt class="py-lineno"> 479</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">headers</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
<a name="L480"></a><tt class="py-lineno"> 480</tt> <tt class="py-line"> <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-<a name="L481"></a><tt class="py-lineno"> 481</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-61" class="py-name" targets="Method oauth2client.client.Credentials.apply()=oauth2client.client.Credentials-class.html#apply,Method oauth2client.client.OAuth2Credentials.apply()=oauth2client.client.OAuth2Credentials-class.html#apply"><a title="oauth2client.client.Credentials.apply
-oauth2client.client.OAuth2Credentials.apply" class="py-name" href="#" onclick="return doclink('link-61', 'apply', 'link-61');">apply</a></tt><tt class="py-op">(</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
+<a name="L481"></a><tt class="py-lineno"> 481</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-62" class="py-name" targets="Method oauth2client.client.Credentials.apply()=oauth2client.client.Credentials-class.html#apply,Method oauth2client.client.OAuth2Credentials.apply()=oauth2client.client.OAuth2Credentials-class.html#apply"><a title="oauth2client.client.Credentials.apply
+oauth2client.client.OAuth2Credentials.apply" class="py-name" href="#" onclick="return doclink('link-62', 'apply', 'link-62');">apply</a></tt><tt class="py-op">(</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
<a name="L482"></a><tt class="py-lineno"> 482</tt> <tt class="py-line"> </tt>
<a name="L483"></a><tt class="py-lineno"> 483</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">user_agent</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
<a name="L484"></a><tt class="py-lineno"> 484</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'user-agent'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">headers</tt><tt class="py-op">:</tt> </tt>
@@ -621,45 +622,45 @@
<a name="L486"></a><tt class="py-lineno"> 486</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L487"></a><tt class="py-lineno"> 487</tt> <tt class="py-line"> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'user-agent'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">user_agent</tt> </tt>
<a name="L488"></a><tt class="py-lineno"> 488</tt> <tt class="py-line"> </tt>
-<a name="L489"></a><tt class="py-lineno"> 489</tt> <tt class="py-line"> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">request_orig</tt><tt class="py-op">(</tt><tt class="py-name">uri</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt><tt class="py-op">,</tt> <tt class="py-name">body</tt><tt class="py-op">,</tt> <tt id="link-62" class="py-name" targets="Function oauth2client.client.clean_headers()=oauth2client.client-module.html#clean_headers"><a title="oauth2client.client.clean_headers" class="py-name" href="#" onclick="return doclink('link-62', 'clean_headers', 'link-62');">clean_headers</a></tt><tt class="py-op">(</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L489"></a><tt class="py-lineno"> 489</tt> <tt class="py-line"> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">request_orig</tt><tt class="py-op">(</tt><tt class="py-name">uri</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt><tt class="py-op">,</tt> <tt id="link-63" class="py-name" targets="Method apiclient.channel.Channel.body()=apiclient.channel.Channel-class.html#body"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-63', 'body', 'link-63');">body</a></tt><tt class="py-op">,</tt> <tt id="link-64" class="py-name" targets="Function oauth2client.client.clean_headers()=oauth2client.client-module.html#clean_headers"><a title="oauth2client.client.clean_headers" class="py-name" href="#" onclick="return doclink('link-64', 'clean_headers', 'link-64');">clean_headers</a></tt><tt class="py-op">(</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
<a name="L490"></a><tt class="py-lineno"> 490</tt> <tt class="py-line"> <tt class="py-name">redirections</tt><tt class="py-op">,</tt> <tt class="py-name">connection_type</tt><tt class="py-op">)</tt> </tt>
<a name="L491"></a><tt class="py-lineno"> 491</tt> <tt class="py-line"> </tt>
-<a name="L492"></a><tt class="py-lineno"> 492</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-keyword">in</tt> <tt id="link-63" class="py-name"><a title="oauth2client.client.REFRESH_STATUS_CODES" class="py-name" href="#" onclick="return doclink('link-63', 'REFRESH_STATUS_CODES', 'link-23');">REFRESH_STATUS_CODES</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L493"></a><tt class="py-lineno"> 493</tt> <tt class="py-line"> <tt id="link-64" class="py-name"><a title="apiclient.discovery.logger
+<a name="L492"></a><tt class="py-lineno"> 492</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-keyword">in</tt> <tt id="link-65" class="py-name"><a title="oauth2client.client.REFRESH_STATUS_CODES" class="py-name" href="#" onclick="return doclink('link-65', 'REFRESH_STATUS_CODES', 'link-23');">REFRESH_STATUS_CODES</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L493"></a><tt class="py-lineno"> 493</tt> <tt class="py-line"> <tt id="link-66" class="py-name"><a title="apiclient.discovery.logger
oauth2client.appengine.logger
oauth2client.client.logger
oauth2client.crypt.logger
oauth2client.gce.logger
oauth2client.locked_file.logger
oauth2client.multistore_file.logger
-oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-64', 'logger', 'link-19');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Refreshing due to a %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L494"></a><tt class="py-lineno"> 494</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-65" class="py-name"><a title="oauth2client.appengine.AppAssertionCredentials._refresh
+oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-66', 'logger', 'link-19');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Refreshing due to a %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L494"></a><tt class="py-lineno"> 494</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-67" class="py-name"><a title="oauth2client.appengine.AppAssertionCredentials._refresh
oauth2client.client.AccessTokenCredentials._refresh
oauth2client.client.OAuth2Credentials._refresh
-oauth2client.gce.AppAssertionCredentials._refresh" class="py-name" href="#" onclick="return doclink('link-65', '_refresh', 'link-60');">_refresh</a></tt><tt class="py-op">(</tt><tt class="py-name">request_orig</tt><tt class="py-op">)</tt> </tt>
-<a name="L495"></a><tt class="py-lineno"> 495</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-66" class="py-name"><a title="oauth2client.client.Credentials.apply
-oauth2client.client.OAuth2Credentials.apply" class="py-name" href="#" onclick="return doclink('link-66', 'apply', 'link-61');">apply</a></tt><tt class="py-op">(</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
-<a name="L496"></a><tt class="py-lineno"> 496</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">request_orig</tt><tt class="py-op">(</tt><tt class="py-name">uri</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt><tt class="py-op">,</tt> <tt class="py-name">body</tt><tt class="py-op">,</tt> <tt id="link-67" class="py-name"><a title="oauth2client.client.clean_headers" class="py-name" href="#" onclick="return doclink('link-67', 'clean_headers', 'link-62');">clean_headers</a></tt><tt class="py-op">(</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+oauth2client.gce.AppAssertionCredentials._refresh" class="py-name" href="#" onclick="return doclink('link-67', '_refresh', 'link-61');">_refresh</a></tt><tt class="py-op">(</tt><tt class="py-name">request_orig</tt><tt class="py-op">)</tt> </tt>
+<a name="L495"></a><tt class="py-lineno"> 495</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-68" class="py-name"><a title="oauth2client.client.Credentials.apply
+oauth2client.client.OAuth2Credentials.apply" class="py-name" href="#" onclick="return doclink('link-68', 'apply', 'link-62');">apply</a></tt><tt class="py-op">(</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
+<a name="L496"></a><tt class="py-lineno"> 496</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">request_orig</tt><tt class="py-op">(</tt><tt class="py-name">uri</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt><tt class="py-op">,</tt> <tt id="link-69" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-69', 'body', 'link-63');">body</a></tt><tt class="py-op">,</tt> <tt id="link-70" class="py-name"><a title="oauth2client.client.clean_headers" class="py-name" href="#" onclick="return doclink('link-70', 'clean_headers', 'link-64');">clean_headers</a></tt><tt class="py-op">(</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
<a name="L497"></a><tt class="py-lineno"> 497</tt> <tt class="py-line"> <tt class="py-name">redirections</tt><tt class="py-op">,</tt> <tt class="py-name">connection_type</tt><tt class="py-op">)</tt> </tt>
<a name="L498"></a><tt class="py-lineno"> 498</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L499"></a><tt class="py-lineno"> 499</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
</div><a name="L500"></a><tt class="py-lineno"> 500</tt> <tt class="py-line"> </tt>
<a name="L501"></a><tt class="py-lineno"> 501</tt> <tt class="py-line"> <tt class="py-comment"># Replace the request method with our own closure.</tt> </tt>
-<a name="L502"></a><tt class="py-lineno"> 502</tt> <tt class="py-line"> <tt id="link-68" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-68', 'http', 'link-56');">http</a></tt><tt class="py-op">.</tt><tt id="link-69" class="py-name"><a title="apiclient.http.HttpMock.request
+<a name="L502"></a><tt class="py-lineno"> 502</tt> <tt class="py-line"> <tt id="link-71" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-71', 'http', 'link-57');">http</a></tt><tt class="py-op">.</tt><tt id="link-72" class="py-name"><a title="apiclient.http.HttpMock.request
apiclient.http.HttpMockSequence.request
apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-69', 'request', 'link-57');">request</a></tt> <tt class="py-op">=</tt> <tt class="py-name">new_request</tt> </tt>
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-72', 'request', 'link-58');">request</a></tt> <tt class="py-op">=</tt> <tt class="py-name">new_request</tt> </tt>
<a name="L503"></a><tt class="py-lineno"> 503</tt> <tt class="py-line"> </tt>
<a name="L504"></a><tt class="py-lineno"> 504</tt> <tt class="py-line"> <tt class="py-comment"># Set credentials as a property of the request method.</tt> </tt>
-<a name="L505"></a><tt class="py-lineno"> 505</tt> <tt class="py-line"> <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt id="link-70" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-70', 'http', 'link-56');">http</a></tt><tt class="py-op">.</tt><tt id="link-71" class="py-name"><a title="apiclient.http.HttpMock.request
+<a name="L505"></a><tt class="py-lineno"> 505</tt> <tt class="py-line"> <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt id="link-73" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-73', 'http', 'link-57');">http</a></tt><tt class="py-op">.</tt><tt id="link-74" class="py-name"><a title="apiclient.http.HttpMock.request
apiclient.http.HttpMockSequence.request
apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-71', 'request', 'link-57');">request</a></tt><tt class="py-op">,</tt> <tt class="py-string">'credentials'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-74', 'request', 'link-58');">request</a></tt><tt class="py-op">,</tt> <tt class="py-string">'credentials'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
<a name="L506"></a><tt class="py-lineno"> 506</tt> <tt class="py-line"> </tt>
-<a name="L507"></a><tt class="py-lineno"> 507</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-72" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-72', 'http', 'link-56');">http</a></tt> </tt>
+<a name="L507"></a><tt class="py-lineno"> 507</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-75" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-75', 'http', 'link-57');">http</a></tt> </tt>
</div><a name="L508"></a><tt class="py-lineno"> 508</tt> <tt class="py-line"> </tt>
<a name="OAuth2Credentials.refresh"></a><div id="OAuth2Credentials.refresh-def"><a name="L509"></a><tt class="py-lineno"> 509</tt> <a class="py-toggle" href="#" id="OAuth2Credentials.refresh-toggle" onclick="return toggle('OAuth2Credentials.refresh');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.OAuth2Credentials-class.html#refresh">refresh</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="OAuth2Credentials.refresh-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="OAuth2Credentials.refresh-expanded"><a name="L510"></a><tt class="py-lineno"> 510</tt> <tt class="py-line"> <tt class="py-docstring">"""Forces a refresh of the access_token.</tt> </tt>
@@ -668,14 +669,14 @@
<a name="L513"></a><tt class="py-lineno"> 513</tt> <tt class="py-line"><tt class="py-docstring"> http: httplib2.Http, an http object to be used to make the refresh</tt> </tt>
<a name="L514"></a><tt class="py-lineno"> 514</tt> <tt class="py-line"><tt class="py-docstring"> request.</tt> </tt>
<a name="L515"></a><tt class="py-lineno"> 515</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L516"></a><tt class="py-lineno"> 516</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-73" class="py-name"><a title="oauth2client.appengine.AppAssertionCredentials._refresh
+<a name="L516"></a><tt class="py-lineno"> 516</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-76" class="py-name"><a title="oauth2client.appengine.AppAssertionCredentials._refresh
oauth2client.client.AccessTokenCredentials._refresh
oauth2client.client.OAuth2Credentials._refresh
-oauth2client.gce.AppAssertionCredentials._refresh" class="py-name" href="#" onclick="return doclink('link-73', '_refresh', 'link-60');">_refresh</a></tt><tt class="py-op">(</tt><tt id="link-74" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-74', 'http', 'link-56');">http</a></tt><tt class="py-op">.</tt><tt id="link-75" class="py-name"><a title="apiclient.http.HttpMock.request
+oauth2client.gce.AppAssertionCredentials._refresh" class="py-name" href="#" onclick="return doclink('link-76', '_refresh', 'link-61');">_refresh</a></tt><tt class="py-op">(</tt><tt id="link-77" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-77', 'http', 'link-57');">http</a></tt><tt class="py-op">.</tt><tt id="link-78" class="py-name"><a title="apiclient.http.HttpMock.request
apiclient.http.HttpMockSequence.request
apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-75', 'request', 'link-57');">request</a></tt><tt class="py-op">)</tt> </tt>
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-78', 'request', 'link-58');">request</a></tt><tt class="py-op">)</tt> </tt>
</div><a name="L517"></a><tt class="py-lineno"> 517</tt> <tt class="py-line"> </tt>
<a name="OAuth2Credentials.revoke"></a><div id="OAuth2Credentials.revoke-def"><a name="L518"></a><tt class="py-lineno"> 518</tt> <a class="py-toggle" href="#" id="OAuth2Credentials.revoke-toggle" onclick="return toggle('OAuth2Credentials.revoke');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.OAuth2Credentials-class.html#revoke">revoke</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="OAuth2Credentials.revoke-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="OAuth2Credentials.revoke-expanded"><a name="L519"></a><tt class="py-lineno"> 519</tt> <tt class="py-line"> <tt class="py-docstring">"""Revokes a refresh_token and makes the credentials void.</tt> </tt>
@@ -684,13 +685,13 @@
<a name="L522"></a><tt class="py-lineno"> 522</tt> <tt class="py-line"><tt class="py-docstring"> http: httplib2.Http, an http object to be used to make the revoke</tt> </tt>
<a name="L523"></a><tt class="py-lineno"> 523</tt> <tt class="py-line"><tt class="py-docstring"> request.</tt> </tt>
<a name="L524"></a><tt class="py-lineno"> 524</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L525"></a><tt class="py-lineno"> 525</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-76" class="py-name" targets="Method oauth2client.client.AccessTokenCredentials._revoke()=oauth2client.client.AccessTokenCredentials-class.html#_revoke,Method oauth2client.client.AssertionCredentials._revoke()=oauth2client.client.AssertionCredentials-class.html#_revoke,Method oauth2client.client.OAuth2Credentials._revoke()=oauth2client.client.OAuth2Credentials-class.html#_revoke"><a title="oauth2client.client.AccessTokenCredentials._revoke
+<a name="L525"></a><tt class="py-lineno"> 525</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-79" class="py-name" targets="Method oauth2client.client.AccessTokenCredentials._revoke()=oauth2client.client.AccessTokenCredentials-class.html#_revoke,Method oauth2client.client.AssertionCredentials._revoke()=oauth2client.client.AssertionCredentials-class.html#_revoke,Method oauth2client.client.OAuth2Credentials._revoke()=oauth2client.client.OAuth2Credentials-class.html#_revoke"><a title="oauth2client.client.AccessTokenCredentials._revoke
oauth2client.client.AssertionCredentials._revoke
-oauth2client.client.OAuth2Credentials._revoke" class="py-name" href="#" onclick="return doclink('link-76', '_revoke', 'link-76');">_revoke</a></tt><tt class="py-op">(</tt><tt id="link-77" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-77', 'http', 'link-56');">http</a></tt><tt class="py-op">.</tt><tt id="link-78" class="py-name"><a title="apiclient.http.HttpMock.request
+oauth2client.client.OAuth2Credentials._revoke" class="py-name" href="#" onclick="return doclink('link-79', '_revoke', 'link-79');">_revoke</a></tt><tt class="py-op">(</tt><tt id="link-80" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-80', 'http', 'link-57');">http</a></tt><tt class="py-op">.</tt><tt id="link-81" class="py-name"><a title="apiclient.http.HttpMock.request
apiclient.http.HttpMockSequence.request
apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-78', 'request', 'link-57');">request</a></tt><tt class="py-op">)</tt> </tt>
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-81', 'request', 'link-58');">request</a></tt><tt class="py-op">)</tt> </tt>
</div><a name="L526"></a><tt class="py-lineno"> 526</tt> <tt class="py-line"> </tt>
<a name="OAuth2Credentials.apply"></a><div id="OAuth2Credentials.apply-def"><a name="L527"></a><tt class="py-lineno"> 527</tt> <a class="py-toggle" href="#" id="OAuth2Credentials.apply-toggle" onclick="return toggle('OAuth2Credentials.apply');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.OAuth2Credentials-class.html#apply">apply</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">headers</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="OAuth2Credentials.apply-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="OAuth2Credentials.apply-expanded"><a name="L528"></a><tt class="py-lineno"> 528</tt> <tt class="py-line"> <tt class="py-docstring">"""Add the authorization to the headers.</tt> </tt>
@@ -701,8 +702,8 @@
<a name="L533"></a><tt class="py-lineno"> 533</tt> <tt class="py-line"> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'Authorization'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'Bearer '</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">access_token</tt> </tt>
</div><a name="L534"></a><tt class="py-lineno"> 534</tt> <tt class="py-line"> </tt>
<a name="OAuth2Credentials.to_json"></a><div id="OAuth2Credentials.to_json-def"><a name="L535"></a><tt class="py-lineno"> 535</tt> <a class="py-toggle" href="#" id="OAuth2Credentials.to_json-toggle" onclick="return toggle('OAuth2Credentials.to_json');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.OAuth2Credentials-class.html#to_json">to_json</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="OAuth2Credentials.to_json-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="OAuth2Credentials.to_json-expanded"><a name="L536"></a><tt class="py-lineno"> 536</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-79" class="py-name"><a title="apiclient.http.MediaUpload._to_json
-oauth2client.client.Credentials._to_json" class="py-name" href="#" onclick="return doclink('link-79', '_to_json', 'link-31');">_to_json</a></tt><tt class="py-op">(</tt><tt id="link-80" class="py-name"><a title="oauth2client.client.Credentials" class="py-name" href="#" onclick="return doclink('link-80', 'Credentials', 'link-32');">Credentials</a></tt><tt class="py-op">.</tt><tt id="link-81" class="py-name"><a title="oauth2client.client.Credentials.NON_SERIALIZED_MEMBERS" class="py-name" href="#" onclick="return doclink('link-81', 'NON_SERIALIZED_MEMBERS', 'link-25');">NON_SERIALIZED_MEMBERS</a></tt><tt class="py-op">)</tt> </tt>
+</div><div id="OAuth2Credentials.to_json-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="OAuth2Credentials.to_json-expanded"><a name="L536"></a><tt class="py-lineno"> 536</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-82" class="py-name"><a title="apiclient.http.MediaUpload._to_json
+oauth2client.client.Credentials._to_json" class="py-name" href="#" onclick="return doclink('link-82', '_to_json', 'link-31');">_to_json</a></tt><tt class="py-op">(</tt><tt id="link-83" class="py-name"><a title="oauth2client.client.Credentials" class="py-name" href="#" onclick="return doclink('link-83', 'Credentials', 'link-32');">Credentials</a></tt><tt class="py-op">.</tt><tt id="link-84" class="py-name"><a title="oauth2client.client.Credentials.NON_SERIALIZED_MEMBERS" class="py-name" href="#" onclick="return doclink('link-84', 'NON_SERIALIZED_MEMBERS', 'link-25');">NON_SERIALIZED_MEMBERS</a></tt><tt class="py-op">)</tt> </tt>
</div><a name="L537"></a><tt class="py-lineno"> 537</tt> <tt class="py-line"> </tt>
<a name="L538"></a><tt class="py-lineno"> 538</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">classmethod</tt> </tt>
<a name="OAuth2Credentials.from_json"></a><div id="OAuth2Credentials.from_json-def"><a name="L539"></a><tt class="py-lineno"> 539</tt> <a class="py-toggle" href="#" id="OAuth2Credentials.from_json-toggle" onclick="return toggle('OAuth2Credentials.from_json');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.OAuth2Credentials-class.html#from_json">from_json</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">,</tt> <tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
@@ -715,12 +716,12 @@
<a name="L546"></a><tt class="py-lineno"> 546</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
<a name="L547"></a><tt class="py-lineno"> 547</tt> <tt class="py-line"><tt class="py-docstring"> An instance of a Credentials subclass.</tt> </tt>
<a name="L548"></a><tt class="py-lineno"> 548</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L549"></a><tt class="py-lineno"> 549</tt> <tt class="py-line"> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-82" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-82', 'loads', 'link-34');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
+<a name="L549"></a><tt class="py-lineno"> 549</tt> <tt class="py-line"> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-85" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-85', 'loads', 'link-34');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
<a name="L550"></a><tt class="py-lineno"> 550</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'token_expiry'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">data</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'token_expiry'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
<a name="L551"></a><tt class="py-lineno"> 551</tt> <tt class="py-line"> <tt class="py-name">datetime</tt><tt class="py-op">.</tt><tt class="py-name">datetime</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L552"></a><tt class="py-lineno"> 552</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
<a name="L553"></a><tt class="py-lineno"> 553</tt> <tt class="py-line"> <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'token_expiry'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">datetime</tt><tt class="py-op">.</tt><tt class="py-name">datetime</tt><tt class="py-op">.</tt><tt class="py-name">strptime</tt><tt class="py-op">(</tt> </tt>
-<a name="L554"></a><tt class="py-lineno"> 554</tt> <tt class="py-line"> <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'token_expiry'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-83" class="py-name"><a title="oauth2client.client.EXPIRY_FORMAT" class="py-name" href="#" onclick="return doclink('link-83', 'EXPIRY_FORMAT', 'link-20');">EXPIRY_FORMAT</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L554"></a><tt class="py-lineno"> 554</tt> <tt class="py-line"> <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'token_expiry'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt id="link-86" class="py-name"><a title="oauth2client.client.EXPIRY_FORMAT" class="py-name" href="#" onclick="return doclink('link-86', 'EXPIRY_FORMAT', 'link-20');">EXPIRY_FORMAT</a></tt><tt class="py-op">)</tt> </tt>
<a name="L555"></a><tt class="py-lineno"> 555</tt> <tt class="py-line"> <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
<a name="L556"></a><tt class="py-lineno"> 556</tt> <tt class="py-line"> <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'token_expiry'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
<a name="L557"></a><tt class="py-lineno"> 557</tt> <tt class="py-line"> <tt class="py-name">retval</tt> <tt class="py-op">=</tt> <tt class="py-name">cls</tt><tt class="py-op">(</tt> </tt>
@@ -731,15 +732,15 @@
<a name="L562"></a><tt class="py-lineno"> 562</tt> <tt class="py-line"> <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'token_expiry'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
<a name="L563"></a><tt class="py-lineno"> 563</tt> <tt class="py-line"> <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'token_uri'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
<a name="L564"></a><tt class="py-lineno"> 564</tt> <tt class="py-line"> <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'user_agent'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L565"></a><tt class="py-lineno"> 565</tt> <tt class="py-line"> <tt class="py-name">revoke_uri</tt><tt class="py-op">=</tt><tt class="py-name">data</tt><tt class="py-op">.</tt><tt id="link-84" class="py-name"><a title="apiclient.schema.Schemas.get
+<a name="L565"></a><tt class="py-lineno"> 565</tt> <tt class="py-line"> <tt class="py-name">revoke_uri</tt><tt class="py-op">=</tt><tt class="py-name">data</tt><tt class="py-op">.</tt><tt id="link-87" class="py-name"><a title="apiclient.schema.Schemas.get
oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-84', 'get', 'link-24');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'revoke_uri'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L566"></a><tt class="py-lineno"> 566</tt> <tt class="py-line"> <tt class="py-name">id_token</tt><tt class="py-op">=</tt><tt class="py-name">data</tt><tt class="py-op">.</tt><tt id="link-85" class="py-name"><a title="apiclient.schema.Schemas.get
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-87', 'get', 'link-24');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'revoke_uri'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L566"></a><tt class="py-lineno"> 566</tt> <tt class="py-line"> <tt class="py-name">id_token</tt><tt class="py-op">=</tt><tt class="py-name">data</tt><tt class="py-op">.</tt><tt id="link-88" class="py-name"><a title="apiclient.schema.Schemas.get
oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-85', 'get', 'link-24');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'id_token'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L567"></a><tt class="py-lineno"> 567</tt> <tt class="py-line"> <tt class="py-name">token_response</tt><tt class="py-op">=</tt><tt class="py-name">data</tt><tt class="py-op">.</tt><tt id="link-86" class="py-name"><a title="apiclient.schema.Schemas.get
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-88', 'get', 'link-24');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'id_token'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L567"></a><tt class="py-lineno"> 567</tt> <tt class="py-line"> <tt class="py-name">token_response</tt><tt class="py-op">=</tt><tt class="py-name">data</tt><tt class="py-op">.</tt><tt id="link-89" class="py-name"><a title="apiclient.schema.Schemas.get
oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-86', 'get', 'link-24');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'token_response'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-89', 'get', 'link-24');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'token_response'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L568"></a><tt class="py-lineno"> 568</tt> <tt class="py-line"> <tt class="py-name">retval</tt><tt class="py-op">.</tt><tt class="py-name">invalid</tt> <tt class="py-op">=</tt> <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'invalid'</tt><tt class="py-op">]</tt> </tt>
<a name="L569"></a><tt class="py-lineno"> 569</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">retval</tt> </tt>
</div><a name="L570"></a><tt class="py-lineno"> 570</tt> <tt class="py-line"> </tt>
@@ -757,14 +758,14 @@
<a name="L582"></a><tt class="py-lineno"> 582</tt> <tt class="py-line"> </tt>
<a name="L583"></a><tt class="py-lineno"> 583</tt> <tt class="py-line"> <tt class="py-name">now</tt> <tt class="py-op">=</tt> <tt class="py-name">datetime</tt><tt class="py-op">.</tt><tt class="py-name">datetime</tt><tt class="py-op">.</tt><tt class="py-name">utcnow</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L584"></a><tt class="py-lineno"> 584</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">now</tt> <tt class="py-op">>=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">token_expiry</tt><tt class="py-op">:</tt> </tt>
-<a name="L585"></a><tt class="py-lineno"> 585</tt> <tt class="py-line"> <tt id="link-87" class="py-name"><a title="apiclient.discovery.logger
+<a name="L585"></a><tt class="py-lineno"> 585</tt> <tt class="py-line"> <tt id="link-90" class="py-name"><a title="apiclient.discovery.logger
oauth2client.appengine.logger
oauth2client.client.logger
oauth2client.crypt.logger
oauth2client.gce.logger
oauth2client.locked_file.logger
oauth2client.multistore_file.logger
-oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-87', 'logger', 'link-19');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'access_token is expired. Now: %s, token_expiry: %s'</tt><tt class="py-op">,</tt> </tt>
+oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-90', 'logger', 'link-19');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'access_token is expired. Now: %s, token_expiry: %s'</tt><tt class="py-op">,</tt> </tt>
<a name="L586"></a><tt class="py-lineno"> 586</tt> <tt class="py-line"> <tt class="py-name">now</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">token_expiry</tt><tt class="py-op">)</tt> </tt>
<a name="L587"></a><tt class="py-lineno"> 587</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
<a name="L588"></a><tt class="py-lineno"> 588</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
@@ -783,8 +784,8 @@
</div><a name="L601"></a><tt class="py-lineno"> 601</tt> <tt class="py-line"> </tt>
<a name="OAuth2Credentials._updateFromCredential"></a><div id="OAuth2Credentials._updateFromCredential-def"><a name="L602"></a><tt class="py-lineno"> 602</tt> <a class="py-toggle" href="#" id="OAuth2Credentials._updateFromCredential-toggle" onclick="return toggle('OAuth2Credentials._updateFromCredential');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.OAuth2Credentials-class.html#_updateFromCredential">_updateFromCredential</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">other</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="OAuth2Credentials._updateFromCredential-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="OAuth2Credentials._updateFromCredential-expanded"><a name="L603"></a><tt class="py-lineno"> 603</tt> <tt class="py-line"> <tt class="py-docstring">"""Update this Credential from another instance."""</tt> </tt>
-<a name="L604"></a><tt class="py-lineno"> 604</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">.</tt><tt id="link-88" class="py-name" targets="Method apiclient.discovery.Resource.__getstate__()=apiclient.discovery.Resource-class.html#__getstate__,Method oauth2client.client.OAuth2Credentials.__getstate__()=oauth2client.client.OAuth2Credentials-class.html#__getstate__"><a title="apiclient.discovery.Resource.__getstate__
-oauth2client.client.OAuth2Credentials.__getstate__" class="py-name" href="#" onclick="return doclink('link-88', '__getstate__', 'link-88');">__getstate__</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L604"></a><tt class="py-lineno"> 604</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">.</tt><tt id="link-91" class="py-name"><a title="apiclient.channel.Channel.update" class="py-name" href="#" onclick="return doclink('link-91', 'update', 'link-54');">update</a></tt><tt class="py-op">(</tt><tt class="py-name">other</tt><tt class="py-op">.</tt><tt id="link-92" class="py-name" targets="Method apiclient.discovery.Resource.__getstate__()=apiclient.discovery.Resource-class.html#__getstate__,Method oauth2client.client.OAuth2Credentials.__getstate__()=oauth2client.client.OAuth2Credentials-class.html#__getstate__"><a title="apiclient.discovery.Resource.__getstate__
+oauth2client.client.OAuth2Credentials.__getstate__" class="py-name" href="#" onclick="return doclink('link-92', '__getstate__', 'link-92');">__getstate__</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
</div><a name="L605"></a><tt class="py-lineno"> 605</tt> <tt class="py-line"> </tt>
<a name="OAuth2Credentials.__getstate__"></a><div id="OAuth2Credentials.__getstate__-def"><a name="L606"></a><tt class="py-lineno"> 606</tt> <a class="py-toggle" href="#" id="OAuth2Credentials.__getstate__-toggle" onclick="return toggle('OAuth2Credentials.__getstate__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.OAuth2Credentials-class.html#__getstate__">__getstate__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="OAuth2Credentials.__getstate__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="OAuth2Credentials.__getstate__-expanded"><a name="L607"></a><tt class="py-lineno"> 607</tt> <tt class="py-line"> <tt class="py-docstring">"""Trim the state down to something that can be pickled."""</tt> </tt>
@@ -794,18 +795,18 @@
</div><a name="L611"></a><tt class="py-lineno"> 611</tt> <tt class="py-line"> </tt>
<a name="OAuth2Credentials.__setstate__"></a><div id="OAuth2Credentials.__setstate__-def"><a name="L612"></a><tt class="py-lineno"> 612</tt> <a class="py-toggle" href="#" id="OAuth2Credentials.__setstate__-toggle" onclick="return toggle('OAuth2Credentials.__setstate__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.OAuth2Credentials-class.html#__setstate__">__setstate__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">state</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="OAuth2Credentials.__setstate__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="OAuth2Credentials.__setstate__-expanded"><a name="L613"></a><tt class="py-lineno"> 613</tt> <tt class="py-line"> <tt class="py-docstring">"""Reconstitute the state of the object from being pickled."""</tt> </tt>
-<a name="L614"></a><tt class="py-lineno"> 614</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">state</tt><tt class="py-op">)</tt> </tt>
+<a name="L614"></a><tt class="py-lineno"> 614</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">__dict__</tt><tt class="py-op">.</tt><tt id="link-93" class="py-name"><a title="apiclient.channel.Channel.update" class="py-name" href="#" onclick="return doclink('link-93', 'update', 'link-54');">update</a></tt><tt class="py-op">(</tt><tt class="py-name">state</tt><tt class="py-op">)</tt> </tt>
<a name="L615"></a><tt class="py-lineno"> 615</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">store</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
</div><a name="L616"></a><tt class="py-lineno"> 616</tt> <tt class="py-line"> </tt>
<a name="OAuth2Credentials._generate_refresh_request_body"></a><div id="OAuth2Credentials._generate_refresh_request_body-def"><a name="L617"></a><tt class="py-lineno"> 617</tt> <a class="py-toggle" href="#" id="OAuth2Credentials._generate_refresh_request_body-toggle" onclick="return toggle('OAuth2Credentials._generate_refresh_request_body');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.OAuth2Credentials-class.html#_generate_refresh_request_body">_generate_refresh_request_body</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="OAuth2Credentials._generate_refresh_request_body-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="OAuth2Credentials._generate_refresh_request_body-expanded"><a name="L618"></a><tt class="py-lineno"> 618</tt> <tt class="py-line"> <tt class="py-docstring">"""Generate the body that will be used in the refresh request."""</tt> </tt>
-<a name="L619"></a><tt class="py-lineno"> 619</tt> <tt class="py-line"> <tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">urlencode</tt><tt class="py-op">(</tt><tt class="py-op">{</tt> </tt>
+<a name="L619"></a><tt class="py-lineno"> 619</tt> <tt class="py-line"> <tt id="link-94" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-94', 'body', 'link-63');">body</a></tt> <tt class="py-op">=</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">urlencode</tt><tt class="py-op">(</tt><tt class="py-op">{</tt> </tt>
<a name="L620"></a><tt class="py-lineno"> 620</tt> <tt class="py-line"> <tt class="py-string">'grant_type'</tt><tt class="py-op">:</tt> <tt class="py-string">'refresh_token'</tt><tt class="py-op">,</tt> </tt>
<a name="L621"></a><tt class="py-lineno"> 621</tt> <tt class="py-line"> <tt class="py-string">'client_id'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">client_id</tt><tt class="py-op">,</tt> </tt>
<a name="L622"></a><tt class="py-lineno"> 622</tt> <tt class="py-line"> <tt class="py-string">'client_secret'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">client_secret</tt><tt class="py-op">,</tt> </tt>
<a name="L623"></a><tt class="py-lineno"> 623</tt> <tt class="py-line"> <tt class="py-string">'refresh_token'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">refresh_token</tt><tt class="py-op">,</tt> </tt>
<a name="L624"></a><tt class="py-lineno"> 624</tt> <tt class="py-line"> <tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
-<a name="L625"></a><tt class="py-lineno"> 625</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">body</tt> </tt>
+<a name="L625"></a><tt class="py-lineno"> 625</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-95" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-95', 'body', 'link-63');">body</a></tt> </tt>
</div><a name="L626"></a><tt class="py-lineno"> 626</tt> <tt class="py-line"> </tt>
<a name="OAuth2Credentials._generate_refresh_request_headers"></a><div id="OAuth2Credentials._generate_refresh_request_headers-def"><a name="L627"></a><tt class="py-lineno"> 627</tt> <a class="py-toggle" href="#" id="OAuth2Credentials._generate_refresh_request_headers-toggle" onclick="return toggle('OAuth2Credentials._generate_refresh_request_headers');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.OAuth2Credentials-class.html#_generate_refresh_request_headers">_generate_refresh_request_headers</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="OAuth2Credentials._generate_refresh_request_headers-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="OAuth2Credentials._generate_refresh_request_headers-expanded"><a name="L628"></a><tt class="py-lineno"> 628</tt> <tt class="py-line"> <tt class="py-docstring">"""Generate the headers that will be used in the refresh request."""</tt> </tt>
@@ -833,37 +834,37 @@
<a name="L650"></a><tt class="py-lineno"> 650</tt> <tt class="py-line"><tt class="py-docstring"> AccessTokenRefreshError: When the refresh fails.</tt> </tt>
<a name="L651"></a><tt class="py-lineno"> 651</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
<a name="L652"></a><tt class="py-lineno"> 652</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">store</tt><tt class="py-op">:</tt> </tt>
-<a name="L653"></a><tt class="py-lineno"> 653</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-89" class="py-name" targets="Method oauth2client.client.OAuth2Credentials._do_refresh_request()=oauth2client.client.OAuth2Credentials-class.html#_do_refresh_request"><a title="oauth2client.client.OAuth2Credentials._do_refresh_request" class="py-name" href="#" onclick="return doclink('link-89', '_do_refresh_request', 'link-89');">_do_refresh_request</a></tt><tt class="py-op">(</tt><tt class="py-name">http_request</tt><tt class="py-op">)</tt> </tt>
+<a name="L653"></a><tt class="py-lineno"> 653</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-96" class="py-name" targets="Method oauth2client.client.OAuth2Credentials._do_refresh_request()=oauth2client.client.OAuth2Credentials-class.html#_do_refresh_request"><a title="oauth2client.client.OAuth2Credentials._do_refresh_request" class="py-name" href="#" onclick="return doclink('link-96', '_do_refresh_request', 'link-96');">_do_refresh_request</a></tt><tt class="py-op">(</tt><tt class="py-name">http_request</tt><tt class="py-op">)</tt> </tt>
<a name="L654"></a><tt class="py-lineno"> 654</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L655"></a><tt class="py-lineno"> 655</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">store</tt><tt class="py-op">.</tt><tt id="link-90" class="py-name"><a title="oauth2client.client.Storage.acquire_lock
+<a name="L655"></a><tt class="py-lineno"> 655</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">store</tt><tt class="py-op">.</tt><tt id="link-97" class="py-name"><a title="oauth2client.client.Storage.acquire_lock
oauth2client.file.Storage.acquire_lock
oauth2client.keyring_storage.Storage.acquire_lock
-oauth2client.multistore_file._MultiStore._Storage.acquire_lock" class="py-name" href="#" onclick="return doclink('link-90', 'acquire_lock', 'link-41');">acquire_lock</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+oauth2client.multistore_file._MultiStore._Storage.acquire_lock" class="py-name" href="#" onclick="return doclink('link-97', 'acquire_lock', 'link-41');">acquire_lock</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L656"></a><tt class="py-lineno"> 656</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L657"></a><tt class="py-lineno"> 657</tt> <tt class="py-line"> <tt class="py-name">new_cred</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">store</tt><tt class="py-op">.</tt><tt id="link-91" class="py-name"><a title="oauth2client.appengine.StorageByKeyName.locked_get
+<a name="L657"></a><tt class="py-lineno"> 657</tt> <tt class="py-line"> <tt class="py-name">new_cred</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">store</tt><tt class="py-op">.</tt><tt id="link-98" class="py-name"><a title="oauth2client.appengine.StorageByKeyName.locked_get
oauth2client.client.Storage.locked_get
oauth2client.django_orm.Storage.locked_get
oauth2client.file.Storage.locked_get
oauth2client.keyring_storage.Storage.locked_get
-oauth2client.multistore_file._MultiStore._Storage.locked_get" class="py-name" href="#" onclick="return doclink('link-91', 'locked_get', 'link-42');">locked_get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+oauth2client.multistore_file._MultiStore._Storage.locked_get" class="py-name" href="#" onclick="return doclink('link-98', 'locked_get', 'link-42');">locked_get</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L658"></a><tt class="py-lineno"> 658</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">new_cred</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">new_cred</tt><tt class="py-op">.</tt><tt class="py-name">invalid</tt> <tt class="py-keyword">and</tt> </tt>
<a name="L659"></a><tt class="py-lineno"> 659</tt> <tt class="py-line"> <tt class="py-name">new_cred</tt><tt class="py-op">.</tt><tt class="py-name">access_token</tt> <tt class="py-op">!=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">access_token</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L660"></a><tt class="py-lineno"> 660</tt> <tt class="py-line"> <tt id="link-92" class="py-name"><a title="apiclient.discovery.logger
+<a name="L660"></a><tt class="py-lineno"> 660</tt> <tt class="py-line"> <tt id="link-99" class="py-name"><a title="apiclient.discovery.logger
oauth2client.appengine.logger
oauth2client.client.logger
oauth2client.crypt.logger
oauth2client.gce.logger
oauth2client.locked_file.logger
oauth2client.multistore_file.logger
-oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-92', 'logger', 'link-19');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Updated access_token read from Storage'</tt><tt class="py-op">)</tt> </tt>
-<a name="L661"></a><tt class="py-lineno"> 661</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-93" class="py-name" targets="Method oauth2client.client.OAuth2Credentials._updateFromCredential()=oauth2client.client.OAuth2Credentials-class.html#_updateFromCredential"><a title="oauth2client.client.OAuth2Credentials._updateFromCredential" class="py-name" href="#" onclick="return doclink('link-93', '_updateFromCredential', 'link-93');">_updateFromCredential</a></tt><tt class="py-op">(</tt><tt class="py-name">new_cred</tt><tt class="py-op">)</tt> </tt>
+oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-99', 'logger', 'link-19');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Updated access_token read from Storage'</tt><tt class="py-op">)</tt> </tt>
+<a name="L661"></a><tt class="py-lineno"> 661</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-100" class="py-name" targets="Method oauth2client.client.OAuth2Credentials._updateFromCredential()=oauth2client.client.OAuth2Credentials-class.html#_updateFromCredential"><a title="oauth2client.client.OAuth2Credentials._updateFromCredential" class="py-name" href="#" onclick="return doclink('link-100', '_updateFromCredential', 'link-100');">_updateFromCredential</a></tt><tt class="py-op">(</tt><tt class="py-name">new_cred</tt><tt class="py-op">)</tt> </tt>
<a name="L662"></a><tt class="py-lineno"> 662</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L663"></a><tt class="py-lineno"> 663</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-94" class="py-name"><a title="oauth2client.client.OAuth2Credentials._do_refresh_request" class="py-name" href="#" onclick="return doclink('link-94', '_do_refresh_request', 'link-89');">_do_refresh_request</a></tt><tt class="py-op">(</tt><tt class="py-name">http_request</tt><tt class="py-op">)</tt> </tt>
+<a name="L663"></a><tt class="py-lineno"> 663</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-101" class="py-name"><a title="oauth2client.client.OAuth2Credentials._do_refresh_request" class="py-name" href="#" onclick="return doclink('link-101', '_do_refresh_request', 'link-96');">_do_refresh_request</a></tt><tt class="py-op">(</tt><tt class="py-name">http_request</tt><tt class="py-op">)</tt> </tt>
<a name="L664"></a><tt class="py-lineno"> 664</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt>
-<a name="L665"></a><tt class="py-lineno"> 665</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">store</tt><tt class="py-op">.</tt><tt id="link-95" class="py-name"><a title="oauth2client.client.Storage.release_lock
+<a name="L665"></a><tt class="py-lineno"> 665</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">store</tt><tt class="py-op">.</tt><tt id="link-102" class="py-name"><a title="oauth2client.client.Storage.release_lock
oauth2client.file.Storage.release_lock
oauth2client.keyring_storage.Storage.release_lock
-oauth2client.multistore_file._MultiStore._Storage.release_lock" class="py-name" href="#" onclick="return doclink('link-95', 'release_lock', 'link-43');">release_lock</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+oauth2client.multistore_file._MultiStore._Storage.release_lock" class="py-name" href="#" onclick="return doclink('link-102', 'release_lock', 'link-43');">release_lock</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
</div><a name="L666"></a><tt class="py-lineno"> 666</tt> <tt class="py-line"> </tt>
<a name="OAuth2Credentials._do_refresh_request"></a><div id="OAuth2Credentials._do_refresh_request-def"><a name="L667"></a><tt class="py-lineno"> 667</tt> <a class="py-toggle" href="#" id="OAuth2Credentials._do_refresh_request-toggle" onclick="return toggle('OAuth2Credentials._do_refresh_request');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.OAuth2Credentials-class.html#_do_refresh_request">_do_refresh_request</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http_request</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="OAuth2Credentials._do_refresh_request-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="OAuth2Credentials._do_refresh_request-expanded"><a name="L668"></a><tt class="py-lineno"> 668</tt> <tt class="py-line"> <tt class="py-docstring">"""Refresh the access_token using the refresh_token.</tt> </tt>
@@ -875,67 +876,67 @@
<a name="L674"></a><tt class="py-lineno"> 674</tt> <tt class="py-line"><tt class="py-docstring"> Raises:</tt> </tt>
<a name="L675"></a><tt class="py-lineno"> 675</tt> <tt class="py-line"><tt class="py-docstring"> AccessTokenRefreshError: When the refresh fails.</tt> </tt>
<a name="L676"></a><tt class="py-lineno"> 676</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L677"></a><tt class="py-lineno"> 677</tt> <tt class="py-line"> <tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-96" class="py-name" targets="Method oauth2client.client.AssertionCredentials._generate_refresh_request_body()=oauth2client.client.AssertionCredentials-class.html#_generate_refresh_request_body,Method oauth2client.client.OAuth2Credentials._generate_refresh_request_body()=oauth2client.client.OAuth2Credentials-class.html#_generate_refresh_request_body"><a title="oauth2client.client.AssertionCredentials._generate_refresh_request_body
-oauth2client.client.OAuth2Credentials._generate_refresh_request_body" class="py-name" href="#" onclick="return doclink('link-96', '_generate_refresh_request_body', 'link-96');">_generate_refresh_request_body</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L678"></a><tt class="py-lineno"> 678</tt> <tt class="py-line"> <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-97" class="py-name" targets="Method oauth2client.client.OAuth2Credentials._generate_refresh_request_headers()=oauth2client.client.OAuth2Credentials-class.html#_generate_refresh_request_headers"><a title="oauth2client.client.OAuth2Credentials._generate_refresh_request_headers" class="py-name" href="#" onclick="return doclink('link-97', '_generate_refresh_request_headers', 'link-97');">_generate_refresh_request_headers</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L677"></a><tt class="py-lineno"> 677</tt> <tt class="py-line"> <tt id="link-103" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-103', 'body', 'link-63');">body</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-104" class="py-name" targets="Method oauth2client.client.AssertionCredentials._generate_refresh_request_body()=oauth2client.client.AssertionCredentials-class.html#_generate_refresh_request_body,Method oauth2client.client.OAuth2Credentials._generate_refresh_request_body()=oauth2client.client.OAuth2Credentials-class.html#_generate_refresh_request_body"><a title="oauth2client.client.AssertionCredentials._generate_refresh_request_body
+oauth2client.client.OAuth2Credentials._generate_refresh_request_body" class="py-name" href="#" onclick="return doclink('link-104', '_generate_refresh_request_body', 'link-104');">_generate_refresh_request_body</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L678"></a><tt class="py-lineno"> 678</tt> <tt class="py-line"> <tt class="py-name">headers</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-105" class="py-name" targets="Method oauth2client.client.OAuth2Credentials._generate_refresh_request_headers()=oauth2client.client.OAuth2Credentials-class.html#_generate_refresh_request_headers"><a title="oauth2client.client.OAuth2Credentials._generate_refresh_request_headers" class="py-name" href="#" onclick="return doclink('link-105', '_generate_refresh_request_headers', 'link-105');">_generate_refresh_request_headers</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L679"></a><tt class="py-lineno"> 679</tt> <tt class="py-line"> </tt>
-<a name="L680"></a><tt class="py-lineno"> 680</tt> <tt class="py-line"> <tt id="link-98" class="py-name"><a title="apiclient.discovery.logger
+<a name="L680"></a><tt class="py-lineno"> 680</tt> <tt class="py-line"> <tt id="link-106" class="py-name"><a title="apiclient.discovery.logger
oauth2client.appengine.logger
oauth2client.client.logger
oauth2client.crypt.logger
oauth2client.gce.logger
oauth2client.locked_file.logger
oauth2client.multistore_file.logger
-oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-98', 'logger', 'link-19');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Refreshing access_token'</tt><tt class="py-op">)</tt> </tt>
+oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-106', 'logger', 'link-19');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Refreshing access_token'</tt><tt class="py-op">)</tt> </tt>
<a name="L681"></a><tt class="py-lineno"> 681</tt> <tt class="py-line"> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">http_request</tt><tt class="py-op">(</tt> </tt>
-<a name="L682"></a><tt class="py-lineno"> 682</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">token_uri</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt><tt class="py-op">=</tt><tt class="py-string">'POST'</tt><tt class="py-op">,</tt> <tt class="py-name">body</tt><tt class="py-op">=</tt><tt class="py-name">body</tt><tt class="py-op">,</tt> <tt class="py-name">headers</tt><tt class="py-op">=</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
+<a name="L682"></a><tt class="py-lineno"> 682</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">token_uri</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt><tt class="py-op">=</tt><tt class="py-string">'POST'</tt><tt class="py-op">,</tt> <tt id="link-107" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-107', 'body', 'link-63');">body</a></tt><tt class="py-op">=</tt><tt id="link-108" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-108', 'body', 'link-63');">body</a></tt><tt class="py-op">,</tt> <tt class="py-name">headers</tt><tt class="py-op">=</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
<a name="L683"></a><tt class="py-lineno"> 683</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-op">==</tt> <tt class="py-number">200</tt><tt class="py-op">:</tt> </tt>
<a name="L684"></a><tt class="py-lineno"> 684</tt> <tt class="py-line"> <tt class="py-comment"># TODO(jcgregorio) Raise an error if loads fails?</tt> </tt>
-<a name="L685"></a><tt class="py-lineno"> 685</tt> <tt class="py-line"> <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-99" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-99', 'loads', 'link-34');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
+<a name="L685"></a><tt class="py-lineno"> 685</tt> <tt class="py-line"> <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-109" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-109', 'loads', 'link-34');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
<a name="L686"></a><tt class="py-lineno"> 686</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">token_response</tt> <tt class="py-op">=</tt> <tt class="py-name">d</tt> </tt>
<a name="L687"></a><tt class="py-lineno"> 687</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">access_token</tt> <tt class="py-op">=</tt> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'access_token'</tt><tt class="py-op">]</tt> </tt>
-<a name="L688"></a><tt class="py-lineno"> 688</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">refresh_token</tt> <tt class="py-op">=</tt> <tt class="py-name">d</tt><tt class="py-op">.</tt><tt id="link-100" class="py-name"><a title="apiclient.schema.Schemas.get
+<a name="L688"></a><tt class="py-lineno"> 688</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">refresh_token</tt> <tt class="py-op">=</tt> <tt class="py-name">d</tt><tt class="py-op">.</tt><tt id="link-110" class="py-name"><a title="apiclient.schema.Schemas.get
oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-100', 'get', 'link-24');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'refresh_token'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">refresh_token</tt><tt class="py-op">)</tt> </tt>
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-110', 'get', 'link-24');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'refresh_token'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">refresh_token</tt><tt class="py-op">)</tt> </tt>
<a name="L689"></a><tt class="py-lineno"> 689</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'expires_in'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">d</tt><tt class="py-op">:</tt> </tt>
<a name="L690"></a><tt class="py-lineno"> 690</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">token_expiry</tt> <tt class="py-op">=</tt> <tt class="py-name">datetime</tt><tt class="py-op">.</tt><tt class="py-name">timedelta</tt><tt class="py-op">(</tt> </tt>
<a name="L691"></a><tt class="py-lineno"> 691</tt> <tt class="py-line"> <tt class="py-name">seconds</tt><tt class="py-op">=</tt><tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'expires_in'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">datetime</tt><tt class="py-op">.</tt><tt class="py-name">datetime</tt><tt class="py-op">.</tt><tt class="py-name">utcnow</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L692"></a><tt class="py-lineno"> 692</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L693"></a><tt class="py-lineno"> 693</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">token_expiry</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
<a name="L694"></a><tt class="py-lineno"> 694</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">store</tt><tt class="py-op">:</tt> </tt>
-<a name="L695"></a><tt class="py-lineno"> 695</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">store</tt><tt class="py-op">.</tt><tt id="link-101" class="py-name"><a title="oauth2client.appengine.StorageByKeyName.locked_put
+<a name="L695"></a><tt class="py-lineno"> 695</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">store</tt><tt class="py-op">.</tt><tt id="link-111" class="py-name"><a title="oauth2client.appengine.StorageByKeyName.locked_put
oauth2client.client.Storage.locked_put
oauth2client.django_orm.Storage.locked_put
oauth2client.file.Storage.locked_put
oauth2client.keyring_storage.Storage.locked_put
-oauth2client.multistore_file._MultiStore._Storage.locked_put" class="py-name" href="#" onclick="return doclink('link-101', 'locked_put', 'link-45');">locked_put</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+oauth2client.multistore_file._MultiStore._Storage.locked_put" class="py-name" href="#" onclick="return doclink('link-111', 'locked_put', 'link-45');">locked_put</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
<a name="L696"></a><tt class="py-lineno"> 696</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L697"></a><tt class="py-lineno"> 697</tt> <tt class="py-line"> <tt class="py-comment"># An {'error':...} response body means the token is expired or revoked,</tt> </tt>
<a name="L698"></a><tt class="py-lineno"> 698</tt> <tt class="py-line"> <tt class="py-comment"># so we flag the credentials as such.</tt> </tt>
-<a name="L699"></a><tt class="py-lineno"> 699</tt> <tt class="py-line"> <tt id="link-102" class="py-name"><a title="apiclient.discovery.logger
+<a name="L699"></a><tt class="py-lineno"> 699</tt> <tt class="py-line"> <tt id="link-112" class="py-name"><a title="apiclient.discovery.logger
oauth2client.appengine.logger
oauth2client.client.logger
oauth2client.crypt.logger
oauth2client.gce.logger
oauth2client.locked_file.logger
oauth2client.multistore_file.logger
-oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-102', 'logger', 'link-19');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Failed to retrieve access token: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
+oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-112', 'logger', 'link-19');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Failed to retrieve access token: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
<a name="L700"></a><tt class="py-lineno"> 700</tt> <tt class="py-line"> <tt class="py-name">error_msg</tt> <tt class="py-op">=</tt> <tt class="py-string">'Invalid response %s.'</tt> <tt class="py-op">%</tt> <tt class="py-name">resp</tt><tt class="py-op">[</tt><tt class="py-string">'status'</tt><tt class="py-op">]</tt> </tt>
<a name="L701"></a><tt class="py-lineno"> 701</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L702"></a><tt class="py-lineno"> 702</tt> <tt class="py-line"> <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-103" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-103', 'loads', 'link-34');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
+<a name="L702"></a><tt class="py-lineno"> 702</tt> <tt class="py-line"> <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-113" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-113', 'loads', 'link-34');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
<a name="L703"></a><tt class="py-lineno"> 703</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'error'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">d</tt><tt class="py-op">:</tt> </tt>
<a name="L704"></a><tt class="py-lineno"> 704</tt> <tt class="py-line"> <tt class="py-name">error_msg</tt> <tt class="py-op">=</tt> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'error'</tt><tt class="py-op">]</tt> </tt>
<a name="L705"></a><tt class="py-lineno"> 705</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">invalid</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
<a name="L706"></a><tt class="py-lineno"> 706</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">store</tt><tt class="py-op">:</tt> </tt>
-<a name="L707"></a><tt class="py-lineno"> 707</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">store</tt><tt class="py-op">.</tt><tt id="link-104" class="py-name"><a title="oauth2client.appengine.StorageByKeyName.locked_put
+<a name="L707"></a><tt class="py-lineno"> 707</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">store</tt><tt class="py-op">.</tt><tt id="link-114" class="py-name"><a title="oauth2client.appengine.StorageByKeyName.locked_put
oauth2client.client.Storage.locked_put
oauth2client.django_orm.Storage.locked_put
oauth2client.file.Storage.locked_put
oauth2client.keyring_storage.Storage.locked_put
-oauth2client.multistore_file._MultiStore._Storage.locked_put" class="py-name" href="#" onclick="return doclink('link-104', 'locked_put', 'link-45');">locked_put</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+oauth2client.multistore_file._MultiStore._Storage.locked_put" class="py-name" href="#" onclick="return doclink('link-114', 'locked_put', 'link-45');">locked_put</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
<a name="L708"></a><tt class="py-lineno"> 708</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">StandardError</tt><tt class="py-op">:</tt> </tt>
<a name="L709"></a><tt class="py-lineno"> 709</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
-<a name="L710"></a><tt class="py-lineno"> 710</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-105" class="py-name" targets="Class oauth2client.client.AccessTokenRefreshError=oauth2client.client.AccessTokenRefreshError-class.html"><a title="oauth2client.client.AccessTokenRefreshError" class="py-name" href="#" onclick="return doclink('link-105', 'AccessTokenRefreshError', 'link-105');">AccessTokenRefreshError</a></tt><tt class="py-op">(</tt><tt class="py-name">error_msg</tt><tt class="py-op">)</tt> </tt>
+<a name="L710"></a><tt class="py-lineno"> 710</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-115" class="py-name" targets="Class oauth2client.client.AccessTokenRefreshError=oauth2client.client.AccessTokenRefreshError-class.html"><a title="oauth2client.client.AccessTokenRefreshError" class="py-name" href="#" onclick="return doclink('link-115', 'AccessTokenRefreshError', 'link-115');">AccessTokenRefreshError</a></tt><tt class="py-op">(</tt><tt class="py-name">error_msg</tt><tt class="py-op">)</tt> </tt>
</div><a name="L711"></a><tt class="py-lineno"> 711</tt> <tt class="py-line"> </tt>
<a name="OAuth2Credentials._revoke"></a><div id="OAuth2Credentials._revoke-def"><a name="L712"></a><tt class="py-lineno"> 712</tt> <a class="py-toggle" href="#" id="OAuth2Credentials._revoke-toggle" onclick="return toggle('OAuth2Credentials._revoke');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.OAuth2Credentials-class.html#_revoke">_revoke</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http_request</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="OAuth2Credentials._revoke-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="OAuth2Credentials._revoke-expanded"><a name="L713"></a><tt class="py-lineno"> 713</tt> <tt class="py-line"> <tt class="py-docstring">"""Revokes the refresh_token and deletes the store if available.</tt> </tt>
@@ -944,7 +945,7 @@
<a name="L716"></a><tt class="py-lineno"> 716</tt> <tt class="py-line"><tt class="py-docstring"> http_request: callable, a callable that matches the method signature of</tt> </tt>
<a name="L717"></a><tt class="py-lineno"> 717</tt> <tt class="py-line"><tt class="py-docstring"> httplib2.Http.request, used to make the revoke request.</tt> </tt>
<a name="L718"></a><tt class="py-lineno"> 718</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L719"></a><tt class="py-lineno"> 719</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-106" class="py-name" targets="Method oauth2client.client.OAuth2Credentials._do_revoke()=oauth2client.client.OAuth2Credentials-class.html#_do_revoke"><a title="oauth2client.client.OAuth2Credentials._do_revoke" class="py-name" href="#" onclick="return doclink('link-106', '_do_revoke', 'link-106');">_do_revoke</a></tt><tt class="py-op">(</tt><tt class="py-name">http_request</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">refresh_token</tt><tt class="py-op">)</tt> </tt>
+<a name="L719"></a><tt class="py-lineno"> 719</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-116" class="py-name" targets="Method oauth2client.client.OAuth2Credentials._do_revoke()=oauth2client.client.OAuth2Credentials-class.html#_do_revoke"><a title="oauth2client.client.OAuth2Credentials._do_revoke" class="py-name" href="#" onclick="return doclink('link-116', '_do_revoke', 'link-116');">_do_revoke</a></tt><tt class="py-op">(</tt><tt class="py-name">http_request</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">refresh_token</tt><tt class="py-op">)</tt> </tt>
</div><a name="L720"></a><tt class="py-lineno"> 720</tt> <tt class="py-line"> </tt>
<a name="OAuth2Credentials._do_revoke"></a><div id="OAuth2Credentials._do_revoke-def"><a name="L721"></a><tt class="py-lineno"> 721</tt> <a class="py-toggle" href="#" id="OAuth2Credentials._do_revoke-toggle" onclick="return toggle('OAuth2Credentials._do_revoke');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.OAuth2Credentials-class.html#_do_revoke">_do_revoke</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http_request</tt><tt class="py-op">,</tt> <tt class="py-param">token</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="OAuth2Credentials._do_revoke-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="OAuth2Credentials._do_revoke-expanded"><a name="L722"></a><tt class="py-lineno"> 722</tt> <tt class="py-line"> <tt class="py-docstring">"""Revokes the credentials and deletes the store if available.</tt> </tt>
@@ -958,32 +959,32 @@
<a name="L730"></a><tt class="py-lineno"> 730</tt> <tt class="py-line"><tt class="py-docstring"> Raises:</tt> </tt>
<a name="L731"></a><tt class="py-lineno"> 731</tt> <tt class="py-line"><tt class="py-docstring"> TokenRevokeError: If the revoke request does not return with a 200 OK.</tt> </tt>
<a name="L732"></a><tt class="py-lineno"> 732</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L733"></a><tt class="py-lineno"> 733</tt> <tt class="py-line"> <tt id="link-107" class="py-name"><a title="apiclient.discovery.logger
+<a name="L733"></a><tt class="py-lineno"> 733</tt> <tt class="py-line"> <tt id="link-117" class="py-name"><a title="apiclient.discovery.logger
oauth2client.appengine.logger
oauth2client.client.logger
oauth2client.crypt.logger
oauth2client.gce.logger
oauth2client.locked_file.logger
oauth2client.multistore_file.logger
-oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-107', 'logger', 'link-19');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Revoking token'</tt><tt class="py-op">)</tt> </tt>
-<a name="L734"></a><tt class="py-lineno"> 734</tt> <tt class="py-line"> <tt id="link-108" class="py-name"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-108', 'query_params', 'link-52');">query_params</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'token'</tt><tt class="py-op">:</tt> <tt class="py-name">token</tt><tt class="py-op">}</tt> </tt>
-<a name="L735"></a><tt class="py-lineno"> 735</tt> <tt class="py-line"> <tt class="py-name">token_revoke_uri</tt> <tt class="py-op">=</tt> <tt id="link-109" class="py-name" targets="Function oauth2client.client._update_query_params()=oauth2client.client-module.html#_update_query_params"><a title="oauth2client.client._update_query_params" class="py-name" href="#" onclick="return doclink('link-109', '_update_query_params', 'link-109');">_update_query_params</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">revoke_uri</tt><tt class="py-op">,</tt> <tt id="link-110" class="py-name"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-110', 'query_params', 'link-52');">query_params</a></tt><tt class="py-op">)</tt> </tt>
+oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-117', 'logger', 'link-19');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Revoking token'</tt><tt class="py-op">)</tt> </tt>
+<a name="L734"></a><tt class="py-lineno"> 734</tt> <tt class="py-line"> <tt id="link-118" class="py-name"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-118', 'query_params', 'link-52');">query_params</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'token'</tt><tt class="py-op">:</tt> <tt class="py-name">token</tt><tt class="py-op">}</tt> </tt>
+<a name="L735"></a><tt class="py-lineno"> 735</tt> <tt class="py-line"> <tt class="py-name">token_revoke_uri</tt> <tt class="py-op">=</tt> <tt id="link-119" class="py-name" targets="Function oauth2client.client._update_query_params()=oauth2client.client-module.html#_update_query_params"><a title="oauth2client.client._update_query_params" class="py-name" href="#" onclick="return doclink('link-119', '_update_query_params', 'link-119');">_update_query_params</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">revoke_uri</tt><tt class="py-op">,</tt> <tt id="link-120" class="py-name"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-120', 'query_params', 'link-52');">query_params</a></tt><tt class="py-op">)</tt> </tt>
<a name="L736"></a><tt class="py-lineno"> 736</tt> <tt class="py-line"> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">http_request</tt><tt class="py-op">(</tt><tt class="py-name">token_revoke_uri</tt><tt class="py-op">)</tt> </tt>
<a name="L737"></a><tt class="py-lineno"> 737</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-op">==</tt> <tt class="py-number">200</tt><tt class="py-op">:</tt> </tt>
<a name="L738"></a><tt class="py-lineno"> 738</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">invalid</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
<a name="L739"></a><tt class="py-lineno"> 739</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L740"></a><tt class="py-lineno"> 740</tt> <tt class="py-line"> <tt class="py-name">error_msg</tt> <tt class="py-op">=</tt> <tt class="py-string">'Invalid response %s.'</tt> <tt class="py-op">%</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> </tt>
<a name="L741"></a><tt class="py-lineno"> 741</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L742"></a><tt class="py-lineno"> 742</tt> <tt class="py-line"> <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-111" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-111', 'loads', 'link-34');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
+<a name="L742"></a><tt class="py-lineno"> 742</tt> <tt class="py-line"> <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-121" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-121', 'loads', 'link-34');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
<a name="L743"></a><tt class="py-lineno"> 743</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'error'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">d</tt><tt class="py-op">:</tt> </tt>
<a name="L744"></a><tt class="py-lineno"> 744</tt> <tt class="py-line"> <tt class="py-name">error_msg</tt> <tt class="py-op">=</tt> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'error'</tt><tt class="py-op">]</tt> </tt>
<a name="L745"></a><tt class="py-lineno"> 745</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">StandardError</tt><tt class="py-op">:</tt> </tt>
<a name="L746"></a><tt class="py-lineno"> 746</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
-<a name="L747"></a><tt class="py-lineno"> 747</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-112" class="py-name" targets="Class oauth2client.client.TokenRevokeError=oauth2client.client.TokenRevokeError-class.html"><a title="oauth2client.client.TokenRevokeError" class="py-name" href="#" onclick="return doclink('link-112', 'TokenRevokeError', 'link-112');">TokenRevokeError</a></tt><tt class="py-op">(</tt><tt class="py-name">error_msg</tt><tt class="py-op">)</tt> </tt>
+<a name="L747"></a><tt class="py-lineno"> 747</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-122" class="py-name" targets="Class oauth2client.client.TokenRevokeError=oauth2client.client.TokenRevokeError-class.html"><a title="oauth2client.client.TokenRevokeError" class="py-name" href="#" onclick="return doclink('link-122', 'TokenRevokeError', 'link-122');">TokenRevokeError</a></tt><tt class="py-op">(</tt><tt class="py-name">error_msg</tt><tt class="py-op">)</tt> </tt>
<a name="L748"></a><tt class="py-lineno"> 748</tt> <tt class="py-line"> </tt>
<a name="L749"></a><tt class="py-lineno"> 749</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">store</tt><tt class="py-op">:</tt> </tt>
-<a name="L750"></a><tt class="py-lineno"> 750</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">store</tt><tt class="py-op">.</tt><tt id="link-113" class="py-name" targets="Method oauth2client.client.MemoryCache.delete()=oauth2client.client.MemoryCache-class.html#delete,Method oauth2client.client.Storage.delete()=oauth2client.client.Storage-class.html#delete"><a title="oauth2client.client.MemoryCache.delete
-oauth2client.client.Storage.delete" class="py-name" href="#" onclick="return doclink('link-113', 'delete', 'link-113');">delete</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L750"></a><tt class="py-lineno"> 750</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">store</tt><tt class="py-op">.</tt><tt id="link-123" class="py-name" targets="Method oauth2client.client.MemoryCache.delete()=oauth2client.client.MemoryCache-class.html#delete,Method oauth2client.client.Storage.delete()=oauth2client.client.Storage-class.html#delete"><a title="oauth2client.client.MemoryCache.delete
+oauth2client.client.Storage.delete" class="py-name" href="#" onclick="return doclink('link-123', 'delete', 'link-123');">delete</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
</div></div><a name="L751"></a><tt class="py-lineno"> 751</tt> <tt class="py-line"> </tt>
<a name="AccessTokenCredentials"></a><div id="AccessTokenCredentials-def"><a name="L752"></a><tt class="py-lineno"> 752</tt> <tt class="py-line"> </tt>
<a name="L753"></a><tt class="py-lineno"> 753</tt> <a class="py-toggle" href="#" id="AccessTokenCredentials-toggle" onclick="return toggle('AccessTokenCredentials');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.client.AccessTokenCredentials-class.html">AccessTokenCredentials</a><tt class="py-op">(</tt><tt class="py-base-class">OAuth2Credentials</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
@@ -1023,7 +1024,9 @@
<a name="L787"></a><tt class="py-lineno"> 787</tt> <tt class="py-line"><tt class="py-docstring"> revoke_uri: string, URI for revoke endpoint. Defaults to None; a token</tt> </tt>
<a name="L788"></a><tt class="py-lineno"> 788</tt> <tt class="py-line"><tt class="py-docstring"> can't be revoked if this is None.</tt> </tt>
<a name="L789"></a><tt class="py-lineno"> 789</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L790"></a><tt class="py-lineno"> 790</tt> <tt class="py-line"> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-114" class="py-name" targets="Class oauth2client.client.AccessTokenCredentials=oauth2client.client.AccessTokenCredentials-class.html"><a title="oauth2client.client.AccessTokenCredentials" class="py-name" href="#" onclick="return doclink('link-114', 'AccessTokenCredentials', 'link-114');">AccessTokenCredentials</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-115" class="py-name" targets="Method apiclient.discovery.Resource.__init__()=apiclient.discovery.Resource-class.html#__init__,Method apiclient.discovery.ResourceMethodParameters.__init__()=apiclient.discovery.ResourceMethodParameters-class.html#__init__,Method apiclient.errors.BatchError.__init__()=apiclient.errors.BatchError-class.html#__init__,Method apiclient.errors.HttpError.__init__()=apiclient.errors.HttpError-class.html#__init__,Method apiclient.errors.UnexpectedBodyError.__init__()=apiclient.errors.UnexpectedBodyError-class.html#__init__,Method apiclient.errors.UnexpectedMethodError.__init__()=apiclient.errors.UnexpectedMethodError-class.html#__init__,Method apiclient.http.BatchHttpRequest.__init__()=apiclient.http.BatchHttpRequest-class.html#__init__,Method apiclient.http.HttpMock.__init__()=apiclient.http.HttpMock-class.html#__init__,Method apiclient.http.HttpMockSequence.__init__()=apiclient.http.HttpMockSequence-class.html#__init__,Method apiclient.http.HttpRequest.__init__()=apiclient.http.HttpRequest-class.html#__init__,Method apiclient.http.HttpRequestMock.__init__()=apiclient.http.HttpRequestMock-class.html#__init__,Method apiclient.http.MediaDownloadProgress.__init__()=apiclient.http.MediaDownloadProgress-class.html#__init__,Method apiclient.http.MediaFileUpload.__init__()=apiclient.http.MediaFileUpload-class.html#__init__,Method apiclient.http.MediaInMemoryUpload.__init__()=apiclient.http.MediaInMemoryUpload-class.html#__init__,Method apiclient.http.MediaIoBaseDownload.__init__()=apiclient.http.MediaIoBaseDownload-class.html#__init__,Method apiclient.http.MediaIoBaseUpload.__init__()=apiclient.http.MediaIoBaseUpload-class.html#__init__,Method apiclient.http.MediaUploadProgress.__init__()=apiclient.http.MediaUploadProgress-class.html#__init__,Method apiclient.http.RequestMockBuilder.__init__()=apiclient.http.RequestMockBuilder-class.html#__init__,Method apiclient.http._StreamSlice.__init__()=apiclient.http._StreamSlice-class.html#__init__,Method apiclient.model.JsonModel.__init__()=apiclient.model.JsonModel-class.html#__init__,Method apiclient.model.ProtocolBufferModel.__init__()=apiclient.model.ProtocolBufferModel-class.html#__init__,Method apiclient.push.Channel.__init__()=apiclient.push.Channel-class.html#__init__,Method apiclient.push.Headers.__init__()=apiclient.push.Headers-class.html#__init__,Method apiclient.push.Subscription.__init__()=apiclient.push.Subscription-class.html#__init__,Method apiclient.push.WebhookChannel.__init__()=apiclient.push.WebhookChannel-class.html#__init__,Method apiclient.schema.Schemas.__init__()=apiclient.schema.Schemas-class.html#__init__,Method apiclient.schema._SchemaToStruct.__init__()=apiclient.schema._SchemaToStruct-class.html#__init__,Method oauth2client.appengine.AppAssertionCredentials.__init__()=oauth2client.appengine.AppAssertionCredentials-class.html#__init__,Method oauth2client.appengine.OAuth2Decorator.__init__()=oauth2client.appengine.OAuth2Decorator-class.html#__init__,Method oauth2client.appengine.OAuth2DecoratorFromClientSecrets.__init__()=oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html#__init__,Method oauth2client.appengine.StorageByKeyName.__init__()=oauth2client.appengine.StorageByKeyName-class.html#__init__,Method oauth2client.client.AccessTokenCredentials.__init__()=oauth2client.client.AccessTokenCredentials-class.html#__init__,Method oauth2client.client.AssertionCredentials.__init__()=oauth2client.client.AssertionCredentials-class.html#__init__,Method oauth2client.client.MemoryCache.__init__()=oauth2client.client.MemoryCache-class.html#__init__,Method oauth2client.client.OAuth2Credentials.__init__()=oauth2client.client.OAuth2Credentials-class.html#__init__,Method oauth2client.client.OAuth2WebServerFlow.__init__()=oauth2client.client.OAuth2WebServerFlow-class.html#__init__,Method oauth2client.client.SignedJwtAssertionCredentials.__init__()=oauth2client.client.SignedJwtAssertionCredentials-class.html#__init__,Method oauth2client.django_orm.CredentialsField.__init__()=oauth2client.django_orm.CredentialsField-class.html#__init__,Method oauth2client.django_orm.FlowField.__init__()=oauth2client.django_orm.FlowField-class.html#__init__,Method oauth2client.django_orm.Storage.__init__()=oauth2client.django_orm.Storage-class.html#__init__,Method oauth2client.file.Storage.__init__()=oauth2client.file.Storage-class.html#__init__,Method oauth2client.gce.AppAssertionCredentials.__init__()=oauth2client.gce.AppAssertionCredentials-class.html#__init__,Method oauth2client.keyring_storage.Storage.__init__()=oauth2client.keyring_storage.Storage-class.html#__init__,Method oauth2client.locked_file.LockedFile.__init__()=oauth2client.locked_file.LockedFile-class.html#__init__,Method oauth2client.locked_file._Opener.__init__()=oauth2client.locked_file._Opener-class.html#__init__,Method oauth2client.multistore_file._MultiStore._Storage.__init__()=oauth2client.multistore_file._MultiStore._Storage-class.html#__init__,Method oauth2client.multistore_file._MultiStore.__init__()=oauth2client.multistore_file._MultiStore-class.html#__init__"><a title="apiclient.discovery.Resource.__init__
+<a name="L790"></a><tt class="py-lineno"> 790</tt> <tt class="py-line"> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-124" class="py-name" targets="Class oauth2client.client.AccessTokenCredentials=oauth2client.client.AccessTokenCredentials-class.html"><a title="oauth2client.client.AccessTokenCredentials" class="py-name" href="#" onclick="return doclink('link-124', 'AccessTokenCredentials', 'link-124');">AccessTokenCredentials</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-125" class="py-name" targets="Method apiclient.channel.Channel.__init__()=apiclient.channel.Channel-class.html#__init__,Method apiclient.channel.Notification.__init__()=apiclient.channel.Notification-class.html#__init__,Method apiclient.discovery.Resource.__init__()=apiclient.discovery.Resource-class.html#__init__,Method apiclient.discovery.ResourceMethodParameters.__init__()=apiclient.discovery.ResourceMethodParameters-class.html#__init__,Method apiclient.errors.BatchError.__init__()=apiclient.errors.BatchError-class.html#__init__,Method apiclient.errors.HttpError.__init__()=apiclient.errors.HttpError-class.html#__init__,Method apiclient.errors.UnexpectedBodyError.__init__()=apiclient.errors.UnexpectedBodyError-class.html#__init__,Method apiclient.errors.UnexpectedMethodError.__init__()=apiclient.errors.UnexpectedMethodError-class.html#__init__,Method apiclient.http.BatchHttpRequest.__init__()=apiclient.http.BatchHttpRequest-class.html#__init__,Method apiclient.http.HttpMock.__init__()=apiclient.http.HttpMock-class.html#__init__,Method apiclient.http.HttpMockSequence.__init__()=apiclient.http.HttpMockSequence-class.html#__init__,Method apiclient.http.HttpRequest.__init__()=apiclient.http.HttpRequest-class.html#__init__,Method apiclient.http.HttpRequestMock.__init__()=apiclient.http.HttpRequestMock-class.html#__init__,Method apiclient.http.MediaDownloadProgress.__init__()=apiclient.http.MediaDownloadProgress-class.html#__init__,Method apiclient.http.MediaFileUpload.__init__()=apiclient.http.MediaFileUpload-class.html#__init__,Method apiclient.http.MediaInMemoryUpload.__init__()=apiclient.http.MediaInMemoryUpload-class.html#__init__,Method apiclient.http.MediaIoBaseDownload.__init__()=apiclient.http.MediaIoBaseDownload-class.html#__init__,Method apiclient.http.MediaIoBaseUpload.__init__()=apiclient.http.MediaIoBaseUpload-class.html#__init__,Method apiclient.http.MediaUploadProgress.__init__()=apiclient.http.MediaUploadProgress-class.html#__init__,Method apiclient.http.RequestMockBuilder.__init__()=apiclient.http.RequestMockBuilder-class.html#__init__,Method apiclient.http._StreamSlice.__init__()=apiclient.http._StreamSlice-class.html#__init__,Method apiclient.model.JsonModel.__init__()=apiclient.model.JsonModel-class.html#__init__,Method apiclient.model.ProtocolBufferModel.__init__()=apiclient.model.ProtocolBufferModel-class.html#__init__,Method apiclient.schema.Schemas.__init__()=apiclient.schema.Schemas-class.html#__init__,Method apiclient.schema._SchemaToStruct.__init__()=apiclient.schema._SchemaToStruct-class.html#__init__,Method oauth2client.appengine.AppAssertionCredentials.__init__()=oauth2client.appengine.AppAssertionCredentials-class.html#__init__,Method oauth2client.appengine.OAuth2Decorator.__init__()=oauth2client.appengine.OAuth2Decorator-class.html#__init__,Method oauth2client.appengine.OAuth2DecoratorFromClientSecrets.__init__()=oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html#__init__,Method oauth2client.appengine.StorageByKeyName.__init__()=oauth2client.appengine.StorageByKeyName-class.html#__init__,Method oauth2client.client.AccessTokenCredentials.__init__()=oauth2client.client.AccessTokenCredentials-class.html#__init__,Method oauth2client.client.AssertionCredentials.__init__()=oauth2client.client.AssertionCredentials-class.html#__init__,Method oauth2client.client.MemoryCache.__init__()=oauth2client.client.MemoryCache-class.html#__init__,Method oauth2client.client.OAuth2Credentials.__init__()=oauth2client.client.OAuth2Credentials-class.html#__init__,Method oauth2client.client.OAuth2WebServerFlow.__init__()=oauth2client.client.OAuth2WebServerFlow-class.html#__init__,Method oauth2client.client.SignedJwtAssertionCredentials.__init__()=oauth2client.client.SignedJwtAssertionCredentials-class.html#__init__,Method oauth2client.django_orm.CredentialsField.__init__()=oauth2client.django_orm.CredentialsField-class.html#__init__,Method oauth2client.django_orm.FlowField.__init__()=oauth2client.django_orm.FlowField-class.html#__init__,Method oauth2client.django_orm.Storage.__init__()=oauth2client.django_orm.Storage-class.html#__init__,Method oauth2client.file.Storage.__init__()=oauth2client.file.Storage-class.html#__init__,Method oauth2client.gce.AppAssertionCredentials.__init__()=oauth2client.gce.AppAssertionCredentials-class.html#__init__,Method oauth2client.keyring_storage.Storage.__init__()=oauth2client.keyring_storage.Storage-class.html#__init__,Method oauth2client.locked_file.LockedFile.__init__()=oauth2client.locked_file.LockedFile-class.html#__init__,Method oauth2client.locked_file._Opener.__init__()=oauth2client.locked_file._Opener-class.html#__init__,Method oauth2client.multistore_file._MultiStore._Storage.__init__()=oauth2client.multistore_file._MultiStore._Storage-class.html#__init__,Method oauth2client.multistore_file._MultiStore.__init__()=oauth2client.multistore_file._MultiStore-class.html#__init__"><a title="apiclient.channel.Channel.__init__
+apiclient.channel.Notification.__init__
+apiclient.discovery.Resource.__init__
apiclient.discovery.ResourceMethodParameters.__init__
apiclient.errors.BatchError.__init__
apiclient.errors.HttpError.__init__
@@ -1044,10 +1047,6 @@
apiclient.http._StreamSlice.__init__
apiclient.model.JsonModel.__init__
apiclient.model.ProtocolBufferModel.__init__
-apiclient.push.Channel.__init__
-apiclient.push.Headers.__init__
-apiclient.push.Subscription.__init__
-apiclient.push.WebhookChannel.__init__
apiclient.schema.Schemas.__init__
apiclient.schema._SchemaToStruct.__init__
oauth2client.appengine.AppAssertionCredentials.__init__
@@ -1069,7 +1068,7 @@
oauth2client.locked_file.LockedFile.__init__
oauth2client.locked_file._Opener.__init__
oauth2client.multistore_file._MultiStore._Storage.__init__
-oauth2client.multistore_file._MultiStore.__init__" class="py-name" href="#" onclick="return doclink('link-115', '__init__', 'link-115');">__init__</a></tt><tt class="py-op">(</tt> </tt>
+oauth2client.multistore_file._MultiStore.__init__" class="py-name" href="#" onclick="return doclink('link-125', '__init__', 'link-125');">__init__</a></tt><tt class="py-op">(</tt> </tt>
<a name="L791"></a><tt class="py-lineno"> 791</tt> <tt class="py-line"> <tt class="py-name">access_token</tt><tt class="py-op">,</tt> </tt>
<a name="L792"></a><tt class="py-lineno"> 792</tt> <tt class="py-line"> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
<a name="L793"></a><tt class="py-lineno"> 793</tt> <tt class="py-line"> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
@@ -1082,14 +1081,14 @@
<a name="L800"></a><tt class="py-lineno"> 800</tt> <tt class="py-line"> </tt>
<a name="L801"></a><tt class="py-lineno"> 801</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">classmethod</tt> </tt>
<a name="AccessTokenCredentials.from_json"></a><div id="AccessTokenCredentials.from_json-def"><a name="L802"></a><tt class="py-lineno"> 802</tt> <a class="py-toggle" href="#" id="AccessTokenCredentials.from_json-toggle" onclick="return toggle('AccessTokenCredentials.from_json');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.AccessTokenCredentials-class.html#from_json">from_json</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">,</tt> <tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="AccessTokenCredentials.from_json-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="AccessTokenCredentials.from_json-expanded"><a name="L803"></a><tt class="py-lineno"> 803</tt> <tt class="py-line"> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-116" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-116', 'loads', 'link-34');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
-<a name="L804"></a><tt class="py-lineno"> 804</tt> <tt class="py-line"> <tt class="py-name">retval</tt> <tt class="py-op">=</tt> <tt id="link-117" class="py-name"><a title="oauth2client.client.AccessTokenCredentials" class="py-name" href="#" onclick="return doclink('link-117', 'AccessTokenCredentials', 'link-114');">AccessTokenCredentials</a></tt><tt class="py-op">(</tt> </tt>
+</div><div id="AccessTokenCredentials.from_json-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="AccessTokenCredentials.from_json-expanded"><a name="L803"></a><tt class="py-lineno"> 803</tt> <tt class="py-line"> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-126" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-126', 'loads', 'link-34');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
+<a name="L804"></a><tt class="py-lineno"> 804</tt> <tt class="py-line"> <tt class="py-name">retval</tt> <tt class="py-op">=</tt> <tt id="link-127" class="py-name"><a title="oauth2client.client.AccessTokenCredentials" class="py-name" href="#" onclick="return doclink('link-127', 'AccessTokenCredentials', 'link-124');">AccessTokenCredentials</a></tt><tt class="py-op">(</tt> </tt>
<a name="L805"></a><tt class="py-lineno"> 805</tt> <tt class="py-line"> <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'access_token'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
<a name="L806"></a><tt class="py-lineno"> 806</tt> <tt class="py-line"> <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'user_agent'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
<a name="L807"></a><tt class="py-lineno"> 807</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">retval</tt> </tt>
</div><a name="L808"></a><tt class="py-lineno"> 808</tt> <tt class="py-line"> </tt>
<a name="AccessTokenCredentials._refresh"></a><div id="AccessTokenCredentials._refresh-def"><a name="L809"></a><tt class="py-lineno"> 809</tt> <a class="py-toggle" href="#" id="AccessTokenCredentials._refresh-toggle" onclick="return toggle('AccessTokenCredentials._refresh');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.AccessTokenCredentials-class.html#_refresh">_refresh</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http_request</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="AccessTokenCredentials._refresh-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="AccessTokenCredentials._refresh-expanded"><a name="L810"></a><tt class="py-lineno"> 810</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-118" class="py-name" targets="Class oauth2client.client.AccessTokenCredentialsError=oauth2client.client.AccessTokenCredentialsError-class.html"><a title="oauth2client.client.AccessTokenCredentialsError" class="py-name" href="#" onclick="return doclink('link-118', 'AccessTokenCredentialsError', 'link-118');">AccessTokenCredentialsError</a></tt><tt class="py-op">(</tt> </tt>
+</div><div id="AccessTokenCredentials._refresh-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="AccessTokenCredentials._refresh-expanded"><a name="L810"></a><tt class="py-lineno"> 810</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-128" class="py-name" targets="Class oauth2client.client.AccessTokenCredentialsError=oauth2client.client.AccessTokenCredentialsError-class.html"><a title="oauth2client.client.AccessTokenCredentialsError" class="py-name" href="#" onclick="return doclink('link-128', 'AccessTokenCredentialsError', 'link-128');">AccessTokenCredentialsError</a></tt><tt class="py-op">(</tt> </tt>
<a name="L811"></a><tt class="py-lineno"> 811</tt> <tt class="py-line"> <tt class="py-string">'The access_token is expired or invalid and can\'t be refreshed.'</tt><tt class="py-op">)</tt> </tt>
</div><a name="L812"></a><tt class="py-lineno"> 812</tt> <tt class="py-line"> </tt>
<a name="AccessTokenCredentials._revoke"></a><div id="AccessTokenCredentials._revoke-def"><a name="L813"></a><tt class="py-lineno"> 813</tt> <a class="py-toggle" href="#" id="AccessTokenCredentials._revoke-toggle" onclick="return toggle('AccessTokenCredentials._revoke');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.AccessTokenCredentials-class.html#_revoke">_revoke</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http_request</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
@@ -1099,7 +1098,7 @@
<a name="L817"></a><tt class="py-lineno"> 817</tt> <tt class="py-line"><tt class="py-docstring"> http_request: callable, a callable that matches the method signature of</tt> </tt>
<a name="L818"></a><tt class="py-lineno"> 818</tt> <tt class="py-line"><tt class="py-docstring"> httplib2.Http.request, used to make the revoke request.</tt> </tt>
<a name="L819"></a><tt class="py-lineno"> 819</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L820"></a><tt class="py-lineno"> 820</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-119" class="py-name"><a title="oauth2client.client.OAuth2Credentials._do_revoke" class="py-name" href="#" onclick="return doclink('link-119', '_do_revoke', 'link-106');">_do_revoke</a></tt><tt class="py-op">(</tt><tt class="py-name">http_request</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">access_token</tt><tt class="py-op">)</tt> </tt>
+<a name="L820"></a><tt class="py-lineno"> 820</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-129" class="py-name"><a title="oauth2client.client.OAuth2Credentials._do_revoke" class="py-name" href="#" onclick="return doclink('link-129', '_do_revoke', 'link-116');">_do_revoke</a></tt><tt class="py-op">(</tt><tt class="py-name">http_request</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">access_token</tt><tt class="py-op">)</tt> </tt>
</div></div><a name="L821"></a><tt class="py-lineno"> 821</tt> <tt class="py-line"> </tt>
<a name="AssertionCredentials"></a><div id="AssertionCredentials-def"><a name="L822"></a><tt class="py-lineno"> 822</tt> <tt class="py-line"> </tt>
<a name="L823"></a><tt class="py-lineno"> 823</tt> <a class="py-toggle" href="#" id="AssertionCredentials-toggle" onclick="return toggle('AssertionCredentials');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.client.AssertionCredentials-class.html">AssertionCredentials</a><tt class="py-op">(</tt><tt class="py-base-class">OAuth2Credentials</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
@@ -1113,10 +1112,10 @@
<a name="L831"></a><tt class="py-lineno"> 831</tt> <tt class="py-line"><tt class="py-docstring"> AssertionCredentials objects may be safely pickled and unpickled.</tt> </tt>
<a name="L832"></a><tt class="py-lineno"> 832</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
<a name="L833"></a><tt class="py-lineno"> 833</tt> <tt class="py-line"> </tt>
-<a name="L834"></a><tt class="py-lineno"> 834</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-120" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-120', 'positional', 'link-55');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="L834"></a><tt class="py-lineno"> 834</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-130" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-130', 'positional', 'link-56');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
<a name="AssertionCredentials.__init__"></a><div id="AssertionCredentials.__init__-def"><a name="L835"></a><tt class="py-lineno"> 835</tt> <a class="py-toggle" href="#" id="AssertionCredentials.__init__-toggle" onclick="return toggle('AssertionCredentials.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.AssertionCredentials-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">assertion_type</tt><tt class="py-op">,</tt> <tt class="py-param">user_agent</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L836"></a><tt class="py-lineno"> 836</tt> <tt class="py-line"> <tt class="py-param">token_uri</tt><tt class="py-op">=</tt><tt id="link-121" class="py-name"><a title="oauth2client.GOOGLE_TOKEN_URI" class="py-name" href="#" onclick="return doclink('link-121', 'GOOGLE_TOKEN_URI', 'link-6');">GOOGLE_TOKEN_URI</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L837"></a><tt class="py-lineno"> 837</tt> <tt class="py-line"> <tt class="py-param">revoke_uri</tt><tt class="py-op">=</tt><tt id="link-122" class="py-name"><a title="oauth2client.GOOGLE_REVOKE_URI" class="py-name" href="#" onclick="return doclink('link-122', 'GOOGLE_REVOKE_URI', 'link-4');">GOOGLE_REVOKE_URI</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L836"></a><tt class="py-lineno"> 836</tt> <tt class="py-line"> <tt class="py-param">token_uri</tt><tt class="py-op">=</tt><tt id="link-131" class="py-name"><a title="oauth2client.GOOGLE_TOKEN_URI" class="py-name" href="#" onclick="return doclink('link-131', 'GOOGLE_TOKEN_URI', 'link-6');">GOOGLE_TOKEN_URI</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L837"></a><tt class="py-lineno"> 837</tt> <tt class="py-line"> <tt class="py-param">revoke_uri</tt><tt class="py-op">=</tt><tt id="link-132" class="py-name"><a title="oauth2client.GOOGLE_REVOKE_URI" class="py-name" href="#" onclick="return doclink('link-132', 'GOOGLE_REVOKE_URI', 'link-4');">GOOGLE_REVOKE_URI</a></tt><tt class="py-op">,</tt> </tt>
<a name="L838"></a><tt class="py-lineno"> 838</tt> <tt class="py-line"> <tt class="py-op">**</tt><tt class="py-param">unused_kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="AssertionCredentials.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="AssertionCredentials.__init__-expanded"><a name="L839"></a><tt class="py-lineno"> 839</tt> <tt class="py-line"> <tt class="py-docstring">"""Constructor for AssertionFlowCredentials.</tt> </tt>
<a name="L840"></a><tt class="py-lineno"> 840</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
@@ -1128,7 +1127,9 @@
<a name="L846"></a><tt class="py-lineno"> 846</tt> <tt class="py-line"><tt class="py-docstring"> defaults to Google's endpoints but any OAuth 2.0 provider can be used.</tt> </tt>
<a name="L847"></a><tt class="py-lineno"> 847</tt> <tt class="py-line"><tt class="py-docstring"> revoke_uri: string, URI for revoke endpoint.</tt> </tt>
<a name="L848"></a><tt class="py-lineno"> 848</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L849"></a><tt class="py-lineno"> 849</tt> <tt class="py-line"> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-123" class="py-name" targets="Class oauth2client.client.AssertionCredentials=oauth2client.client.AssertionCredentials-class.html"><a title="oauth2client.client.AssertionCredentials" class="py-name" href="#" onclick="return doclink('link-123', 'AssertionCredentials', 'link-123');">AssertionCredentials</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-124" class="py-name"><a title="apiclient.discovery.Resource.__init__
+<a name="L849"></a><tt class="py-lineno"> 849</tt> <tt class="py-line"> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-133" class="py-name" targets="Class oauth2client.client.AssertionCredentials=oauth2client.client.AssertionCredentials-class.html"><a title="oauth2client.client.AssertionCredentials" class="py-name" href="#" onclick="return doclink('link-133', 'AssertionCredentials', 'link-133');">AssertionCredentials</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-134" class="py-name"><a title="apiclient.channel.Channel.__init__
+apiclient.channel.Notification.__init__
+apiclient.discovery.Resource.__init__
apiclient.discovery.ResourceMethodParameters.__init__
apiclient.errors.BatchError.__init__
apiclient.errors.HttpError.__init__
@@ -1149,10 +1150,6 @@
apiclient.http._StreamSlice.__init__
apiclient.model.JsonModel.__init__
apiclient.model.ProtocolBufferModel.__init__
-apiclient.push.Channel.__init__
-apiclient.push.Headers.__init__
-apiclient.push.Subscription.__init__
-apiclient.push.WebhookChannel.__init__
apiclient.schema.Schemas.__init__
apiclient.schema._SchemaToStruct.__init__
oauth2client.appengine.AppAssertionCredentials.__init__
@@ -1174,7 +1171,7 @@
oauth2client.locked_file.LockedFile.__init__
oauth2client.locked_file._Opener.__init__
oauth2client.multistore_file._MultiStore._Storage.__init__
-oauth2client.multistore_file._MultiStore.__init__" class="py-name" href="#" onclick="return doclink('link-124', '__init__', 'link-115');">__init__</a></tt><tt class="py-op">(</tt> </tt>
+oauth2client.multistore_file._MultiStore.__init__" class="py-name" href="#" onclick="return doclink('link-134', '__init__', 'link-125');">__init__</a></tt><tt class="py-op">(</tt> </tt>
<a name="L850"></a><tt class="py-lineno"> 850</tt> <tt class="py-line"> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
<a name="L851"></a><tt class="py-lineno"> 851</tt> <tt class="py-line"> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
<a name="L852"></a><tt class="py-lineno"> 852</tt> <tt class="py-line"> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
@@ -1186,22 +1183,22 @@
<a name="L858"></a><tt class="py-lineno"> 858</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertion_type</tt> <tt class="py-op">=</tt> <tt class="py-name">assertion_type</tt> </tt>
</div><a name="L859"></a><tt class="py-lineno"> 859</tt> <tt class="py-line"> </tt>
<a name="AssertionCredentials._generate_refresh_request_body"></a><div id="AssertionCredentials._generate_refresh_request_body-def"><a name="L860"></a><tt class="py-lineno"> 860</tt> <a class="py-toggle" href="#" id="AssertionCredentials._generate_refresh_request_body-toggle" onclick="return toggle('AssertionCredentials._generate_refresh_request_body');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.AssertionCredentials-class.html#_generate_refresh_request_body">_generate_refresh_request_body</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="AssertionCredentials._generate_refresh_request_body-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="AssertionCredentials._generate_refresh_request_body-expanded"><a name="L861"></a><tt class="py-lineno"> 861</tt> <tt class="py-line"> <tt class="py-name">assertion</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-125" class="py-name" targets="Method oauth2client.client.AssertionCredentials._generate_assertion()=oauth2client.client.AssertionCredentials-class.html#_generate_assertion,Method oauth2client.client.SignedJwtAssertionCredentials._generate_assertion()=oauth2client.client.SignedJwtAssertionCredentials-class.html#_generate_assertion"><a title="oauth2client.client.AssertionCredentials._generate_assertion
-oauth2client.client.SignedJwtAssertionCredentials._generate_assertion" class="py-name" href="#" onclick="return doclink('link-125', '_generate_assertion', 'link-125');">_generate_assertion</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><div id="AssertionCredentials._generate_refresh_request_body-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="AssertionCredentials._generate_refresh_request_body-expanded"><a name="L861"></a><tt class="py-lineno"> 861</tt> <tt class="py-line"> <tt class="py-name">assertion</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-135" class="py-name" targets="Method oauth2client.client.AssertionCredentials._generate_assertion()=oauth2client.client.AssertionCredentials-class.html#_generate_assertion,Method oauth2client.client.SignedJwtAssertionCredentials._generate_assertion()=oauth2client.client.SignedJwtAssertionCredentials-class.html#_generate_assertion"><a title="oauth2client.client.AssertionCredentials._generate_assertion
+oauth2client.client.SignedJwtAssertionCredentials._generate_assertion" class="py-name" href="#" onclick="return doclink('link-135', '_generate_assertion', 'link-135');">_generate_assertion</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L862"></a><tt class="py-lineno"> 862</tt> <tt class="py-line"> </tt>
-<a name="L863"></a><tt class="py-lineno"> 863</tt> <tt class="py-line"> <tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">urlencode</tt><tt class="py-op">(</tt><tt class="py-op">{</tt> </tt>
+<a name="L863"></a><tt class="py-lineno"> 863</tt> <tt class="py-line"> <tt id="link-136" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-136', 'body', 'link-63');">body</a></tt> <tt class="py-op">=</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">urlencode</tt><tt class="py-op">(</tt><tt class="py-op">{</tt> </tt>
<a name="L864"></a><tt class="py-lineno"> 864</tt> <tt class="py-line"> <tt class="py-string">'assertion'</tt><tt class="py-op">:</tt> <tt class="py-name">assertion</tt><tt class="py-op">,</tt> </tt>
<a name="L865"></a><tt class="py-lineno"> 865</tt> <tt class="py-line"> <tt class="py-string">'grant_type'</tt><tt class="py-op">:</tt> <tt class="py-string">'urn:ietf:params:oauth:grant-type:jwt-bearer'</tt><tt class="py-op">,</tt> </tt>
<a name="L866"></a><tt class="py-lineno"> 866</tt> <tt class="py-line"> <tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
<a name="L867"></a><tt class="py-lineno"> 867</tt> <tt class="py-line"> </tt>
-<a name="L868"></a><tt class="py-lineno"> 868</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">body</tt> </tt>
+<a name="L868"></a><tt class="py-lineno"> 868</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-137" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-137', 'body', 'link-63');">body</a></tt> </tt>
</div><a name="L869"></a><tt class="py-lineno"> 869</tt> <tt class="py-line"> </tt>
<a name="AssertionCredentials._generate_assertion"></a><div id="AssertionCredentials._generate_assertion-def"><a name="L870"></a><tt class="py-lineno"> 870</tt> <a class="py-toggle" href="#" id="AssertionCredentials._generate_assertion-toggle" onclick="return toggle('AssertionCredentials._generate_assertion');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.AssertionCredentials-class.html#_generate_assertion">_generate_assertion</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="AssertionCredentials._generate_assertion-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="AssertionCredentials._generate_assertion-expanded"><a name="L871"></a><tt class="py-lineno"> 871</tt> <tt class="py-line"> <tt class="py-docstring">"""Generate the assertion string that will be used in the access token</tt> </tt>
<a name="L872"></a><tt class="py-lineno"> 872</tt> <tt class="py-line"><tt class="py-docstring"> request.</tt> </tt>
<a name="L873"></a><tt class="py-lineno"> 873</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L874"></a><tt class="py-lineno"> 874</tt> <tt class="py-line"> <tt id="link-126" class="py-name"><a title="apiclient.model._abstract
-oauth2client.client._abstract" class="py-name" href="#" onclick="return doclink('link-126', '_abstract', 'link-26');">_abstract</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L874"></a><tt class="py-lineno"> 874</tt> <tt class="py-line"> <tt id="link-138" class="py-name"><a title="apiclient.model._abstract
+oauth2client.client._abstract" class="py-name" href="#" onclick="return doclink('link-138', '_abstract', 'link-26');">_abstract</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
</div><a name="L875"></a><tt class="py-lineno"> 875</tt> <tt class="py-line"> </tt>
<a name="AssertionCredentials._revoke"></a><div id="AssertionCredentials._revoke-def"><a name="L876"></a><tt class="py-lineno"> 876</tt> <a class="py-toggle" href="#" id="AssertionCredentials._revoke-toggle" onclick="return toggle('AssertionCredentials._revoke');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.AssertionCredentials-class.html#_revoke">_revoke</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">http_request</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="AssertionCredentials._revoke-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="AssertionCredentials._revoke-expanded"><a name="L877"></a><tt class="py-lineno"> 877</tt> <tt class="py-line"> <tt class="py-docstring">"""Revokes the access_token and deletes the store if available.</tt> </tt>
@@ -1210,10 +1207,10 @@
<a name="L880"></a><tt class="py-lineno"> 880</tt> <tt class="py-line"><tt class="py-docstring"> http_request: callable, a callable that matches the method signature of</tt> </tt>
<a name="L881"></a><tt class="py-lineno"> 881</tt> <tt class="py-line"><tt class="py-docstring"> httplib2.Http.request, used to make the revoke request.</tt> </tt>
<a name="L882"></a><tt class="py-lineno"> 882</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L883"></a><tt class="py-lineno"> 883</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-127" class="py-name"><a title="oauth2client.client.OAuth2Credentials._do_revoke" class="py-name" href="#" onclick="return doclink('link-127', '_do_revoke', 'link-106');">_do_revoke</a></tt><tt class="py-op">(</tt><tt class="py-name">http_request</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">access_token</tt><tt class="py-op">)</tt> </tt>
+<a name="L883"></a><tt class="py-lineno"> 883</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-139" class="py-name"><a title="oauth2client.client.OAuth2Credentials._do_revoke" class="py-name" href="#" onclick="return doclink('link-139', '_do_revoke', 'link-116');">_do_revoke</a></tt><tt class="py-op">(</tt><tt class="py-name">http_request</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">access_token</tt><tt class="py-op">)</tt> </tt>
</div></div><a name="L884"></a><tt class="py-lineno"> 884</tt> <tt class="py-line"> </tt>
<a name="L885"></a><tt class="py-lineno"> 885</tt> <tt class="py-line"> </tt>
-<a name="L886"></a><tt class="py-lineno"> 886</tt> <tt class="py-line"><tt class="py-keyword">if</tt> <tt id="link-128" class="py-name"><a title="oauth2client.client.HAS_CRYPTO" class="py-name" href="#" onclick="return doclink('link-128', 'HAS_CRYPTO', 'link-12');">HAS_CRYPTO</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L886"></a><tt class="py-lineno"> 886</tt> <tt class="py-line"><tt class="py-keyword">if</tt> <tt id="link-140" class="py-name"><a title="oauth2client.client.HAS_CRYPTO" class="py-name" href="#" onclick="return doclink('link-140', 'HAS_CRYPTO', 'link-12');">HAS_CRYPTO</a></tt><tt class="py-op">:</tt> </tt>
<a name="SignedJwtAssertionCredentials"></a><div id="SignedJwtAssertionCredentials-def"><a name="L887"></a><tt class="py-lineno"> 887</tt> <tt class="py-line"> <tt class="py-comment"># PyOpenSSL and PyCrypto are not prerequisites for oauth2client, so if it is</tt> </tt>
<a name="L888"></a><tt class="py-lineno"> 888</tt> <tt class="py-line"> <tt class="py-comment"># missing then don't create the SignedJwtAssertionCredentials or the</tt> </tt>
<a name="L889"></a><tt class="py-lineno"> 889</tt> <tt class="py-line"> <tt class="py-comment"># verify_id_token() method.</tt> </tt>
@@ -1229,18 +1226,18 @@
<a name="L899"></a><tt class="py-lineno"> 899</tt> <tt class="py-line"><tt class="py-docstring"> later. For App Engine you may also consider using AppAssertionCredentials.</tt> </tt>
<a name="L900"></a><tt class="py-lineno"> 900</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
<a name="L901"></a><tt class="py-lineno"> 901</tt> <tt class="py-line"> </tt>
-<a name="L902"></a><tt class="py-lineno"> 902</tt> <tt class="py-line"> <tt id="link-129" class="py-name" targets="Variable oauth2client.client.SignedJwtAssertionCredentials.MAX_TOKEN_LIFETIME_SECS=oauth2client.client.SignedJwtAssertionCredentials-class.html#MAX_TOKEN_LIFETIME_SECS,Variable oauth2client.crypt.MAX_TOKEN_LIFETIME_SECS=oauth2client.crypt-module.html#MAX_TOKEN_LIFETIME_SECS"><a title="oauth2client.client.SignedJwtAssertionCredentials.MAX_TOKEN_LIFETIME_SECS
-oauth2client.crypt.MAX_TOKEN_LIFETIME_SECS" class="py-name" href="#" onclick="return doclink('link-129', 'MAX_TOKEN_LIFETIME_SECS', 'link-129');">MAX_TOKEN_LIFETIME_SECS</a></tt> <tt class="py-op">=</tt> <tt class="py-number">3600</tt> <tt class="py-comment"># 1 hour in seconds</tt> </tt>
+<a name="L902"></a><tt class="py-lineno"> 902</tt> <tt class="py-line"> <tt id="link-141" class="py-name" targets="Variable oauth2client.client.SignedJwtAssertionCredentials.MAX_TOKEN_LIFETIME_SECS=oauth2client.client.SignedJwtAssertionCredentials-class.html#MAX_TOKEN_LIFETIME_SECS,Variable oauth2client.crypt.MAX_TOKEN_LIFETIME_SECS=oauth2client.crypt-module.html#MAX_TOKEN_LIFETIME_SECS"><a title="oauth2client.client.SignedJwtAssertionCredentials.MAX_TOKEN_LIFETIME_SECS
+oauth2client.crypt.MAX_TOKEN_LIFETIME_SECS" class="py-name" href="#" onclick="return doclink('link-141', 'MAX_TOKEN_LIFETIME_SECS', 'link-141');">MAX_TOKEN_LIFETIME_SECS</a></tt> <tt class="py-op">=</tt> <tt class="py-number">3600</tt> <tt class="py-comment"># 1 hour in seconds</tt> </tt>
<a name="L903"></a><tt class="py-lineno"> 903</tt> <tt class="py-line"> </tt>
-<a name="L904"></a><tt class="py-lineno"> 904</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-130" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-130', 'positional', 'link-55');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">4</tt><tt class="py-op">)</tt> </tt>
+<a name="L904"></a><tt class="py-lineno"> 904</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-142" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-142', 'positional', 'link-56');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">4</tt><tt class="py-op">)</tt> </tt>
<a name="SignedJwtAssertionCredentials.__init__"></a><div id="SignedJwtAssertionCredentials.__init__-def"><a name="L905"></a><tt class="py-lineno"> 905</tt> <a class="py-toggle" href="#" id="SignedJwtAssertionCredentials.__init__-toggle" onclick="return toggle('SignedJwtAssertionCredentials.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.SignedJwtAssertionCredentials-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> </tt>
<a name="L906"></a><tt class="py-lineno"> 906</tt> <tt class="py-line"> <tt class="py-param">service_account_name</tt><tt class="py-op">,</tt> </tt>
<a name="L907"></a><tt class="py-lineno"> 907</tt> <tt class="py-line"> <tt class="py-param">private_key</tt><tt class="py-op">,</tt> </tt>
<a name="L908"></a><tt class="py-lineno"> 908</tt> <tt class="py-line"> <tt class="py-param">scope</tt><tt class="py-op">,</tt> </tt>
<a name="L909"></a><tt class="py-lineno"> 909</tt> <tt class="py-line"> <tt class="py-param">private_key_password</tt><tt class="py-op">=</tt><tt class="py-string">'notasecret'</tt><tt class="py-op">,</tt> </tt>
<a name="L910"></a><tt class="py-lineno"> 910</tt> <tt class="py-line"> <tt class="py-param">user_agent</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L911"></a><tt class="py-lineno"> 911</tt> <tt class="py-line"> <tt class="py-param">token_uri</tt><tt class="py-op">=</tt><tt id="link-131" class="py-name"><a title="oauth2client.GOOGLE_TOKEN_URI" class="py-name" href="#" onclick="return doclink('link-131', 'GOOGLE_TOKEN_URI', 'link-6');">GOOGLE_TOKEN_URI</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L912"></a><tt class="py-lineno"> 912</tt> <tt class="py-line"> <tt class="py-param">revoke_uri</tt><tt class="py-op">=</tt><tt id="link-132" class="py-name"><a title="oauth2client.GOOGLE_REVOKE_URI" class="py-name" href="#" onclick="return doclink('link-132', 'GOOGLE_REVOKE_URI', 'link-4');">GOOGLE_REVOKE_URI</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L911"></a><tt class="py-lineno"> 911</tt> <tt class="py-line"> <tt class="py-param">token_uri</tt><tt class="py-op">=</tt><tt id="link-143" class="py-name"><a title="oauth2client.GOOGLE_TOKEN_URI" class="py-name" href="#" onclick="return doclink('link-143', 'GOOGLE_TOKEN_URI', 'link-6');">GOOGLE_TOKEN_URI</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L912"></a><tt class="py-lineno"> 912</tt> <tt class="py-line"> <tt class="py-param">revoke_uri</tt><tt class="py-op">=</tt><tt id="link-144" class="py-name"><a title="oauth2client.GOOGLE_REVOKE_URI" class="py-name" href="#" onclick="return doclink('link-144', 'GOOGLE_REVOKE_URI', 'link-4');">GOOGLE_REVOKE_URI</a></tt><tt class="py-op">,</tt> </tt>
<a name="L913"></a><tt class="py-lineno"> 913</tt> <tt class="py-line"> <tt class="py-op">**</tt><tt class="py-param">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="SignedJwtAssertionCredentials.__init__-collapsed" style="display:none;" pad="++++" indent="++++++++++"></div><div id="SignedJwtAssertionCredentials.__init__-expanded"><a name="L914"></a><tt class="py-lineno"> 914</tt> <tt class="py-line"> <tt class="py-docstring">"""Constructor for SignedJwtAssertionCredentials.</tt> </tt>
<a name="L915"></a><tt class="py-lineno"> 915</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
@@ -1256,9 +1253,11 @@
<a name="L925"></a><tt class="py-lineno"> 925</tt> <tt class="py-line"><tt class="py-docstring"> defaults to Google's endpoints but any OAuth 2.0 provider can be used.</tt> </tt>
<a name="L926"></a><tt class="py-lineno"> 926</tt> <tt class="py-line"><tt class="py-docstring"> revoke_uri: string, URI for revoke endpoint.</tt> </tt>
<a name="L927"></a><tt class="py-lineno"> 927</tt> <tt class="py-line"><tt class="py-docstring"> kwargs: kwargs, Additional parameters to add to the JWT token, for</tt> </tt>
-<a name="L928"></a><tt class="py-lineno"> 928</tt> <tt class="py-line"><tt class="py-docstring"> example prn=joe@xample.org."""</tt> </tt>
+<a name="L928"></a><tt class="py-lineno"> 928</tt> <tt class="py-line"><tt class="py-docstring"> example sub=joe@xample.org."""</tt> </tt>
<a name="L929"></a><tt class="py-lineno"> 929</tt> <tt class="py-line"> </tt>
-<a name="L930"></a><tt class="py-lineno"> 930</tt> <tt class="py-line"> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-133" class="py-name" targets="Class oauth2client.client.SignedJwtAssertionCredentials=oauth2client.client.SignedJwtAssertionCredentials-class.html"><a title="oauth2client.client.SignedJwtAssertionCredentials" class="py-name" href="#" onclick="return doclink('link-133', 'SignedJwtAssertionCredentials', 'link-133');">SignedJwtAssertionCredentials</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-134" class="py-name"><a title="apiclient.discovery.Resource.__init__
+<a name="L930"></a><tt class="py-lineno"> 930</tt> <tt class="py-line"> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-145" class="py-name" targets="Class oauth2client.client.SignedJwtAssertionCredentials=oauth2client.client.SignedJwtAssertionCredentials-class.html"><a title="oauth2client.client.SignedJwtAssertionCredentials" class="py-name" href="#" onclick="return doclink('link-145', 'SignedJwtAssertionCredentials', 'link-145');">SignedJwtAssertionCredentials</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-146" class="py-name"><a title="apiclient.channel.Channel.__init__
+apiclient.channel.Notification.__init__
+apiclient.discovery.Resource.__init__
apiclient.discovery.ResourceMethodParameters.__init__
apiclient.errors.BatchError.__init__
apiclient.errors.HttpError.__init__
@@ -1279,10 +1278,6 @@
apiclient.http._StreamSlice.__init__
apiclient.model.JsonModel.__init__
apiclient.model.ProtocolBufferModel.__init__
-apiclient.push.Channel.__init__
-apiclient.push.Headers.__init__
-apiclient.push.Subscription.__init__
-apiclient.push.WebhookChannel.__init__
apiclient.schema.Schemas.__init__
apiclient.schema._SchemaToStruct.__init__
oauth2client.appengine.AppAssertionCredentials.__init__
@@ -1304,14 +1299,14 @@
oauth2client.locked_file.LockedFile.__init__
oauth2client.locked_file._Opener.__init__
oauth2client.multistore_file._MultiStore._Storage.__init__
-oauth2client.multistore_file._MultiStore.__init__" class="py-name" href="#" onclick="return doclink('link-134', '__init__', 'link-115');">__init__</a></tt><tt class="py-op">(</tt> </tt>
+oauth2client.multistore_file._MultiStore.__init__" class="py-name" href="#" onclick="return doclink('link-146', '__init__', 'link-125');">__init__</a></tt><tt class="py-op">(</tt> </tt>
<a name="L931"></a><tt class="py-lineno"> 931</tt> <tt class="py-line"> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
<a name="L932"></a><tt class="py-lineno"> 932</tt> <tt class="py-line"> <tt class="py-name">user_agent</tt><tt class="py-op">=</tt><tt class="py-name">user_agent</tt><tt class="py-op">,</tt> </tt>
<a name="L933"></a><tt class="py-lineno"> 933</tt> <tt class="py-line"> <tt class="py-name">token_uri</tt><tt class="py-op">=</tt><tt class="py-name">token_uri</tt><tt class="py-op">,</tt> </tt>
<a name="L934"></a><tt class="py-lineno"> 934</tt> <tt class="py-line"> <tt class="py-name">revoke_uri</tt><tt class="py-op">=</tt><tt class="py-name">revoke_uri</tt><tt class="py-op">,</tt> </tt>
<a name="L935"></a><tt class="py-lineno"> 935</tt> <tt class="py-line"> <tt class="py-op">)</tt> </tt>
<a name="L936"></a><tt class="py-lineno"> 936</tt> <tt class="py-line"> </tt>
-<a name="L937"></a><tt class="py-lineno"> 937</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">scope</tt> <tt class="py-op">=</tt> <tt id="link-135" class="py-name"><a title="oauth2client.util" class="py-name" href="#" onclick="return doclink('link-135', 'util', 'link-8');">util</a></tt><tt class="py-op">.</tt><tt id="link-136" class="py-name" targets="Function oauth2client.util.scopes_to_string()=oauth2client.util-module.html#scopes_to_string"><a title="oauth2client.util.scopes_to_string" class="py-name" href="#" onclick="return doclink('link-136', 'scopes_to_string', 'link-136');">scopes_to_string</a></tt><tt class="py-op">(</tt><tt class="py-name">scope</tt><tt class="py-op">)</tt> </tt>
+<a name="L937"></a><tt class="py-lineno"> 937</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">scope</tt> <tt class="py-op">=</tt> <tt id="link-147" class="py-name"><a title="oauth2client.util" class="py-name" href="#" onclick="return doclink('link-147', 'util', 'link-8');">util</a></tt><tt class="py-op">.</tt><tt id="link-148" class="py-name" targets="Function oauth2client.util.scopes_to_string()=oauth2client.util-module.html#scopes_to_string"><a title="oauth2client.util.scopes_to_string" class="py-name" href="#" onclick="return doclink('link-148', 'scopes_to_string', 'link-148');">scopes_to_string</a></tt><tt class="py-op">(</tt><tt class="py-name">scope</tt><tt class="py-op">)</tt> </tt>
<a name="L938"></a><tt class="py-lineno"> 938</tt> <tt class="py-line"> </tt>
<a name="L939"></a><tt class="py-lineno"> 939</tt> <tt class="py-line"> <tt class="py-comment"># Keep base64 encoded so it can be stored in JSON.</tt> </tt>
<a name="L940"></a><tt class="py-lineno"> 940</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">private_key</tt> <tt class="py-op">=</tt> <tt class="py-name">base64</tt><tt class="py-op">.</tt><tt class="py-name">b64encode</tt><tt class="py-op">(</tt><tt class="py-name">private_key</tt><tt class="py-op">)</tt> </tt>
@@ -1322,8 +1317,8 @@
</div><a name="L945"></a><tt class="py-lineno"> 945</tt> <tt class="py-line"> </tt>
<a name="L946"></a><tt class="py-lineno"> 946</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">classmethod</tt> </tt>
<a name="SignedJwtAssertionCredentials.from_json"></a><div id="SignedJwtAssertionCredentials.from_json-def"><a name="L947"></a><tt class="py-lineno"> 947</tt> <a class="py-toggle" href="#" id="SignedJwtAssertionCredentials.from_json-toggle" onclick="return toggle('SignedJwtAssertionCredentials.from_json');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.SignedJwtAssertionCredentials-class.html#from_json">from_json</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">,</tt> <tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="SignedJwtAssertionCredentials.from_json-collapsed" style="display:none;" pad="++++" indent="++++++++++"></div><div id="SignedJwtAssertionCredentials.from_json-expanded"><a name="L948"></a><tt class="py-lineno"> 948</tt> <tt class="py-line"> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-137" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-137', 'loads', 'link-34');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
-<a name="L949"></a><tt class="py-lineno"> 949</tt> <tt class="py-line"> <tt class="py-name">retval</tt> <tt class="py-op">=</tt> <tt id="link-138" class="py-name"><a title="oauth2client.client.SignedJwtAssertionCredentials" class="py-name" href="#" onclick="return doclink('link-138', 'SignedJwtAssertionCredentials', 'link-133');">SignedJwtAssertionCredentials</a></tt><tt class="py-op">(</tt> </tt>
+</div><div id="SignedJwtAssertionCredentials.from_json-collapsed" style="display:none;" pad="++++" indent="++++++++++"></div><div id="SignedJwtAssertionCredentials.from_json-expanded"><a name="L948"></a><tt class="py-lineno"> 948</tt> <tt class="py-line"> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-149" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-149', 'loads', 'link-34');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">s</tt><tt class="py-op">)</tt> </tt>
+<a name="L949"></a><tt class="py-lineno"> 949</tt> <tt class="py-line"> <tt class="py-name">retval</tt> <tt class="py-op">=</tt> <tt id="link-150" class="py-name"><a title="oauth2client.client.SignedJwtAssertionCredentials" class="py-name" href="#" onclick="return doclink('link-150', 'SignedJwtAssertionCredentials', 'link-145');">SignedJwtAssertionCredentials</a></tt><tt class="py-op">(</tt> </tt>
<a name="L950"></a><tt class="py-lineno"> 950</tt> <tt class="py-line"> <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'service_account_name'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
<a name="L951"></a><tt class="py-lineno"> 951</tt> <tt class="py-line"> <tt class="py-name">base64</tt><tt class="py-op">.</tt><tt class="py-name">b64decode</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'private_key'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
<a name="L952"></a><tt class="py-lineno"> 952</tt> <tt class="py-line"> <tt class="py-name">data</tt><tt class="py-op">[</tt><tt class="py-string">'scope'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
@@ -1343,31 +1338,31 @@
<a name="L966"></a><tt class="py-lineno"> 966</tt> <tt class="py-line"> <tt class="py-string">'aud'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">token_uri</tt><tt class="py-op">,</tt> </tt>
<a name="L967"></a><tt class="py-lineno"> 967</tt> <tt class="py-line"> <tt class="py-string">'scope'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">scope</tt><tt class="py-op">,</tt> </tt>
<a name="L968"></a><tt class="py-lineno"> 968</tt> <tt class="py-line"> <tt class="py-string">'iat'</tt><tt class="py-op">:</tt> <tt class="py-name">now</tt><tt class="py-op">,</tt> </tt>
-<a name="L969"></a><tt class="py-lineno"> 969</tt> <tt class="py-line"> <tt class="py-string">'exp'</tt><tt class="py-op">:</tt> <tt class="py-name">now</tt> <tt class="py-op">+</tt> <tt id="link-139" class="py-name"><a title="oauth2client.client.SignedJwtAssertionCredentials" class="py-name" href="#" onclick="return doclink('link-139', 'SignedJwtAssertionCredentials', 'link-133');">SignedJwtAssertionCredentials</a></tt><tt class="py-op">.</tt><tt id="link-140" class="py-name"><a title="oauth2client.client.SignedJwtAssertionCredentials.MAX_TOKEN_LIFETIME_SECS
-oauth2client.crypt.MAX_TOKEN_LIFETIME_SECS" class="py-name" href="#" onclick="return doclink('link-140', 'MAX_TOKEN_LIFETIME_SECS', 'link-129');">MAX_TOKEN_LIFETIME_SECS</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L969"></a><tt class="py-lineno"> 969</tt> <tt class="py-line"> <tt class="py-string">'exp'</tt><tt class="py-op">:</tt> <tt class="py-name">now</tt> <tt class="py-op">+</tt> <tt id="link-151" class="py-name"><a title="oauth2client.client.SignedJwtAssertionCredentials" class="py-name" href="#" onclick="return doclink('link-151', 'SignedJwtAssertionCredentials', 'link-145');">SignedJwtAssertionCredentials</a></tt><tt class="py-op">.</tt><tt id="link-152" class="py-name"><a title="oauth2client.client.SignedJwtAssertionCredentials.MAX_TOKEN_LIFETIME_SECS
+oauth2client.crypt.MAX_TOKEN_LIFETIME_SECS" class="py-name" href="#" onclick="return doclink('link-152', 'MAX_TOKEN_LIFETIME_SECS', 'link-141');">MAX_TOKEN_LIFETIME_SECS</a></tt><tt class="py-op">,</tt> </tt>
<a name="L970"></a><tt class="py-lineno"> 970</tt> <tt class="py-line"> <tt class="py-string">'iss'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">service_account_name</tt> </tt>
<a name="L971"></a><tt class="py-lineno"> 971</tt> <tt class="py-line"> <tt class="py-op">}</tt> </tt>
-<a name="L972"></a><tt class="py-lineno"> 972</tt> <tt class="py-line"> <tt class="py-name">payload</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">kwargs</tt><tt class="py-op">)</tt> </tt>
-<a name="L973"></a><tt class="py-lineno"> 973</tt> <tt class="py-line"> <tt id="link-141" class="py-name"><a title="apiclient.discovery.logger
+<a name="L972"></a><tt class="py-lineno"> 972</tt> <tt class="py-line"> <tt class="py-name">payload</tt><tt class="py-op">.</tt><tt id="link-153" class="py-name"><a title="apiclient.channel.Channel.update" class="py-name" href="#" onclick="return doclink('link-153', 'update', 'link-54');">update</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">kwargs</tt><tt class="py-op">)</tt> </tt>
+<a name="L973"></a><tt class="py-lineno"> 973</tt> <tt class="py-line"> <tt id="link-154" class="py-name"><a title="apiclient.discovery.logger
oauth2client.appengine.logger
oauth2client.client.logger
oauth2client.crypt.logger
oauth2client.gce.logger
oauth2client.locked_file.logger
oauth2client.multistore_file.logger
-oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-141', 'logger', 'link-19');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">payload</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-154', 'logger', 'link-19');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">payload</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L974"></a><tt class="py-lineno"> 974</tt> <tt class="py-line"> </tt>
<a name="L975"></a><tt class="py-lineno"> 975</tt> <tt class="py-line"> <tt class="py-name">private_key</tt> <tt class="py-op">=</tt> <tt class="py-name">base64</tt><tt class="py-op">.</tt><tt class="py-name">b64decode</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">private_key</tt><tt class="py-op">)</tt> </tt>
-<a name="L976"></a><tt class="py-lineno"> 976</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-142" class="py-name"><a title="oauth2client.crypt" class="py-name" href="#" onclick="return doclink('link-142', 'crypt', 'link-14');">crypt</a></tt><tt class="py-op">.</tt><tt id="link-143" class="py-name" targets="Function oauth2client.crypt.make_signed_jwt()=oauth2client.crypt-module.html#make_signed_jwt"><a title="oauth2client.crypt.make_signed_jwt" class="py-name" href="#" onclick="return doclink('link-143', 'make_signed_jwt', 'link-143');">make_signed_jwt</a></tt><tt class="py-op">(</tt><tt id="link-144" class="py-name"><a title="oauth2client.crypt" class="py-name" href="#" onclick="return doclink('link-144', 'crypt', 'link-14');">crypt</a></tt><tt class="py-op">.</tt><tt id="link-145" class="py-name" targets="Variable oauth2client.crypt.Signer=oauth2client.crypt-module.html#Signer"><a title="oauth2client.crypt.Signer" class="py-name" href="#" onclick="return doclink('link-145', 'Signer', 'link-145');">Signer</a></tt><tt class="py-op">.</tt><tt class="py-name">from_string</tt><tt class="py-op">(</tt> </tt>
+<a name="L976"></a><tt class="py-lineno"> 976</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-155" class="py-name"><a title="oauth2client.crypt" class="py-name" href="#" onclick="return doclink('link-155', 'crypt', 'link-14');">crypt</a></tt><tt class="py-op">.</tt><tt id="link-156" class="py-name" targets="Function oauth2client.crypt.make_signed_jwt()=oauth2client.crypt-module.html#make_signed_jwt"><a title="oauth2client.crypt.make_signed_jwt" class="py-name" href="#" onclick="return doclink('link-156', 'make_signed_jwt', 'link-156');">make_signed_jwt</a></tt><tt class="py-op">(</tt><tt id="link-157" class="py-name"><a title="oauth2client.crypt" class="py-name" href="#" onclick="return doclink('link-157', 'crypt', 'link-14');">crypt</a></tt><tt class="py-op">.</tt><tt id="link-158" class="py-name" targets="Variable oauth2client.crypt.Signer=oauth2client.crypt-module.html#Signer"><a title="oauth2client.crypt.Signer" class="py-name" href="#" onclick="return doclink('link-158', 'Signer', 'link-158');">Signer</a></tt><tt class="py-op">.</tt><tt class="py-name">from_string</tt><tt class="py-op">(</tt> </tt>
<a name="L977"></a><tt class="py-lineno"> 977</tt> <tt class="py-line"> <tt class="py-name">private_key</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">private_key_password</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">payload</tt><tt class="py-op">)</tt> </tt>
</div></div><a name="L978"></a><tt class="py-lineno"> 978</tt> <tt class="py-line"> </tt>
<a name="L979"></a><tt class="py-lineno"> 979</tt> <tt class="py-line"> <tt class="py-comment"># Only used in verify_id_token(), which is always calling to the same URI</tt> </tt>
<a name="L980"></a><tt class="py-lineno"> 980</tt> <tt class="py-line"> <tt class="py-comment"># for the certs.</tt> </tt>
-<a name="L981"></a><tt class="py-lineno"> 981</tt> <tt class="py-line"> <tt id="link-146" class="py-name" targets="Variable oauth2client.client._cached_http=oauth2client.client-module.html#_cached_http"><a title="oauth2client.client._cached_http" class="py-name" href="#" onclick="return doclink('link-146', '_cached_http', 'link-146');">_cached_http</a></tt> <tt class="py-op">=</tt> <tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">Http</tt><tt class="py-op">(</tt><tt id="link-147" class="py-name" targets="Class oauth2client.client.MemoryCache=oauth2client.client.MemoryCache-class.html"><a title="oauth2client.client.MemoryCache" class="py-name" href="#" onclick="return doclink('link-147', 'MemoryCache', 'link-147');">MemoryCache</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L981"></a><tt class="py-lineno"> 981</tt> <tt class="py-line"> <tt id="link-159" class="py-name" targets="Variable oauth2client.client._cached_http=oauth2client.client-module.html#_cached_http"><a title="oauth2client.client._cached_http" class="py-name" href="#" onclick="return doclink('link-159', '_cached_http', 'link-159');">_cached_http</a></tt> <tt class="py-op">=</tt> <tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">Http</tt><tt class="py-op">(</tt><tt id="link-160" class="py-name" targets="Class oauth2client.client.MemoryCache=oauth2client.client.MemoryCache-class.html"><a title="oauth2client.client.MemoryCache" class="py-name" href="#" onclick="return doclink('link-160', 'MemoryCache', 'link-160');">MemoryCache</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L982"></a><tt class="py-lineno"> 982</tt> <tt class="py-line"> </tt>
-<a name="L983"></a><tt class="py-lineno"> 983</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-148" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-148', 'positional', 'link-55');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="L983"></a><tt class="py-lineno"> 983</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-161" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-161', 'positional', 'link-56');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
<a name="verify_id_token"></a><div id="verify_id_token-def"><a name="L984"></a><tt class="py-lineno"> 984</tt> <a class="py-toggle" href="#" id="verify_id_token-toggle" onclick="return toggle('verify_id_token');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client-module.html#verify_id_token">verify_id_token</a><tt class="py-op">(</tt><tt class="py-param">id_token</tt><tt class="py-op">,</tt> <tt class="py-param">audience</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L985"></a><tt class="py-lineno"> 985</tt> <tt class="py-line"> <tt class="py-param">cert_uri</tt><tt class="py-op">=</tt><tt id="link-149" class="py-name"><a title="oauth2client.client.ID_TOKEN_VERIFICATON_CERTS" class="py-name" href="#" onclick="return doclink('link-149', 'ID_TOKEN_VERIFICATON_CERTS', 'link-21');">ID_TOKEN_VERIFICATON_CERTS</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L985"></a><tt class="py-lineno"> 985</tt> <tt class="py-line"> <tt class="py-param">cert_uri</tt><tt class="py-op">=</tt><tt id="link-162" class="py-name"><a title="oauth2client.client.ID_TOKEN_VERIFICATON_CERTS" class="py-name" href="#" onclick="return doclink('link-162', 'ID_TOKEN_VERIFICATON_CERTS', 'link-21');">ID_TOKEN_VERIFICATON_CERTS</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="verify_id_token-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="verify_id_token-expanded"><a name="L986"></a><tt class="py-lineno"> 986</tt> <tt class="py-line"> <tt class="py-docstring">"""Verifies a signed JWT id_token.</tt> </tt>
<a name="L987"></a><tt class="py-lineno"> 987</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L988"></a><tt class="py-lineno"> 988</tt> <tt class="py-line"><tt class="py-docstring"> This function requires PyOpenSSL and because of that it does not work on</tt> </tt>
@@ -1387,22 +1382,22 @@
<a name="L1002"></a><tt class="py-lineno">1002</tt> <tt class="py-line"><tt class="py-docstring"> Raises:</tt> </tt>
<a name="L1003"></a><tt class="py-lineno">1003</tt> <tt class="py-line"><tt class="py-docstring"> oauth2client.crypt.AppIdentityError if the JWT fails to verify.</tt> </tt>
<a name="L1004"></a><tt class="py-lineno">1004</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L1005"></a><tt class="py-lineno">1005</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-150" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-150', 'http', 'link-56');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L1006"></a><tt class="py-lineno">1006</tt> <tt class="py-line"> <tt id="link-151" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-151', 'http', 'link-56');">http</a></tt> <tt class="py-op">=</tt> <tt id="link-152" class="py-name"><a title="oauth2client.client._cached_http" class="py-name" href="#" onclick="return doclink('link-152', '_cached_http', 'link-146');">_cached_http</a></tt> </tt>
+<a name="L1005"></a><tt class="py-lineno">1005</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-163" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-163', 'http', 'link-57');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1006"></a><tt class="py-lineno">1006</tt> <tt class="py-line"> <tt id="link-164" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-164', 'http', 'link-57');">http</a></tt> <tt class="py-op">=</tt> <tt id="link-165" class="py-name"><a title="oauth2client.client._cached_http" class="py-name" href="#" onclick="return doclink('link-165', '_cached_http', 'link-159');">_cached_http</a></tt> </tt>
<a name="L1007"></a><tt class="py-lineno">1007</tt> <tt class="py-line"> </tt>
-<a name="L1008"></a><tt class="py-lineno">1008</tt> <tt class="py-line"> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt id="link-153" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-153', 'http', 'link-56');">http</a></tt><tt class="py-op">.</tt><tt id="link-154" class="py-name"><a title="apiclient.http.HttpMock.request
+<a name="L1008"></a><tt class="py-lineno">1008</tt> <tt class="py-line"> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt id="link-166" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-166', 'http', 'link-57');">http</a></tt><tt class="py-op">.</tt><tt id="link-167" class="py-name"><a title="apiclient.http.HttpMock.request
apiclient.http.HttpMockSequence.request
apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-154', 'request', 'link-57');">request</a></tt><tt class="py-op">(</tt><tt class="py-name">cert_uri</tt><tt class="py-op">)</tt> </tt>
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-167', 'request', 'link-58');">request</a></tt><tt class="py-op">(</tt><tt class="py-name">cert_uri</tt><tt class="py-op">)</tt> </tt>
<a name="L1009"></a><tt class="py-lineno">1009</tt> <tt class="py-line"> </tt>
<a name="L1010"></a><tt class="py-lineno">1010</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-op">==</tt> <tt class="py-number">200</tt><tt class="py-op">:</tt> </tt>
-<a name="L1011"></a><tt class="py-lineno">1011</tt> <tt class="py-line"> <tt class="py-name">certs</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-155" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-155', 'loads', 'link-34');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
-<a name="L1012"></a><tt class="py-lineno">1012</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-156" class="py-name"><a title="oauth2client.crypt" class="py-name" href="#" onclick="return doclink('link-156', 'crypt', 'link-14');">crypt</a></tt><tt class="py-op">.</tt><tt id="link-157" class="py-name" targets="Function oauth2client.crypt.verify_signed_jwt_with_certs()=oauth2client.crypt-module.html#verify_signed_jwt_with_certs"><a title="oauth2client.crypt.verify_signed_jwt_with_certs" class="py-name" href="#" onclick="return doclink('link-157', 'verify_signed_jwt_with_certs', 'link-157');">verify_signed_jwt_with_certs</a></tt><tt class="py-op">(</tt><tt class="py-name">id_token</tt><tt class="py-op">,</tt> <tt class="py-name">certs</tt><tt class="py-op">,</tt> <tt class="py-name">audience</tt><tt class="py-op">)</tt> </tt>
+<a name="L1011"></a><tt class="py-lineno">1011</tt> <tt class="py-line"> <tt class="py-name">certs</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-168" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-168', 'loads', 'link-34');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
+<a name="L1012"></a><tt class="py-lineno">1012</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-169" class="py-name"><a title="oauth2client.crypt" class="py-name" href="#" onclick="return doclink('link-169', 'crypt', 'link-14');">crypt</a></tt><tt class="py-op">.</tt><tt id="link-170" class="py-name" targets="Function oauth2client.crypt.verify_signed_jwt_with_certs()=oauth2client.crypt-module.html#verify_signed_jwt_with_certs"><a title="oauth2client.crypt.verify_signed_jwt_with_certs" class="py-name" href="#" onclick="return doclink('link-170', 'verify_signed_jwt_with_certs', 'link-170');">verify_signed_jwt_with_certs</a></tt><tt class="py-op">(</tt><tt class="py-name">id_token</tt><tt class="py-op">,</tt> <tt class="py-name">certs</tt><tt class="py-op">,</tt> <tt class="py-name">audience</tt><tt class="py-op">)</tt> </tt>
<a name="L1013"></a><tt class="py-lineno">1013</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L1014"></a><tt class="py-lineno">1014</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-158" class="py-name" targets="Class oauth2client.client.VerifyJwtTokenError=oauth2client.client.VerifyJwtTokenError-class.html"><a title="oauth2client.client.VerifyJwtTokenError" class="py-name" href="#" onclick="return doclink('link-158', 'VerifyJwtTokenError', 'link-158');">VerifyJwtTokenError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Status code: %d'</tt> <tt class="py-op">%</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt><tt class="py-op">)</tt> </tt>
+<a name="L1014"></a><tt class="py-lineno">1014</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-171" class="py-name" targets="Class oauth2client.client.VerifyJwtTokenError=oauth2client.client.VerifyJwtTokenError-class.html"><a title="oauth2client.client.VerifyJwtTokenError" class="py-name" href="#" onclick="return doclink('link-171', 'VerifyJwtTokenError', 'link-171');">VerifyJwtTokenError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Status code: %d'</tt> <tt class="py-op">%</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt><tt class="py-op">)</tt> </tt>
</div><a name="L1015"></a><tt class="py-lineno">1015</tt> <tt class="py-line"> </tt>
<a name="_urlsafe_b64decode"></a><div id="_urlsafe_b64decode-def"><a name="L1016"></a><tt class="py-lineno">1016</tt> <tt class="py-line"> </tt>
<a name="L1017"></a><tt class="py-lineno">1017</tt> <a class="py-toggle" href="#" id="_urlsafe_b64decode-toggle" onclick="return toggle('_urlsafe_b64decode');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client-module.html#_urlsafe_b64decode">_urlsafe_b64decode</a><tt class="py-op">(</tt><tt class="py-param">b64string</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
@@ -1426,11 +1421,11 @@
<a name="L1035"></a><tt class="py-lineno">1035</tt> <tt class="py-line"> <tt class="py-name">segments</tt> <tt class="py-op">=</tt> <tt class="py-name">id_token</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'.'</tt><tt class="py-op">)</tt> </tt>
<a name="L1036"></a><tt class="py-lineno">1036</tt> <tt class="py-line"> </tt>
<a name="L1037"></a><tt class="py-lineno">1037</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">segments</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-number">3</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1038"></a><tt class="py-lineno">1038</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-159" class="py-name"><a title="oauth2client.client.VerifyJwtTokenError" class="py-name" href="#" onclick="return doclink('link-159', 'VerifyJwtTokenError', 'link-158');">VerifyJwtTokenError</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L1038"></a><tt class="py-lineno">1038</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-172" class="py-name"><a title="oauth2client.client.VerifyJwtTokenError" class="py-name" href="#" onclick="return doclink('link-172', 'VerifyJwtTokenError', 'link-171');">VerifyJwtTokenError</a></tt><tt class="py-op">(</tt> </tt>
<a name="L1039"></a><tt class="py-lineno">1039</tt> <tt class="py-line"> <tt class="py-string">'Wrong number of segments in token: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">id_token</tt><tt class="py-op">)</tt> </tt>
<a name="L1040"></a><tt class="py-lineno">1040</tt> <tt class="py-line"> </tt>
-<a name="L1041"></a><tt class="py-lineno">1041</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-160" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-160', 'loads', 'link-34');">loads</a></tt><tt class="py-op">(</tt><tt id="link-161" class="py-name" targets="Function oauth2client.client._urlsafe_b64decode()=oauth2client.client-module.html#_urlsafe_b64decode,Function oauth2client.crypt._urlsafe_b64decode()=oauth2client.crypt-module.html#_urlsafe_b64decode"><a title="oauth2client.client._urlsafe_b64decode
-oauth2client.crypt._urlsafe_b64decode" class="py-name" href="#" onclick="return doclink('link-161', '_urlsafe_b64decode', 'link-161');">_urlsafe_b64decode</a></tt><tt class="py-op">(</tt><tt class="py-name">segments</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1041"></a><tt class="py-lineno">1041</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-173" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-173', 'loads', 'link-34');">loads</a></tt><tt class="py-op">(</tt><tt id="link-174" class="py-name" targets="Function oauth2client.client._urlsafe_b64decode()=oauth2client.client-module.html#_urlsafe_b64decode,Function oauth2client.crypt._urlsafe_b64decode()=oauth2client.crypt-module.html#_urlsafe_b64decode"><a title="oauth2client.client._urlsafe_b64decode
+oauth2client.crypt._urlsafe_b64decode" class="py-name" href="#" onclick="return doclink('link-174', '_urlsafe_b64decode', 'link-174');">_urlsafe_b64decode</a></tt><tt class="py-op">(</tt><tt class="py-name">segments</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
</div><a name="L1042"></a><tt class="py-lineno">1042</tt> <tt class="py-line"> </tt>
<a name="_parse_exchange_token_response"></a><div id="_parse_exchange_token_response-def"><a name="L1043"></a><tt class="py-lineno">1043</tt> <tt class="py-line"> </tt>
<a name="L1044"></a><tt class="py-lineno">1044</tt> <a class="py-toggle" href="#" id="_parse_exchange_token_response-toggle" onclick="return toggle('_parse_exchange_token_response');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client-module.html#_parse_exchange_token_response">_parse_exchange_token_response</a><tt class="py-op">(</tt><tt class="py-param">content</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
@@ -1448,7 +1443,7 @@
<a name="L1056"></a><tt class="py-lineno">1056</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
<a name="L1057"></a><tt class="py-lineno">1057</tt> <tt class="py-line"> <tt class="py-name">resp</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
<a name="L1058"></a><tt class="py-lineno">1058</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L1059"></a><tt class="py-lineno">1059</tt> <tt class="py-line"> <tt class="py-name">resp</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-162" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-162', 'loads', 'link-34');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
+<a name="L1059"></a><tt class="py-lineno">1059</tt> <tt class="py-line"> <tt class="py-name">resp</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-175" class="py-name"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-175', 'loads', 'link-34');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
<a name="L1060"></a><tt class="py-lineno">1060</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">StandardError</tt><tt class="py-op">:</tt> </tt>
<a name="L1061"></a><tt class="py-lineno">1061</tt> <tt class="py-line"> <tt class="py-comment"># different JSON libs raise different exceptions,</tt> </tt>
<a name="L1062"></a><tt class="py-lineno">1062</tt> <tt class="py-line"> <tt class="py-comment"># so we just do a catch-all here</tt> </tt>
@@ -1461,12 +1456,12 @@
<a name="L1069"></a><tt class="py-lineno">1069</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">resp</tt> </tt>
</div><a name="L1070"></a><tt class="py-lineno">1070</tt> <tt class="py-line"> </tt>
<a name="credentials_from_code"></a><div id="credentials_from_code-def"><a name="L1071"></a><tt class="py-lineno">1071</tt> <tt class="py-line"> </tt>
-<a name="L1072"></a><tt class="py-lineno">1072</tt> <tt class="py-line"><tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-163" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-163', 'positional', 'link-55');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">4</tt><tt class="py-op">)</tt> </tt>
+<a name="L1072"></a><tt class="py-lineno">1072</tt> <tt class="py-line"><tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-176" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-176', 'positional', 'link-56');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">4</tt><tt class="py-op">)</tt> </tt>
<a name="L1073"></a><tt class="py-lineno">1073</tt> <a class="py-toggle" href="#" id="credentials_from_code-toggle" onclick="return toggle('credentials_from_code');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client-module.html#credentials_from_code">credentials_from_code</a><tt class="py-op">(</tt><tt class="py-param">client_id</tt><tt class="py-op">,</tt> <tt class="py-param">client_secret</tt><tt class="py-op">,</tt> <tt class="py-param">scope</tt><tt class="py-op">,</tt> <tt class="py-param">code</tt><tt class="py-op">,</tt> </tt>
<a name="L1074"></a><tt class="py-lineno">1074</tt> <tt class="py-line"> <tt class="py-param">redirect_uri</tt><tt class="py-op">=</tt><tt class="py-string">'postmessage'</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L1075"></a><tt class="py-lineno">1075</tt> <tt class="py-line"> <tt class="py-param">user_agent</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">token_uri</tt><tt class="py-op">=</tt><tt id="link-164" class="py-name"><a title="oauth2client.GOOGLE_TOKEN_URI" class="py-name" href="#" onclick="return doclink('link-164', 'GOOGLE_TOKEN_URI', 'link-6');">GOOGLE_TOKEN_URI</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L1076"></a><tt class="py-lineno">1076</tt> <tt class="py-line"> <tt class="py-param">auth_uri</tt><tt class="py-op">=</tt><tt id="link-165" class="py-name"><a title="oauth2client.GOOGLE_AUTH_URI" class="py-name" href="#" onclick="return doclink('link-165', 'GOOGLE_AUTH_URI', 'link-2');">GOOGLE_AUTH_URI</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L1077"></a><tt class="py-lineno">1077</tt> <tt class="py-line"> <tt class="py-param">revoke_uri</tt><tt class="py-op">=</tt><tt id="link-166" class="py-name"><a title="oauth2client.GOOGLE_REVOKE_URI" class="py-name" href="#" onclick="return doclink('link-166', 'GOOGLE_REVOKE_URI', 'link-4');">GOOGLE_REVOKE_URI</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1075"></a><tt class="py-lineno">1075</tt> <tt class="py-line"> <tt class="py-param">user_agent</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">token_uri</tt><tt class="py-op">=</tt><tt id="link-177" class="py-name"><a title="oauth2client.GOOGLE_TOKEN_URI" class="py-name" href="#" onclick="return doclink('link-177', 'GOOGLE_TOKEN_URI', 'link-6');">GOOGLE_TOKEN_URI</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1076"></a><tt class="py-lineno">1076</tt> <tt class="py-line"> <tt class="py-param">auth_uri</tt><tt class="py-op">=</tt><tt id="link-178" class="py-name"><a title="oauth2client.GOOGLE_AUTH_URI" class="py-name" href="#" onclick="return doclink('link-178', 'GOOGLE_AUTH_URI', 'link-2');">GOOGLE_AUTH_URI</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1077"></a><tt class="py-lineno">1077</tt> <tt class="py-line"> <tt class="py-param">revoke_uri</tt><tt class="py-op">=</tt><tt id="link-179" class="py-name"><a title="oauth2client.GOOGLE_REVOKE_URI" class="py-name" href="#" onclick="return doclink('link-179', 'GOOGLE_REVOKE_URI', 'link-4');">GOOGLE_REVOKE_URI</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="credentials_from_code-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="credentials_from_code-expanded"><a name="L1078"></a><tt class="py-lineno">1078</tt> <tt class="py-line"> <tt class="py-docstring">"""Exchanges an authorization code for an OAuth2Credentials object.</tt> </tt>
<a name="L1079"></a><tt class="py-lineno">1079</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
<a name="L1080"></a><tt class="py-lineno">1080</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
@@ -1492,20 +1487,22 @@
<a name="L1100"></a><tt class="py-lineno">1100</tt> <tt class="py-line"><tt class="py-docstring"> FlowExchangeError if the authorization code cannot be exchanged for an</tt> </tt>
<a name="L1101"></a><tt class="py-lineno">1101</tt> <tt class="py-line"><tt class="py-docstring"> access token</tt> </tt>
<a name="L1102"></a><tt class="py-lineno">1102</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L1103"></a><tt class="py-lineno">1103</tt> <tt class="py-line"> <tt class="py-name">flow</tt> <tt class="py-op">=</tt> <tt id="link-167" class="py-name" targets="Class oauth2client.client.OAuth2WebServerFlow=oauth2client.client.OAuth2WebServerFlow-class.html"><a title="oauth2client.client.OAuth2WebServerFlow" class="py-name" href="#" onclick="return doclink('link-167', 'OAuth2WebServerFlow', 'link-167');">OAuth2WebServerFlow</a></tt><tt class="py-op">(</tt><tt class="py-name">client_id</tt><tt class="py-op">,</tt> <tt class="py-name">client_secret</tt><tt class="py-op">,</tt> <tt class="py-name">scope</tt><tt class="py-op">,</tt> </tt>
+<a name="L1103"></a><tt class="py-lineno">1103</tt> <tt class="py-line"> <tt id="link-180" class="py-name" targets="Variable oauth2client.appengine.OAuth2Decorator.flow=oauth2client.appengine.OAuth2Decorator-class.html#flow"><a title="oauth2client.appengine.OAuth2Decorator.flow" class="py-name" href="#" onclick="return doclink('link-180', 'flow', 'link-180');">flow</a></tt> <tt class="py-op">=</tt> <tt id="link-181" class="py-name" targets="Class oauth2client.client.OAuth2WebServerFlow=oauth2client.client.OAuth2WebServerFlow-class.html"><a title="oauth2client.client.OAuth2WebServerFlow" class="py-name" href="#" onclick="return doclink('link-181', 'OAuth2WebServerFlow', 'link-181');">OAuth2WebServerFlow</a></tt><tt class="py-op">(</tt><tt class="py-name">client_id</tt><tt class="py-op">,</tt> <tt class="py-name">client_secret</tt><tt class="py-op">,</tt> <tt class="py-name">scope</tt><tt class="py-op">,</tt> </tt>
<a name="L1104"></a><tt class="py-lineno">1104</tt> <tt class="py-line"> <tt class="py-name">redirect_uri</tt><tt class="py-op">=</tt><tt class="py-name">redirect_uri</tt><tt class="py-op">,</tt> <tt class="py-name">user_agent</tt><tt class="py-op">=</tt><tt class="py-name">user_agent</tt><tt class="py-op">,</tt> </tt>
<a name="L1105"></a><tt class="py-lineno">1105</tt> <tt class="py-line"> <tt class="py-name">auth_uri</tt><tt class="py-op">=</tt><tt class="py-name">auth_uri</tt><tt class="py-op">,</tt> <tt class="py-name">token_uri</tt><tt class="py-op">=</tt><tt class="py-name">token_uri</tt><tt class="py-op">,</tt> </tt>
<a name="L1106"></a><tt class="py-lineno">1106</tt> <tt class="py-line"> <tt class="py-name">revoke_uri</tt><tt class="py-op">=</tt><tt class="py-name">revoke_uri</tt><tt class="py-op">)</tt> </tt>
<a name="L1107"></a><tt class="py-lineno">1107</tt> <tt class="py-line"> </tt>
-<a name="L1108"></a><tt class="py-lineno">1108</tt> <tt class="py-line"> <tt id="link-168" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
-oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-168', 'credentials', 'link-46');">credentials</a></tt> <tt class="py-op">=</tt> <tt class="py-name">flow</tt><tt class="py-op">.</tt><tt id="link-169" class="py-name" targets="Method oauth2client.client.OAuth2WebServerFlow.step2_exchange()=oauth2client.client.OAuth2WebServerFlow-class.html#step2_exchange"><a title="oauth2client.client.OAuth2WebServerFlow.step2_exchange" class="py-name" href="#" onclick="return doclink('link-169', 'step2_exchange', 'link-169');">step2_exchange</a></tt><tt class="py-op">(</tt><tt class="py-name">code</tt><tt class="py-op">,</tt> <tt id="link-170" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-170', 'http', 'link-56');">http</a></tt><tt class="py-op">=</tt><tt id="link-171" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-171', 'http', 'link-56');">http</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1109"></a><tt class="py-lineno">1109</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-172" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
-oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-172', 'credentials', 'link-46');">credentials</a></tt> </tt>
+<a name="L1108"></a><tt class="py-lineno">1108</tt> <tt class="py-line"> <tt id="link-182" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-182', 'credentials', 'link-46');">credentials</a></tt> <tt class="py-op">=</tt> <tt id="link-183" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator.flow" class="py-name" href="#" onclick="return doclink('link-183', 'flow', 'link-180');">flow</a></tt><tt class="py-op">.</tt><tt id="link-184" class="py-name" targets="Method oauth2client.client.OAuth2WebServerFlow.step2_exchange()=oauth2client.client.OAuth2WebServerFlow-class.html#step2_exchange"><a title="oauth2client.client.OAuth2WebServerFlow.step2_exchange" class="py-name" href="#" onclick="return doclink('link-184', 'step2_exchange', 'link-184');">step2_exchange</a></tt><tt class="py-op">(</tt><tt class="py-name">code</tt><tt class="py-op">,</tt> <tt id="link-185" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-185', 'http', 'link-57');">http</a></tt><tt class="py-op">=</tt><tt id="link-186" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-186', 'http', 'link-57');">http</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1109"></a><tt class="py-lineno">1109</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-187" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-187', 'credentials', 'link-46');">credentials</a></tt> </tt>
</div><a name="L1110"></a><tt class="py-lineno">1110</tt> <tt class="py-line"> </tt>
<a name="credentials_from_clientsecrets_and_code"></a><div id="credentials_from_clientsecrets_and_code-def"><a name="L1111"></a><tt class="py-lineno">1111</tt> <tt class="py-line"> </tt>
-<a name="L1112"></a><tt class="py-lineno">1112</tt> <tt class="py-line"><tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-173" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-173', 'positional', 'link-55');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
+<a name="L1112"></a><tt class="py-lineno">1112</tt> <tt class="py-line"><tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-188" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-188', 'positional', 'link-56');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
<a name="L1113"></a><tt class="py-lineno">1113</tt> <a class="py-toggle" href="#" id="credentials_from_clientsecrets_and_code-toggle" onclick="return toggle('credentials_from_clientsecrets_and_code');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client-module.html#credentials_from_clientsecrets_and_code">credentials_from_clientsecrets_and_code</a><tt class="py-op">(</tt><tt class="py-param">filename</tt><tt class="py-op">,</tt> <tt class="py-param">scope</tt><tt class="py-op">,</tt> <tt class="py-param">code</tt><tt class="py-op">,</tt> </tt>
<a name="L1114"></a><tt class="py-lineno">1114</tt> <tt class="py-line"> <tt class="py-param">message</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
<a name="L1115"></a><tt class="py-lineno">1115</tt> <tt class="py-line"> <tt class="py-param">redirect_uri</tt><tt class="py-op">=</tt><tt class="py-string">'postmessage'</tt><tt class="py-op">,</tt> </tt>
@@ -1541,15 +1538,17 @@
<a name="L1145"></a><tt class="py-lineno">1145</tt> <tt class="py-line"><tt class="py-docstring"> clientsecrets.InvalidClientSecretsError if the clientsecrets file is</tt> </tt>
<a name="L1146"></a><tt class="py-lineno">1146</tt> <tt class="py-line"><tt class="py-docstring"> invalid.</tt> </tt>
<a name="L1147"></a><tt class="py-lineno">1147</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L1148"></a><tt class="py-lineno">1148</tt> <tt class="py-line"> <tt class="py-name">flow</tt> <tt class="py-op">=</tt> <tt id="link-174" class="py-name" targets="Function oauth2client.client.flow_from_clientsecrets()=oauth2client.client-module.html#flow_from_clientsecrets"><a title="oauth2client.client.flow_from_clientsecrets" class="py-name" href="#" onclick="return doclink('link-174', 'flow_from_clientsecrets', 'link-174');">flow_from_clientsecrets</a></tt><tt class="py-op">(</tt><tt id="link-175" class="py-name" targets="Method oauth2client.locked_file.LockedFile.filename()=oauth2client.locked_file.LockedFile-class.html#filename,Method oauth2client.locked_file._Opener.filename()=oauth2client.locked_file._Opener-class.html#filename"><a title="oauth2client.locked_file.LockedFile.filename
-oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-175', 'filename', 'link-175');">filename</a></tt><tt class="py-op">,</tt> <tt class="py-name">scope</tt><tt class="py-op">,</tt> <tt class="py-name">message</tt><tt class="py-op">=</tt><tt class="py-name">message</tt><tt class="py-op">,</tt> <tt class="py-name">cache</tt><tt class="py-op">=</tt><tt class="py-name">cache</tt><tt class="py-op">,</tt> </tt>
+<a name="L1148"></a><tt class="py-lineno">1148</tt> <tt class="py-line"> <tt id="link-189" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator.flow" class="py-name" href="#" onclick="return doclink('link-189', 'flow', 'link-180');">flow</a></tt> <tt class="py-op">=</tt> <tt id="link-190" class="py-name" targets="Function oauth2client.client.flow_from_clientsecrets()=oauth2client.client-module.html#flow_from_clientsecrets"><a title="oauth2client.client.flow_from_clientsecrets" class="py-name" href="#" onclick="return doclink('link-190', 'flow_from_clientsecrets', 'link-190');">flow_from_clientsecrets</a></tt><tt class="py-op">(</tt><tt id="link-191" class="py-name" targets="Method oauth2client.locked_file.LockedFile.filename()=oauth2client.locked_file.LockedFile-class.html#filename,Method oauth2client.locked_file._Opener.filename()=oauth2client.locked_file._Opener-class.html#filename"><a title="oauth2client.locked_file.LockedFile.filename
+oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-191', 'filename', 'link-191');">filename</a></tt><tt class="py-op">,</tt> <tt class="py-name">scope</tt><tt class="py-op">,</tt> <tt class="py-name">message</tt><tt class="py-op">=</tt><tt class="py-name">message</tt><tt class="py-op">,</tt> <tt class="py-name">cache</tt><tt class="py-op">=</tt><tt class="py-name">cache</tt><tt class="py-op">,</tt> </tt>
<a name="L1149"></a><tt class="py-lineno">1149</tt> <tt class="py-line"> <tt class="py-name">redirect_uri</tt><tt class="py-op">=</tt><tt class="py-name">redirect_uri</tt><tt class="py-op">)</tt> </tt>
-<a name="L1150"></a><tt class="py-lineno">1150</tt> <tt class="py-line"> <tt id="link-176" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
-oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-176', 'credentials', 'link-46');">credentials</a></tt> <tt class="py-op">=</tt> <tt class="py-name">flow</tt><tt class="py-op">.</tt><tt id="link-177" class="py-name"><a title="oauth2client.client.OAuth2WebServerFlow.step2_exchange" class="py-name" href="#" onclick="return doclink('link-177', 'step2_exchange', 'link-169');">step2_exchange</a></tt><tt class="py-op">(</tt><tt class="py-name">code</tt><tt class="py-op">,</tt> <tt id="link-178" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-178', 'http', 'link-56');">http</a></tt><tt class="py-op">=</tt><tt id="link-179" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-179', 'http', 'link-56');">http</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1151"></a><tt class="py-lineno">1151</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-180" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
-oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-180', 'credentials', 'link-46');">credentials</a></tt> </tt>
+<a name="L1150"></a><tt class="py-lineno">1150</tt> <tt class="py-line"> <tt id="link-192" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-192', 'credentials', 'link-46');">credentials</a></tt> <tt class="py-op">=</tt> <tt id="link-193" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator.flow" class="py-name" href="#" onclick="return doclink('link-193', 'flow', 'link-180');">flow</a></tt><tt class="py-op">.</tt><tt id="link-194" class="py-name"><a title="oauth2client.client.OAuth2WebServerFlow.step2_exchange" class="py-name" href="#" onclick="return doclink('link-194', 'step2_exchange', 'link-184');">step2_exchange</a></tt><tt class="py-op">(</tt><tt class="py-name">code</tt><tt class="py-op">,</tt> <tt id="link-195" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-195', 'http', 'link-57');">http</a></tt><tt class="py-op">=</tt><tt id="link-196" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-196', 'http', 'link-57');">http</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1151"></a><tt class="py-lineno">1151</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-197" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-197', 'credentials', 'link-46');">credentials</a></tt> </tt>
</div><a name="L1152"></a><tt class="py-lineno">1152</tt> <tt class="py-line"> </tt>
<a name="OAuth2WebServerFlow"></a><div id="OAuth2WebServerFlow-def"><a name="L1153"></a><tt class="py-lineno">1153</tt> <tt class="py-line"> </tt>
<a name="L1154"></a><tt class="py-lineno">1154</tt> <a class="py-toggle" href="#" id="OAuth2WebServerFlow-toggle" onclick="return toggle('OAuth2WebServerFlow');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.client.OAuth2WebServerFlow-class.html">OAuth2WebServerFlow</a><tt class="py-op">(</tt><tt class="py-base-class">Flow</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
@@ -1558,13 +1557,13 @@
<a name="L1157"></a><tt class="py-lineno">1157</tt> <tt class="py-line"><tt class="py-docstring"> OAuth2WebServerFlow objects may be safely pickled and unpickled.</tt> </tt>
<a name="L1158"></a><tt class="py-lineno">1158</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
<a name="L1159"></a><tt class="py-lineno">1159</tt> <tt class="py-line"> </tt>
-<a name="L1160"></a><tt class="py-lineno">1160</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-181" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-181', 'positional', 'link-55');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">4</tt><tt class="py-op">)</tt> </tt>
+<a name="L1160"></a><tt class="py-lineno">1160</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-198" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-198', 'positional', 'link-56');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">4</tt><tt class="py-op">)</tt> </tt>
<a name="OAuth2WebServerFlow.__init__"></a><div id="OAuth2WebServerFlow.__init__-def"><a name="L1161"></a><tt class="py-lineno">1161</tt> <a class="py-toggle" href="#" id="OAuth2WebServerFlow.__init__-toggle" onclick="return toggle('OAuth2WebServerFlow.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.OAuth2WebServerFlow-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">client_id</tt><tt class="py-op">,</tt> <tt class="py-param">client_secret</tt><tt class="py-op">,</tt> <tt class="py-param">scope</tt><tt class="py-op">,</tt> </tt>
<a name="L1162"></a><tt class="py-lineno">1162</tt> <tt class="py-line"> <tt class="py-param">redirect_uri</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
<a name="L1163"></a><tt class="py-lineno">1163</tt> <tt class="py-line"> <tt class="py-param">user_agent</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L1164"></a><tt class="py-lineno">1164</tt> <tt class="py-line"> <tt class="py-param">auth_uri</tt><tt class="py-op">=</tt><tt id="link-182" class="py-name"><a title="oauth2client.GOOGLE_AUTH_URI" class="py-name" href="#" onclick="return doclink('link-182', 'GOOGLE_AUTH_URI', 'link-2');">GOOGLE_AUTH_URI</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L1165"></a><tt class="py-lineno">1165</tt> <tt class="py-line"> <tt class="py-param">token_uri</tt><tt class="py-op">=</tt><tt id="link-183" class="py-name"><a title="oauth2client.GOOGLE_TOKEN_URI" class="py-name" href="#" onclick="return doclink('link-183', 'GOOGLE_TOKEN_URI', 'link-6');">GOOGLE_TOKEN_URI</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L1166"></a><tt class="py-lineno">1166</tt> <tt class="py-line"> <tt class="py-param">revoke_uri</tt><tt class="py-op">=</tt><tt id="link-184" class="py-name"><a title="oauth2client.GOOGLE_REVOKE_URI" class="py-name" href="#" onclick="return doclink('link-184', 'GOOGLE_REVOKE_URI', 'link-4');">GOOGLE_REVOKE_URI</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1164"></a><tt class="py-lineno">1164</tt> <tt class="py-line"> <tt class="py-param">auth_uri</tt><tt class="py-op">=</tt><tt id="link-199" class="py-name"><a title="oauth2client.GOOGLE_AUTH_URI" class="py-name" href="#" onclick="return doclink('link-199', 'GOOGLE_AUTH_URI', 'link-2');">GOOGLE_AUTH_URI</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1165"></a><tt class="py-lineno">1165</tt> <tt class="py-line"> <tt class="py-param">token_uri</tt><tt class="py-op">=</tt><tt id="link-200" class="py-name"><a title="oauth2client.GOOGLE_TOKEN_URI" class="py-name" href="#" onclick="return doclink('link-200', 'GOOGLE_TOKEN_URI', 'link-6');">GOOGLE_TOKEN_URI</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1166"></a><tt class="py-lineno">1166</tt> <tt class="py-line"> <tt class="py-param">revoke_uri</tt><tt class="py-op">=</tt><tt id="link-201" class="py-name"><a title="oauth2client.GOOGLE_REVOKE_URI" class="py-name" href="#" onclick="return doclink('link-201', 'GOOGLE_REVOKE_URI', 'link-4');">GOOGLE_REVOKE_URI</a></tt><tt class="py-op">,</tt> </tt>
<a name="L1167"></a><tt class="py-lineno">1167</tt> <tt class="py-line"> <tt class="py-op">**</tt><tt class="py-param">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="OAuth2WebServerFlow.__init__-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="OAuth2WebServerFlow.__init__-expanded"><a name="L1168"></a><tt class="py-lineno">1168</tt> <tt class="py-line"> <tt class="py-docstring">"""Constructor for OAuth2WebServerFlow.</tt> </tt>
<a name="L1169"></a><tt class="py-lineno">1169</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
@@ -1592,7 +1591,7 @@
<a name="L1191"></a><tt class="py-lineno">1191</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
<a name="L1192"></a><tt class="py-lineno">1192</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">client_id</tt> <tt class="py-op">=</tt> <tt class="py-name">client_id</tt> </tt>
<a name="L1193"></a><tt class="py-lineno">1193</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">client_secret</tt> <tt class="py-op">=</tt> <tt class="py-name">client_secret</tt> </tt>
-<a name="L1194"></a><tt class="py-lineno">1194</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">scope</tt> <tt class="py-op">=</tt> <tt id="link-185" class="py-name"><a title="oauth2client.util" class="py-name" href="#" onclick="return doclink('link-185', 'util', 'link-8');">util</a></tt><tt class="py-op">.</tt><tt id="link-186" class="py-name"><a title="oauth2client.util.scopes_to_string" class="py-name" href="#" onclick="return doclink('link-186', 'scopes_to_string', 'link-136');">scopes_to_string</a></tt><tt class="py-op">(</tt><tt class="py-name">scope</tt><tt class="py-op">)</tt> </tt>
+<a name="L1194"></a><tt class="py-lineno">1194</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">scope</tt> <tt class="py-op">=</tt> <tt id="link-202" class="py-name"><a title="oauth2client.util" class="py-name" href="#" onclick="return doclink('link-202', 'util', 'link-8');">util</a></tt><tt class="py-op">.</tt><tt id="link-203" class="py-name"><a title="oauth2client.util.scopes_to_string" class="py-name" href="#" onclick="return doclink('link-203', 'scopes_to_string', 'link-148');">scopes_to_string</a></tt><tt class="py-op">(</tt><tt class="py-name">scope</tt><tt class="py-op">)</tt> </tt>
<a name="L1195"></a><tt class="py-lineno">1195</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">redirect_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">redirect_uri</tt> </tt>
<a name="L1196"></a><tt class="py-lineno">1196</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">user_agent</tt> <tt class="py-op">=</tt> <tt class="py-name">user_agent</tt> </tt>
<a name="L1197"></a><tt class="py-lineno">1197</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">auth_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">auth_uri</tt> </tt>
@@ -1602,9 +1601,9 @@
<a name="L1201"></a><tt class="py-lineno">1201</tt> <tt class="py-line"> <tt class="py-string">'access_type'</tt><tt class="py-op">:</tt> <tt class="py-string">'offline'</tt><tt class="py-op">,</tt> </tt>
<a name="L1202"></a><tt class="py-lineno">1202</tt> <tt class="py-line"> <tt class="py-string">'response_type'</tt><tt class="py-op">:</tt> <tt class="py-string">'code'</tt><tt class="py-op">,</tt> </tt>
<a name="L1203"></a><tt class="py-lineno">1203</tt> <tt class="py-line"> <tt class="py-op">}</tt> </tt>
-<a name="L1204"></a><tt class="py-lineno">1204</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">params</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">kwargs</tt><tt class="py-op">)</tt> </tt>
+<a name="L1204"></a><tt class="py-lineno">1204</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">params</tt><tt class="py-op">.</tt><tt id="link-204" class="py-name"><a title="apiclient.channel.Channel.update" class="py-name" href="#" onclick="return doclink('link-204', 'update', 'link-54');">update</a></tt><tt class="py-op">(</tt><tt class="py-name">kwargs</tt><tt class="py-op">)</tt> </tt>
</div><a name="L1205"></a><tt class="py-lineno">1205</tt> <tt class="py-line"> </tt>
-<a name="L1206"></a><tt class="py-lineno">1206</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-187" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-187', 'positional', 'link-55');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L1206"></a><tt class="py-lineno">1206</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-205" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-205', 'positional', 'link-56');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
<a name="OAuth2WebServerFlow.step1_get_authorize_url"></a><div id="OAuth2WebServerFlow.step1_get_authorize_url-def"><a name="L1207"></a><tt class="py-lineno">1207</tt> <a class="py-toggle" href="#" id="OAuth2WebServerFlow.step1_get_authorize_url-toggle" onclick="return toggle('OAuth2WebServerFlow.step1_get_authorize_url');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.OAuth2WebServerFlow-class.html#step1_get_authorize_url">step1_get_authorize_url</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">redirect_uri</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="OAuth2WebServerFlow.step1_get_authorize_url-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="OAuth2WebServerFlow.step1_get_authorize_url-expanded"><a name="L1208"></a><tt class="py-lineno">1208</tt> <tt class="py-line"> <tt class="py-docstring">"""Returns a URI to redirect to the provider.</tt> </tt>
<a name="L1209"></a><tt class="py-lineno">1209</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
@@ -1618,14 +1617,14 @@
<a name="L1217"></a><tt class="py-lineno">1217</tt> <tt class="py-line"><tt class="py-docstring"> A URI as a string to redirect the user to begin the authorization flow.</tt> </tt>
<a name="L1218"></a><tt class="py-lineno">1218</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
<a name="L1219"></a><tt class="py-lineno">1219</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">redirect_uri</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L1220"></a><tt class="py-lineno">1220</tt> <tt class="py-line"> <tt id="link-188" class="py-name"><a title="apiclient.discovery.logger
+<a name="L1220"></a><tt class="py-lineno">1220</tt> <tt class="py-line"> <tt id="link-206" class="py-name"><a title="apiclient.discovery.logger
oauth2client.appengine.logger
oauth2client.client.logger
oauth2client.crypt.logger
oauth2client.gce.logger
oauth2client.locked_file.logger
oauth2client.multistore_file.logger
-oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-188', 'logger', 'link-19');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-string">'The redirect_uri parameter for'</tt> </tt>
+oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-206', 'logger', 'link-19');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-string">'The redirect_uri parameter for'</tt> </tt>
<a name="L1221"></a><tt class="py-lineno">1221</tt> <tt class="py-line"> <tt class="py-string">'OAuth2WebServerFlow.step1_get_authorize_url is deprecated. Please'</tt> </tt>
<a name="L1222"></a><tt class="py-lineno">1222</tt> <tt class="py-line"> <tt class="py-string">'move to passing the redirect_uri in via the constructor.'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L1223"></a><tt class="py-lineno">1223</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">redirect_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">redirect_uri</tt> </tt>
@@ -1633,15 +1632,15 @@
<a name="L1225"></a><tt class="py-lineno">1225</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">redirect_uri</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
<a name="L1226"></a><tt class="py-lineno">1226</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">'The value of redirect_uri must not be None.'</tt><tt class="py-op">)</tt> </tt>
<a name="L1227"></a><tt class="py-lineno">1227</tt> <tt class="py-line"> </tt>
-<a name="L1228"></a><tt class="py-lineno">1228</tt> <tt class="py-line"> <tt id="link-189" class="py-name"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-189', 'query_params', 'link-52');">query_params</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
+<a name="L1228"></a><tt class="py-lineno">1228</tt> <tt class="py-line"> <tt id="link-207" class="py-name"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-207', 'query_params', 'link-52');">query_params</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
<a name="L1229"></a><tt class="py-lineno">1229</tt> <tt class="py-line"> <tt class="py-string">'client_id'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">client_id</tt><tt class="py-op">,</tt> </tt>
<a name="L1230"></a><tt class="py-lineno">1230</tt> <tt class="py-line"> <tt class="py-string">'redirect_uri'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">redirect_uri</tt><tt class="py-op">,</tt> </tt>
<a name="L1231"></a><tt class="py-lineno">1231</tt> <tt class="py-line"> <tt class="py-string">'scope'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">scope</tt><tt class="py-op">,</tt> </tt>
<a name="L1232"></a><tt class="py-lineno">1232</tt> <tt class="py-line"> <tt class="py-op">}</tt> </tt>
-<a name="L1233"></a><tt class="py-lineno">1233</tt> <tt class="py-line"> <tt id="link-190" class="py-name"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-190', 'query_params', 'link-52');">query_params</a></tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">params</tt><tt class="py-op">)</tt> </tt>
-<a name="L1234"></a><tt class="py-lineno">1234</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-191" class="py-name"><a title="oauth2client.client._update_query_params" class="py-name" href="#" onclick="return doclink('link-191', '_update_query_params', 'link-109');">_update_query_params</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">auth_uri</tt><tt class="py-op">,</tt> <tt id="link-192" class="py-name"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-192', 'query_params', 'link-52');">query_params</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1233"></a><tt class="py-lineno">1233</tt> <tt class="py-line"> <tt id="link-208" class="py-name"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-208', 'query_params', 'link-52');">query_params</a></tt><tt class="py-op">.</tt><tt id="link-209" class="py-name"><a title="apiclient.channel.Channel.update" class="py-name" href="#" onclick="return doclink('link-209', 'update', 'link-54');">update</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">params</tt><tt class="py-op">)</tt> </tt>
+<a name="L1234"></a><tt class="py-lineno">1234</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-210" class="py-name"><a title="oauth2client.client._update_query_params" class="py-name" href="#" onclick="return doclink('link-210', '_update_query_params', 'link-119');">_update_query_params</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">auth_uri</tt><tt class="py-op">,</tt> <tt id="link-211" class="py-name"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-211', 'query_params', 'link-52');">query_params</a></tt><tt class="py-op">)</tt> </tt>
</div><a name="L1235"></a><tt class="py-lineno">1235</tt> <tt class="py-line"> </tt>
-<a name="L1236"></a><tt class="py-lineno">1236</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-193" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-193', 'positional', 'link-55');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="L1236"></a><tt class="py-lineno">1236</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-212" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-212', 'positional', 'link-56');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
<a name="OAuth2WebServerFlow.step2_exchange"></a><div id="OAuth2WebServerFlow.step2_exchange-def"><a name="L1237"></a><tt class="py-lineno">1237</tt> <a class="py-toggle" href="#" id="OAuth2WebServerFlow.step2_exchange-toggle" onclick="return toggle('OAuth2WebServerFlow.step2_exchange');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client.OAuth2WebServerFlow-class.html#step2_exchange">step2_exchange</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">code</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="OAuth2WebServerFlow.step2_exchange-collapsed" style="display:none;" pad="++++" indent="++++++"></div><div id="OAuth2WebServerFlow.step2_exchange-expanded"><a name="L1238"></a><tt class="py-lineno">1238</tt> <tt class="py-line"> <tt class="py-docstring">"""Exhanges a code for OAuth2Credentials.</tt> </tt>
<a name="L1239"></a><tt class="py-lineno">1239</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
@@ -1665,11 +1664,11 @@
<a name="L1257"></a><tt class="py-lineno">1257</tt> <tt class="py-line"> <tt class="py-name">error_msg</tt> <tt class="py-op">=</tt> <tt class="py-name">code</tt><tt class="py-op">[</tt><tt class="py-string">'error'</tt><tt class="py-op">]</tt> </tt>
<a name="L1258"></a><tt class="py-lineno">1258</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L1259"></a><tt class="py-lineno">1259</tt> <tt class="py-line"> <tt class="py-name">error_msg</tt> <tt class="py-op">=</tt> <tt class="py-string">'No code was supplied in the query parameters.'</tt> </tt>
-<a name="L1260"></a><tt class="py-lineno">1260</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-194" class="py-name" targets="Class oauth2client.client.FlowExchangeError=oauth2client.client.FlowExchangeError-class.html"><a title="oauth2client.client.FlowExchangeError" class="py-name" href="#" onclick="return doclink('link-194', 'FlowExchangeError', 'link-194');">FlowExchangeError</a></tt><tt class="py-op">(</tt><tt class="py-name">error_msg</tt><tt class="py-op">)</tt> </tt>
+<a name="L1260"></a><tt class="py-lineno">1260</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-213" class="py-name" targets="Class oauth2client.client.FlowExchangeError=oauth2client.client.FlowExchangeError-class.html"><a title="oauth2client.client.FlowExchangeError" class="py-name" href="#" onclick="return doclink('link-213', 'FlowExchangeError', 'link-213');">FlowExchangeError</a></tt><tt class="py-op">(</tt><tt class="py-name">error_msg</tt><tt class="py-op">)</tt> </tt>
<a name="L1261"></a><tt class="py-lineno">1261</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L1262"></a><tt class="py-lineno">1262</tt> <tt class="py-line"> <tt class="py-name">code</tt> <tt class="py-op">=</tt> <tt class="py-name">code</tt><tt class="py-op">[</tt><tt class="py-string">'code'</tt><tt class="py-op">]</tt> </tt>
<a name="L1263"></a><tt class="py-lineno">1263</tt> <tt class="py-line"> </tt>
-<a name="L1264"></a><tt class="py-lineno">1264</tt> <tt class="py-line"> <tt class="py-name">body</tt> <tt class="py-op">=</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">urlencode</tt><tt class="py-op">(</tt><tt class="py-op">{</tt> </tt>
+<a name="L1264"></a><tt class="py-lineno">1264</tt> <tt class="py-line"> <tt id="link-214" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-214', 'body', 'link-63');">body</a></tt> <tt class="py-op">=</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">urlencode</tt><tt class="py-op">(</tt><tt class="py-op">{</tt> </tt>
<a name="L1265"></a><tt class="py-lineno">1265</tt> <tt class="py-line"> <tt class="py-string">'grant_type'</tt><tt class="py-op">:</tt> <tt class="py-string">'authorization_code'</tt><tt class="py-op">,</tt> </tt>
<a name="L1266"></a><tt class="py-lineno">1266</tt> <tt class="py-line"> <tt class="py-string">'client_id'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">client_id</tt><tt class="py-op">,</tt> </tt>
<a name="L1267"></a><tt class="py-lineno">1267</tt> <tt class="py-line"> <tt class="py-string">'client_secret'</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">client_secret</tt><tt class="py-op">,</tt> </tt>
@@ -1684,65 +1683,65 @@
<a name="L1276"></a><tt class="py-lineno">1276</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">user_agent</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
<a name="L1277"></a><tt class="py-lineno">1277</tt> <tt class="py-line"> <tt class="py-name">headers</tt><tt class="py-op">[</tt><tt class="py-string">'user-agent'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">user_agent</tt> </tt>
<a name="L1278"></a><tt class="py-lineno">1278</tt> <tt class="py-line"> </tt>
-<a name="L1279"></a><tt class="py-lineno">1279</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-195" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-195', 'http', 'link-56');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L1280"></a><tt class="py-lineno">1280</tt> <tt class="py-line"> <tt id="link-196" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-196', 'http', 'link-56');">http</a></tt> <tt class="py-op">=</tt> <tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">Http</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1279"></a><tt class="py-lineno">1279</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-215" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-215', 'http', 'link-57');">http</a></tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L1280"></a><tt class="py-lineno">1280</tt> <tt class="py-line"> <tt id="link-216" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-216', 'http', 'link-57');">http</a></tt> <tt class="py-op">=</tt> <tt class="py-name">httplib2</tt><tt class="py-op">.</tt><tt class="py-name">Http</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L1281"></a><tt class="py-lineno">1281</tt> <tt class="py-line"> </tt>
-<a name="L1282"></a><tt class="py-lineno">1282</tt> <tt class="py-line"> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt id="link-197" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-197', 'http', 'link-56');">http</a></tt><tt class="py-op">.</tt><tt id="link-198" class="py-name"><a title="apiclient.http.HttpMock.request
+<a name="L1282"></a><tt class="py-lineno">1282</tt> <tt class="py-line"> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt id="link-217" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-217', 'http', 'link-57');">http</a></tt><tt class="py-op">.</tt><tt id="link-218" class="py-name"><a title="apiclient.http.HttpMock.request
apiclient.http.HttpMockSequence.request
apiclient.model.BaseModel.request
-apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-198', 'request', 'link-57');">request</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">token_uri</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt><tt class="py-op">=</tt><tt class="py-string">'POST'</tt><tt class="py-op">,</tt> <tt class="py-name">body</tt><tt class="py-op">=</tt><tt class="py-name">body</tt><tt class="py-op">,</tt> </tt>
+apiclient.model.Model.request" class="py-name" href="#" onclick="return doclink('link-218', 'request', 'link-58');">request</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">token_uri</tt><tt class="py-op">,</tt> <tt class="py-name">method</tt><tt class="py-op">=</tt><tt class="py-string">'POST'</tt><tt class="py-op">,</tt> <tt id="link-219" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-219', 'body', 'link-63');">body</a></tt><tt class="py-op">=</tt><tt id="link-220" class="py-name"><a title="apiclient.channel.Channel.body" class="py-name" href="#" onclick="return doclink('link-220', 'body', 'link-63');">body</a></tt><tt class="py-op">,</tt> </tt>
<a name="L1283"></a><tt class="py-lineno">1283</tt> <tt class="py-line"> <tt class="py-name">headers</tt><tt class="py-op">=</tt><tt class="py-name">headers</tt><tt class="py-op">)</tt> </tt>
-<a name="L1284"></a><tt class="py-lineno">1284</tt> <tt class="py-line"> <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-199" class="py-name" targets="Function oauth2client.client._parse_exchange_token_response()=oauth2client.client-module.html#_parse_exchange_token_response"><a title="oauth2client.client._parse_exchange_token_response" class="py-name" href="#" onclick="return doclink('link-199', '_parse_exchange_token_response', 'link-199');">_parse_exchange_token_response</a></tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
+<a name="L1284"></a><tt class="py-lineno">1284</tt> <tt class="py-line"> <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-221" class="py-name" targets="Function oauth2client.client._parse_exchange_token_response()=oauth2client.client-module.html#_parse_exchange_token_response"><a title="oauth2client.client._parse_exchange_token_response" class="py-name" href="#" onclick="return doclink('link-221', '_parse_exchange_token_response', 'link-221');">_parse_exchange_token_response</a></tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
<a name="L1285"></a><tt class="py-lineno">1285</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt> <tt class="py-op">==</tt> <tt class="py-number">200</tt> <tt class="py-keyword">and</tt> <tt class="py-string">'access_token'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">d</tt><tt class="py-op">:</tt> </tt>
<a name="L1286"></a><tt class="py-lineno">1286</tt> <tt class="py-line"> <tt class="py-name">access_token</tt> <tt class="py-op">=</tt> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'access_token'</tt><tt class="py-op">]</tt> </tt>
-<a name="L1287"></a><tt class="py-lineno">1287</tt> <tt class="py-line"> <tt class="py-name">refresh_token</tt> <tt class="py-op">=</tt> <tt class="py-name">d</tt><tt class="py-op">.</tt><tt id="link-200" class="py-name"><a title="apiclient.schema.Schemas.get
+<a name="L1287"></a><tt class="py-lineno">1287</tt> <tt class="py-line"> <tt class="py-name">refresh_token</tt> <tt class="py-op">=</tt> <tt class="py-name">d</tt><tt class="py-op">.</tt><tt id="link-222" class="py-name"><a title="apiclient.schema.Schemas.get
oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-200', 'get', 'link-24');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'refresh_token'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-222', 'get', 'link-24');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'refresh_token'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
<a name="L1288"></a><tt class="py-lineno">1288</tt> <tt class="py-line"> <tt class="py-name">token_expiry</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
<a name="L1289"></a><tt class="py-lineno">1289</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'expires_in'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">d</tt><tt class="py-op">:</tt> </tt>
<a name="L1290"></a><tt class="py-lineno">1290</tt> <tt class="py-line"> <tt class="py-name">token_expiry</tt> <tt class="py-op">=</tt> <tt class="py-name">datetime</tt><tt class="py-op">.</tt><tt class="py-name">datetime</tt><tt class="py-op">.</tt><tt class="py-name">utcnow</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> <tt class="py-name">datetime</tt><tt class="py-op">.</tt><tt class="py-name">timedelta</tt><tt class="py-op">(</tt> </tt>
<a name="L1291"></a><tt class="py-lineno">1291</tt> <tt class="py-line"> <tt class="py-name">seconds</tt><tt class="py-op">=</tt><tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'expires_in'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L1292"></a><tt class="py-lineno">1292</tt> <tt class="py-line"> </tt>
<a name="L1293"></a><tt class="py-lineno">1293</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'id_token'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">d</tt><tt class="py-op">:</tt> </tt>
-<a name="L1294"></a><tt class="py-lineno">1294</tt> <tt class="py-line"> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'id_token'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-201" class="py-name" targets="Function oauth2client.client._extract_id_token()=oauth2client.client-module.html#_extract_id_token"><a title="oauth2client.client._extract_id_token" class="py-name" href="#" onclick="return doclink('link-201', '_extract_id_token', 'link-201');">_extract_id_token</a></tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'id_token'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1294"></a><tt class="py-lineno">1294</tt> <tt class="py-line"> <tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'id_token'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-223" class="py-name" targets="Function oauth2client.client._extract_id_token()=oauth2client.client-module.html#_extract_id_token"><a title="oauth2client.client._extract_id_token" class="py-name" href="#" onclick="return doclink('link-223', '_extract_id_token', 'link-223');">_extract_id_token</a></tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'id_token'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
<a name="L1295"></a><tt class="py-lineno">1295</tt> <tt class="py-line"> </tt>
-<a name="L1296"></a><tt class="py-lineno">1296</tt> <tt class="py-line"> <tt id="link-202" class="py-name"><a title="apiclient.discovery.logger
+<a name="L1296"></a><tt class="py-lineno">1296</tt> <tt class="py-line"> <tt id="link-224" class="py-name"><a title="apiclient.discovery.logger
oauth2client.appengine.logger
oauth2client.client.logger
oauth2client.crypt.logger
oauth2client.gce.logger
oauth2client.locked_file.logger
oauth2client.multistore_file.logger
-oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-202', 'logger', 'link-19');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Successfully retrieved access token'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1297"></a><tt class="py-lineno">1297</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-203" class="py-name" targets="Class oauth2client.client.OAuth2Credentials=oauth2client.client.OAuth2Credentials-class.html"><a title="oauth2client.client.OAuth2Credentials" class="py-name" href="#" onclick="return doclink('link-203', 'OAuth2Credentials', 'link-203');">OAuth2Credentials</a></tt><tt class="py-op">(</tt><tt class="py-name">access_token</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">client_id</tt><tt class="py-op">,</tt> </tt>
+oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-224', 'logger', 'link-19');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Successfully retrieved access token'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1297"></a><tt class="py-lineno">1297</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-225" class="py-name" targets="Class oauth2client.client.OAuth2Credentials=oauth2client.client.OAuth2Credentials-class.html"><a title="oauth2client.client.OAuth2Credentials" class="py-name" href="#" onclick="return doclink('link-225', 'OAuth2Credentials', 'link-225');">OAuth2Credentials</a></tt><tt class="py-op">(</tt><tt class="py-name">access_token</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">client_id</tt><tt class="py-op">,</tt> </tt>
<a name="L1298"></a><tt class="py-lineno">1298</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">client_secret</tt><tt class="py-op">,</tt> <tt class="py-name">refresh_token</tt><tt class="py-op">,</tt> <tt class="py-name">token_expiry</tt><tt class="py-op">,</tt> </tt>
<a name="L1299"></a><tt class="py-lineno">1299</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">token_uri</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">user_agent</tt><tt class="py-op">,</tt> </tt>
<a name="L1300"></a><tt class="py-lineno">1300</tt> <tt class="py-line"> <tt class="py-name">revoke_uri</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">revoke_uri</tt><tt class="py-op">,</tt> </tt>
-<a name="L1301"></a><tt class="py-lineno">1301</tt> <tt class="py-line"> <tt class="py-name">id_token</tt><tt class="py-op">=</tt><tt class="py-name">d</tt><tt class="py-op">.</tt><tt id="link-204" class="py-name"><a title="apiclient.schema.Schemas.get
+<a name="L1301"></a><tt class="py-lineno">1301</tt> <tt class="py-line"> <tt class="py-name">id_token</tt><tt class="py-op">=</tt><tt class="py-name">d</tt><tt class="py-op">.</tt><tt id="link-226" class="py-name"><a title="apiclient.schema.Schemas.get
oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-204', 'get', 'link-24');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'id_token'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-226', 'get', 'link-24');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'id_token'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
<a name="L1302"></a><tt class="py-lineno">1302</tt> <tt class="py-line"> <tt class="py-name">token_response</tt><tt class="py-op">=</tt><tt class="py-name">d</tt><tt class="py-op">)</tt> </tt>
<a name="L1303"></a><tt class="py-lineno">1303</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L1304"></a><tt class="py-lineno">1304</tt> <tt class="py-line"> <tt id="link-205" class="py-name"><a title="apiclient.discovery.logger
+<a name="L1304"></a><tt class="py-lineno">1304</tt> <tt class="py-line"> <tt id="link-227" class="py-name"><a title="apiclient.discovery.logger
oauth2client.appengine.logger
oauth2client.client.logger
oauth2client.crypt.logger
oauth2client.gce.logger
oauth2client.locked_file.logger
oauth2client.multistore_file.logger
-oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-205', 'logger', 'link-19');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Failed to retrieve access token: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
+oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-227', 'logger', 'link-19');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Failed to retrieve access token: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
<a name="L1305"></a><tt class="py-lineno">1305</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'error'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">d</tt><tt class="py-op">:</tt> </tt>
<a name="L1306"></a><tt class="py-lineno">1306</tt> <tt class="py-line"> <tt class="py-comment"># you never know what those providers got to say</tt> </tt>
<a name="L1307"></a><tt class="py-lineno">1307</tt> <tt class="py-line"> <tt class="py-name">error_msg</tt> <tt class="py-op">=</tt> <tt class="py-name">unicode</tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">[</tt><tt class="py-string">'error'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
<a name="L1308"></a><tt class="py-lineno">1308</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L1309"></a><tt class="py-lineno">1309</tt> <tt class="py-line"> <tt class="py-name">error_msg</tt> <tt class="py-op">=</tt> <tt class="py-string">'Invalid response: %s.'</tt> <tt class="py-op">%</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">resp</tt><tt class="py-op">.</tt><tt class="py-name">status</tt><tt class="py-op">)</tt> </tt>
-<a name="L1310"></a><tt class="py-lineno">1310</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-206" class="py-name"><a title="oauth2client.client.FlowExchangeError" class="py-name" href="#" onclick="return doclink('link-206', 'FlowExchangeError', 'link-194');">FlowExchangeError</a></tt><tt class="py-op">(</tt><tt class="py-name">error_msg</tt><tt class="py-op">)</tt> </tt>
+<a name="L1310"></a><tt class="py-lineno">1310</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-228" class="py-name"><a title="oauth2client.client.FlowExchangeError" class="py-name" href="#" onclick="return doclink('link-228', 'FlowExchangeError', 'link-213');">FlowExchangeError</a></tt><tt class="py-op">(</tt><tt class="py-name">error_msg</tt><tt class="py-op">)</tt> </tt>
</div></div><a name="L1311"></a><tt class="py-lineno">1311</tt> <tt class="py-line"> </tt>
<a name="flow_from_clientsecrets"></a><div id="flow_from_clientsecrets-def"><a name="L1312"></a><tt class="py-lineno">1312</tt> <tt class="py-line"> </tt>
-<a name="L1313"></a><tt class="py-lineno">1313</tt> <tt class="py-line"><tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-207" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-207', 'positional', 'link-55');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="L1313"></a><tt class="py-lineno">1313</tt> <tt class="py-line"><tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-229" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-229', 'positional', 'link-56');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
<a name="L1314"></a><tt class="py-lineno">1314</tt> <a class="py-toggle" href="#" id="flow_from_clientsecrets-toggle" onclick="return toggle('flow_from_clientsecrets');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.client-module.html#flow_from_clientsecrets">flow_from_clientsecrets</a><tt class="py-op">(</tt><tt class="py-param">filename</tt><tt class="py-op">,</tt> <tt class="py-param">scope</tt><tt class="py-op">,</tt> <tt class="py-param">redirect_uri</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
<a name="L1315"></a><tt class="py-lineno">1315</tt> <tt class="py-line"> <tt class="py-param">message</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">cache</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="flow_from_clientsecrets-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="flow_from_clientsecrets-expanded"><a name="L1316"></a><tt class="py-lineno">1316</tt> <tt class="py-line"> <tt class="py-docstring">"""Create a Flow from a clientsecrets file.</tt> </tt>
@@ -1772,31 +1771,31 @@
<a name="L1340"></a><tt class="py-lineno">1340</tt> <tt class="py-line"><tt class="py-docstring"> invalid.</tt> </tt>
<a name="L1341"></a><tt class="py-lineno">1341</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
<a name="L1342"></a><tt class="py-lineno">1342</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L1343"></a><tt class="py-lineno">1343</tt> <tt class="py-line"> <tt class="py-name">client_type</tt><tt class="py-op">,</tt> <tt class="py-name">client_info</tt> <tt class="py-op">=</tt> <tt id="link-208" class="py-name"><a title="oauth2client.clientsecrets" class="py-name" href="#" onclick="return doclink('link-208', 'clientsecrets', 'link-0');">clientsecrets</a></tt><tt class="py-op">.</tt><tt id="link-209" class="py-name" targets="Function oauth2client.clientsecrets.loadfile()=oauth2client.clientsecrets-module.html#loadfile"><a title="oauth2client.clientsecrets.loadfile" class="py-name" href="#" onclick="return doclink('link-209', 'loadfile', 'link-209');">loadfile</a></tt><tt class="py-op">(</tt><tt id="link-210" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
-oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-210', 'filename', 'link-175');">filename</a></tt><tt class="py-op">,</tt> <tt class="py-name">cache</tt><tt class="py-op">=</tt><tt class="py-name">cache</tt><tt class="py-op">)</tt> </tt>
-<a name="L1344"></a><tt class="py-lineno">1344</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">client_type</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt id="link-211" class="py-name"><a title="oauth2client.clientsecrets" class="py-name" href="#" onclick="return doclink('link-211', 'clientsecrets', 'link-0');">clientsecrets</a></tt><tt class="py-op">.</tt><tt id="link-212" class="py-name" targets="Variable oauth2client.clientsecrets.TYPE_WEB=oauth2client.clientsecrets-module.html#TYPE_WEB"><a title="oauth2client.clientsecrets.TYPE_WEB" class="py-name" href="#" onclick="return doclink('link-212', 'TYPE_WEB', 'link-212');">TYPE_WEB</a></tt><tt class="py-op">,</tt> <tt id="link-213" class="py-name"><a title="oauth2client.clientsecrets" class="py-name" href="#" onclick="return doclink('link-213', 'clientsecrets', 'link-0');">clientsecrets</a></tt><tt class="py-op">.</tt><tt id="link-214" class="py-name" targets="Variable oauth2client.clientsecrets.TYPE_INSTALLED=oauth2client.clientsecrets-module.html#TYPE_INSTALLED"><a title="oauth2client.clientsecrets.TYPE_INSTALLED" class="py-name" href="#" onclick="return doclink('link-214', 'TYPE_INSTALLED', 'link-214');">TYPE_INSTALLED</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1343"></a><tt class="py-lineno">1343</tt> <tt class="py-line"> <tt class="py-name">client_type</tt><tt class="py-op">,</tt> <tt class="py-name">client_info</tt> <tt class="py-op">=</tt> <tt id="link-230" class="py-name"><a title="oauth2client.clientsecrets" class="py-name" href="#" onclick="return doclink('link-230', 'clientsecrets', 'link-0');">clientsecrets</a></tt><tt class="py-op">.</tt><tt id="link-231" class="py-name" targets="Function oauth2client.clientsecrets.loadfile()=oauth2client.clientsecrets-module.html#loadfile"><a title="oauth2client.clientsecrets.loadfile" class="py-name" href="#" onclick="return doclink('link-231', 'loadfile', 'link-231');">loadfile</a></tt><tt class="py-op">(</tt><tt id="link-232" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
+oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-232', 'filename', 'link-191');">filename</a></tt><tt class="py-op">,</tt> <tt class="py-name">cache</tt><tt class="py-op">=</tt><tt class="py-name">cache</tt><tt class="py-op">)</tt> </tt>
+<a name="L1344"></a><tt class="py-lineno">1344</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">client_type</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt id="link-233" class="py-name"><a title="oauth2client.clientsecrets" class="py-name" href="#" onclick="return doclink('link-233', 'clientsecrets', 'link-0');">clientsecrets</a></tt><tt class="py-op">.</tt><tt id="link-234" class="py-name" targets="Variable oauth2client.clientsecrets.TYPE_WEB=oauth2client.clientsecrets-module.html#TYPE_WEB"><a title="oauth2client.clientsecrets.TYPE_WEB" class="py-name" href="#" onclick="return doclink('link-234', 'TYPE_WEB', 'link-234');">TYPE_WEB</a></tt><tt class="py-op">,</tt> <tt id="link-235" class="py-name"><a title="oauth2client.clientsecrets" class="py-name" href="#" onclick="return doclink('link-235', 'clientsecrets', 'link-0');">clientsecrets</a></tt><tt class="py-op">.</tt><tt id="link-236" class="py-name" targets="Variable oauth2client.clientsecrets.TYPE_INSTALLED=oauth2client.clientsecrets-module.html#TYPE_INSTALLED"><a title="oauth2client.clientsecrets.TYPE_INSTALLED" class="py-name" href="#" onclick="return doclink('link-236', 'TYPE_INSTALLED', 'link-236');">TYPE_INSTALLED</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L1345"></a><tt class="py-lineno">1345</tt> <tt class="py-line"> <tt class="py-name">constructor_kwargs</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt> </tt>
<a name="L1346"></a><tt class="py-lineno">1346</tt> <tt class="py-line"> <tt class="py-string">'redirect_uri'</tt><tt class="py-op">:</tt> <tt class="py-name">redirect_uri</tt><tt class="py-op">,</tt> </tt>
<a name="L1347"></a><tt class="py-lineno">1347</tt> <tt class="py-line"> <tt class="py-string">'auth_uri'</tt><tt class="py-op">:</tt> <tt class="py-name">client_info</tt><tt class="py-op">[</tt><tt class="py-string">'auth_uri'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
<a name="L1348"></a><tt class="py-lineno">1348</tt> <tt class="py-line"> <tt class="py-string">'token_uri'</tt><tt class="py-op">:</tt> <tt class="py-name">client_info</tt><tt class="py-op">[</tt><tt class="py-string">'token_uri'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
<a name="L1349"></a><tt class="py-lineno">1349</tt> <tt class="py-line"> <tt class="py-op">}</tt> </tt>
-<a name="L1350"></a><tt class="py-lineno">1350</tt> <tt class="py-line"> <tt class="py-name">revoke_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">client_info</tt><tt class="py-op">.</tt><tt id="link-215" class="py-name"><a title="apiclient.schema.Schemas.get
+<a name="L1350"></a><tt class="py-lineno">1350</tt> <tt class="py-line"> <tt class="py-name">revoke_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">client_info</tt><tt class="py-op">.</tt><tt id="link-237" class="py-name"><a title="apiclient.schema.Schemas.get
oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-215', 'get', 'link-24');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'revoke_uri'</tt><tt class="py-op">)</tt> </tt>
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-237', 'get', 'link-24');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'revoke_uri'</tt><tt class="py-op">)</tt> </tt>
<a name="L1351"></a><tt class="py-lineno">1351</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">revoke_uri</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
<a name="L1352"></a><tt class="py-lineno">1352</tt> <tt class="py-line"> <tt class="py-name">constructor_kwargs</tt><tt class="py-op">[</tt><tt class="py-string">'revoke_uri'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">revoke_uri</tt> </tt>
-<a name="L1353"></a><tt class="py-lineno">1353</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-216" class="py-name"><a title="oauth2client.client.OAuth2WebServerFlow" class="py-name" href="#" onclick="return doclink('link-216', 'OAuth2WebServerFlow', 'link-167');">OAuth2WebServerFlow</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L1353"></a><tt class="py-lineno">1353</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-238" class="py-name"><a title="oauth2client.client.OAuth2WebServerFlow" class="py-name" href="#" onclick="return doclink('link-238', 'OAuth2WebServerFlow', 'link-181');">OAuth2WebServerFlow</a></tt><tt class="py-op">(</tt> </tt>
<a name="L1354"></a><tt class="py-lineno">1354</tt> <tt class="py-line"> <tt class="py-name">client_info</tt><tt class="py-op">[</tt><tt class="py-string">'client_id'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">client_info</tt><tt class="py-op">[</tt><tt class="py-string">'client_secret'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
<a name="L1355"></a><tt class="py-lineno">1355</tt> <tt class="py-line"> <tt class="py-name">scope</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">constructor_kwargs</tt><tt class="py-op">)</tt> </tt>
<a name="L1356"></a><tt class="py-lineno">1356</tt> <tt class="py-line"> </tt>
-<a name="L1357"></a><tt class="py-lineno">1357</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-217" class="py-name"><a title="oauth2client.clientsecrets" class="py-name" href="#" onclick="return doclink('link-217', 'clientsecrets', 'link-0');">clientsecrets</a></tt><tt class="py-op">.</tt><tt id="link-218" class="py-name" targets="Class oauth2client.appengine.InvalidClientSecretsError=oauth2client.appengine.InvalidClientSecretsError-class.html,Class oauth2client.clientsecrets.InvalidClientSecretsError=oauth2client.clientsecrets.InvalidClientSecretsError-class.html"><a title="oauth2client.appengine.InvalidClientSecretsError
-oauth2client.clientsecrets.InvalidClientSecretsError" class="py-name" href="#" onclick="return doclink('link-218', 'InvalidClientSecretsError', 'link-218');">InvalidClientSecretsError</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1357"></a><tt class="py-lineno">1357</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-239" class="py-name"><a title="oauth2client.clientsecrets" class="py-name" href="#" onclick="return doclink('link-239', 'clientsecrets', 'link-0');">clientsecrets</a></tt><tt class="py-op">.</tt><tt id="link-240" class="py-name" targets="Class oauth2client.appengine.InvalidClientSecretsError=oauth2client.appengine.InvalidClientSecretsError-class.html,Class oauth2client.clientsecrets.InvalidClientSecretsError=oauth2client.clientsecrets.InvalidClientSecretsError-class.html"><a title="oauth2client.appengine.InvalidClientSecretsError
+oauth2client.clientsecrets.InvalidClientSecretsError" class="py-name" href="#" onclick="return doclink('link-240', 'InvalidClientSecretsError', 'link-240');">InvalidClientSecretsError</a></tt><tt class="py-op">:</tt> </tt>
<a name="L1358"></a><tt class="py-lineno">1358</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">message</tt><tt class="py-op">:</tt> </tt>
<a name="L1359"></a><tt class="py-lineno">1359</tt> <tt class="py-line"> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exit</tt><tt class="py-op">(</tt><tt class="py-name">message</tt><tt class="py-op">)</tt> </tt>
<a name="L1360"></a><tt class="py-lineno">1360</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L1361"></a><tt class="py-lineno">1361</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> </tt>
<a name="L1362"></a><tt class="py-lineno">1362</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L1363"></a><tt class="py-lineno">1363</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-219" class="py-name" targets="Class oauth2client.client.UnknownClientSecretsFlowError=oauth2client.client.UnknownClientSecretsFlowError-class.html"><a title="oauth2client.client.UnknownClientSecretsFlowError" class="py-name" href="#" onclick="return doclink('link-219', 'UnknownClientSecretsFlowError', 'link-219');">UnknownClientSecretsFlowError</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L1363"></a><tt class="py-lineno">1363</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-241" class="py-name" targets="Class oauth2client.client.UnknownClientSecretsFlowError=oauth2client.client.UnknownClientSecretsFlowError-class.html"><a title="oauth2client.client.UnknownClientSecretsFlowError" class="py-name" href="#" onclick="return doclink('link-241', 'UnknownClientSecretsFlowError', 'link-241');">UnknownClientSecretsFlowError</a></tt><tt class="py-op">(</tt> </tt>
<a name="L1364"></a><tt class="py-lineno">1364</tt> <tt class="py-line"> <tt class="py-string">'This OAuth 2.0 flow is unsupported: %r'</tt> <tt class="py-op">%</tt> <tt class="py-name">client_type</tt><tt class="py-op">)</tt> </tt>
</div><a name="L1365"></a><tt class="py-lineno">1365</tt> <tt class="py-line"> </tt><script type="text/javascript">
<!--
@@ -1828,7 +1827,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:26 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:47 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.client.AccessTokenCredentials-class.html b/docs/epy/oauth2client.client.AccessTokenCredentials-class.html
index 6a13172..96579fb 100644
--- a/docs/epy/oauth2client.client.AccessTokenCredentials-class.html
+++ b/docs/epy/oauth2client.client.AccessTokenCredentials-class.html
@@ -55,12 +55,25 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class AccessTokenCredentials</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.client-pysrc.html#AccessTokenCredentials">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_accesstoke" name="class_hierarchy_for_accesstoke">
-<area shape="rect" id="node1" href="oauth2client.client.AccessTokenCredentials-class.html" title="AccessTokenCredentials" alt="" coords="5,6,173,34"/>
-<area shape="rect" id="node2" href="oauth2client.client.Credentials-class.html" title="Credentials" alt="" coords="197,6,285,34"/>
-<area shape="rect" id="node3" href="oauth2client.client.OAuth2Credentials-class.html" title="OAuth2Credentials" alt="" coords="309,6,440,34"/>
+<center> <map id="uml_class_diagram_for_oauth2cl_15" name="uml_class_diagram_for_oauth2cl_15">
+<area shape="rect" id="node132" href="oauth2client.client.AccessTokenCredentials-class.html#__init__" title="Create an instance of OAuth2Credentials" alt="" coords="17,356,367,375"/>
+<area shape="rect" id="node132" href="oauth2client.client.AccessTokenCredentials-class.html#from_json" title="Instantiate a Credentials object from a JSON description of it." alt="" coords="17,375,367,393"/>
+<area shape="rect" id="node1" href="oauth2client.client.AccessTokenCredentials-class.html" title="Credentials object for OAuth 2.0." alt="" coords="5,323,379,399"/>
+<area shape="rect" id="node133" href="oauth2client.client.OAuth2Credentials-class.html#authorize" title="Authorize an httplib2.Http instance with these credentials." alt="" coords="108,129,275,148"/>
+<area shape="rect" id="node133" href="oauth2client.client.OAuth2Credentials-class.html#refresh" title="Forces a refresh of the access_token." alt="" coords="108,148,275,167"/>
+<area shape="rect" id="node133" href="oauth2client.client.OAuth2Credentials-class.html#revoke" title="Revokes a refresh_token and makes the credentials void." alt="" coords="108,167,275,185"/>
+<area shape="rect" id="node133" href="oauth2client.client.OAuth2Credentials-class.html#apply" title="Add the authorization to the headers." alt="" coords="108,185,275,204"/>
+<area shape="rect" id="node133" href="oauth2client.client.OAuth2Credentials-class.html#to_json" title="Creating a JSON representation of an instance of Credentials." alt="" coords="108,204,275,223"/>
+<area shape="rect" id="node133" href="oauth2client.client.OAuth2Credentials-class.html#access_token_expired" title="True if the credential is expired or invalid." alt="" coords="108,223,275,241"/>
+<area shape="rect" id="node133" href="oauth2client.client.OAuth2Credentials-class.html#set_store" title="Set the Storage for the credential." alt="" coords="108,241,275,260"/>
+<area shape="rect" id="node133" href="oauth2client.client.OAuth2Credentials-class.html#__getstate__" title="Trim the state down to something that can be pickled." alt="" coords="108,260,275,279"/>
+<area shape="rect" id="node133" href="oauth2client.client.OAuth2Credentials-class.html#__setstate__" title="Reconstitute the state of the object from being pickled." alt="" coords="108,279,275,297"/>
+<area shape="rect" id="node2" href="oauth2client.client.OAuth2Credentials-class.html" title="Credentials object for OAuth 2.0." alt="" coords="96,97,285,303"/>
+<area shape="rect" id="node134" href="oauth2client.client.Credentials-class.html#NON_SERIALIZED_MEMBERS" title="oauth2client.client.Credentials.NON_SERIALIZED_MEMBERS" alt="" coords="92,31,291,49"/>
+<area shape="rect" id="node134" href="oauth2client.client.Credentials-class.html#new_from_json" title="Utility class method to instantiate a Credentials subclass from a JSON representation produced by to_json()." alt="" coords="92,52,291,71"/>
+<area shape="rect" id="node3" href="oauth2client.client.Credentials-class.html" title="Base class for all Credentials objects." alt="" coords="80,6,301,77"/>
</map>
- <img src="class_hierarchy_for_accesstoke.gif" alt='' usemap="#class_hierarchy_for_accesstoke" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_oauth2cl_15.gif" alt='' usemap="#uml_class_diagram_for_oauth2cl_15" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -479,7 +492,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:24 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:45 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.client.AccessTokenCredentialsError-class.html b/docs/epy/oauth2client.client.AccessTokenCredentialsError-class.html
index 83622f7..e003e6a 100644
--- a/docs/epy/oauth2client.client.AccessTokenCredentialsError-class.html
+++ b/docs/epy/oauth2client.client.AccessTokenCredentialsError-class.html
@@ -55,13 +55,27 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class AccessTokenCredentialsError</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.client-pysrc.html#AccessTokenCredentialsError">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_accesstoke_2" name="class_hierarchy_for_accesstoke_2">
-<area shape="rect" id="node1" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
-<area shape="rect" id="node2" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
-<area shape="rect" id="node4" href="oauth2client.client.Error-class.html" title="Error" alt="" coords="68,123,119,151"/>
-<area shape="rect" id="node3" href="oauth2client.client.AccessTokenCredentialsError-class.html" title="AccessTokenCredentialsError" alt="" coords="205,6,400,34"/>
+<center> <map id="uml_class_diagram_for_oauth2cl_16" name="uml_class_diagram_for_oauth2cl_16">
+<area shape="rect" id="node1" href="oauth2client.client.AccessTokenCredentialsError-class.html" title="Having only the access_token means no refresh is possible." alt="" coords="5,443,205,487"/>
+<area shape="rect" id="node2" href="oauth2client.client.Error-class.html" title="Base error for this module." alt="" coords="77,379,131,423"/>
+<area shape="rect" id="node138" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="27,31,184,49"/>
+<area shape="rect" id="node138" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="27,49,184,68"/>
+<area shape="rect" id="node138" href="javascript:void(0);" title="x.__delattr__('name') <==> del x.name" alt="" coords="27,71,184,89"/>
+<area shape="rect" id="node138" href="javascript:void(0);" title="x.__getattribute__('name') <==> x.name" alt="" coords="27,89,184,108"/>
+<area shape="rect" id="node138" href="javascript:void(0);" title="x[y]" alt="" coords="27,108,184,127"/>
+<area shape="rect" id="node138" href="javascript:void(0);" title="x[i:j]" alt="" coords="27,127,184,145"/>
+<area shape="rect" id="node138" href="javascript:void(0);" title="helper for pickle" alt="" coords="27,145,184,164"/>
+<area shape="rect" id="node138" href="javascript:void(0);" title="repr(x)" alt="" coords="27,164,184,183"/>
+<area shape="rect" id="node138" href="javascript:void(0);" title="x.__setattr__('name', value) <==> x.name = value" alt="" coords="27,183,184,201"/>
+<area shape="rect" id="node138" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="27,201,184,220"/>
+<area shape="rect" id="node138" href="javascript:void(0);" title="str(x)" alt="" coords="27,220,184,239"/>
+<area shape="rect" id="node138" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="27,239,184,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="15,6,196,263"/>
+<area shape="rect" id="node137" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="41,316,168,335"/>
+<area shape="rect" id="node137" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="41,335,168,353"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all non-exit exceptions." alt="" coords="29,283,179,359"/>
</map>
- <img src="class_hierarchy_for_accesstoke_2.gif" alt='' usemap="#class_hierarchy_for_accesstoke_2" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_oauth2cl_16.gif" alt='' usemap="#uml_class_diagram_for_oauth2cl_16" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -167,7 +181,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:24 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:45 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.client.AccessTokenRefreshError-class.html b/docs/epy/oauth2client.client.AccessTokenRefreshError-class.html
index da66942..350e830 100644
--- a/docs/epy/oauth2client.client.AccessTokenRefreshError-class.html
+++ b/docs/epy/oauth2client.client.AccessTokenRefreshError-class.html
@@ -55,13 +55,27 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class AccessTokenRefreshError</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.client-pysrc.html#AccessTokenRefreshError">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_accesstoke_3" name="class_hierarchy_for_accesstoke_3">
-<area shape="rect" id="node1" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
-<area shape="rect" id="node2" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
-<area shape="rect" id="node4" href="oauth2client.client.Error-class.html" title="Error" alt="" coords="68,123,119,151"/>
-<area shape="rect" id="node3" href="oauth2client.client.AccessTokenRefreshError-class.html" title="AccessTokenRefreshError" alt="" coords="205,6,381,34"/>
+<center> <map id="uml_class_diagram_for_oauth2cl_17" name="uml_class_diagram_for_oauth2cl_17">
+<area shape="rect" id="node1" href="oauth2client.client.AccessTokenRefreshError-class.html" title="Error trying to refresh an expired access token." alt="" coords="5,443,184,487"/>
+<area shape="rect" id="node2" href="oauth2client.client.Error-class.html" title="Base error for this module." alt="" coords="68,379,121,423"/>
+<area shape="rect" id="node142" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="17,31,175,49"/>
+<area shape="rect" id="node142" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="17,49,175,68"/>
+<area shape="rect" id="node142" href="javascript:void(0);" title="x.__delattr__('name') <==> del x.name" alt="" coords="17,71,175,89"/>
+<area shape="rect" id="node142" href="javascript:void(0);" title="x.__getattribute__('name') <==> x.name" alt="" coords="17,89,175,108"/>
+<area shape="rect" id="node142" href="javascript:void(0);" title="x[y]" alt="" coords="17,108,175,127"/>
+<area shape="rect" id="node142" href="javascript:void(0);" title="x[i:j]" alt="" coords="17,127,175,145"/>
+<area shape="rect" id="node142" href="javascript:void(0);" title="helper for pickle" alt="" coords="17,145,175,164"/>
+<area shape="rect" id="node142" href="javascript:void(0);" title="repr(x)" alt="" coords="17,164,175,183"/>
+<area shape="rect" id="node142" href="javascript:void(0);" title="x.__setattr__('name', value) <==> x.name = value" alt="" coords="17,183,175,201"/>
+<area shape="rect" id="node142" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="17,201,175,220"/>
+<area shape="rect" id="node142" href="javascript:void(0);" title="str(x)" alt="" coords="17,220,175,239"/>
+<area shape="rect" id="node142" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="17,239,175,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,6,187,263"/>
+<area shape="rect" id="node141" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="32,316,159,335"/>
+<area shape="rect" id="node141" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="32,335,159,353"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all non-exit exceptions." alt="" coords="20,283,169,359"/>
</map>
- <img src="class_hierarchy_for_accesstoke_3.gif" alt='' usemap="#class_hierarchy_for_accesstoke_3" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_oauth2cl_17.gif" alt='' usemap="#uml_class_diagram_for_oauth2cl_17" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -167,7 +181,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:24 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:45 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.client.AssertionCredentials-class.html b/docs/epy/oauth2client.client.AssertionCredentials-class.html
index f5d38ea..6f718ad 100644
--- a/docs/epy/oauth2client.client.AssertionCredentials-class.html
+++ b/docs/epy/oauth2client.client.AssertionCredentials-class.html
@@ -55,12 +55,25 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class AssertionCredentials</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.client-pysrc.html#AssertionCredentials">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_assertionc" name="class_hierarchy_for_assertionc">
-<area shape="rect" id="node1" href="oauth2client.client.AssertionCredentials-class.html" title="AssertionCredentials" alt="" coords="5,6,147,34"/>
-<area shape="rect" id="node2" href="oauth2client.client.Credentials-class.html" title="Credentials" alt="" coords="171,6,259,34"/>
-<area shape="rect" id="node3" href="oauth2client.client.OAuth2Credentials-class.html" title="OAuth2Credentials" alt="" coords="283,6,413,34"/>
+<center> <map id="uml_class_diagram_for_oauth2cl_18" name="uml_class_diagram_for_oauth2cl_18">
+<area shape="rect" id="node143" href="oauth2client.client.AssertionCredentials-class.html#__init__" title="Constructor for AssertionFlowCredentials." alt="" coords="17,375,847,393"/>
+<area shape="rect" id="node1" href="oauth2client.client.AssertionCredentials-class.html" title="Abstract Credentials object used for OAuth 2.0 assertion grants." alt="" coords="5,342,859,399"/>
+<area shape="rect" id="node144" href="oauth2client.client.OAuth2Credentials-class.html#authorize" title="Authorize an httplib2.Http instance with these credentials." alt="" coords="348,129,515,148"/>
+<area shape="rect" id="node144" href="oauth2client.client.OAuth2Credentials-class.html#refresh" title="Forces a refresh of the access_token." alt="" coords="348,148,515,167"/>
+<area shape="rect" id="node144" href="oauth2client.client.OAuth2Credentials-class.html#revoke" title="Revokes a refresh_token and makes the credentials void." alt="" coords="348,167,515,185"/>
+<area shape="rect" id="node144" href="oauth2client.client.OAuth2Credentials-class.html#apply" title="Add the authorization to the headers." alt="" coords="348,185,515,204"/>
+<area shape="rect" id="node144" href="oauth2client.client.OAuth2Credentials-class.html#to_json" title="Creating a JSON representation of an instance of Credentials." alt="" coords="348,204,515,223"/>
+<area shape="rect" id="node144" href="oauth2client.client.OAuth2Credentials-class.html#from_json" title="Instantiate a Credentials object from a JSON description of it." alt="" coords="348,223,515,241"/>
+<area shape="rect" id="node144" href="oauth2client.client.OAuth2Credentials-class.html#access_token_expired" title="True if the credential is expired or invalid." alt="" coords="348,241,515,260"/>
+<area shape="rect" id="node144" href="oauth2client.client.OAuth2Credentials-class.html#set_store" title="Set the Storage for the credential." alt="" coords="348,260,515,279"/>
+<area shape="rect" id="node144" href="oauth2client.client.OAuth2Credentials-class.html#__getstate__" title="Trim the state down to something that can be pickled." alt="" coords="348,279,515,297"/>
+<area shape="rect" id="node144" href="oauth2client.client.OAuth2Credentials-class.html#__setstate__" title="Reconstitute the state of the object from being pickled." alt="" coords="348,297,515,316"/>
+<area shape="rect" id="node2" href="oauth2client.client.OAuth2Credentials-class.html" title="Credentials object for OAuth 2.0." alt="" coords="336,97,525,322"/>
+<area shape="rect" id="node145" href="oauth2client.client.Credentials-class.html#NON_SERIALIZED_MEMBERS" title="oauth2client.client.Credentials.NON_SERIALIZED_MEMBERS" alt="" coords="332,31,531,49"/>
+<area shape="rect" id="node145" href="oauth2client.client.Credentials-class.html#new_from_json" title="Utility class method to instantiate a Credentials subclass from a JSON representation produced by to_json()." alt="" coords="332,52,531,71"/>
+<area shape="rect" id="node3" href="oauth2client.client.Credentials-class.html" title="Base class for all Credentials objects." alt="" coords="320,6,541,77"/>
</map>
- <img src="class_hierarchy_for_assertionc.gif" alt='' usemap="#class_hierarchy_for_assertionc" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_oauth2cl_18.gif" alt='' usemap="#uml_class_diagram_for_oauth2cl_18" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -427,7 +440,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:24 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:45 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.client.Credentials-class.html b/docs/epy/oauth2client.client.Credentials-class.html
index ebd7e57..5409187 100644
--- a/docs/epy/oauth2client.client.Credentials-class.html
+++ b/docs/epy/oauth2client.client.Credentials-class.html
@@ -55,10 +55,18 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class Credentials</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.client-pysrc.html#Credentials">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_credential_5" name="class_hierarchy_for_credential_5">
-<area shape="rect" id="node1" href="oauth2client.client.Credentials-class.html" title="Credentials" alt="" coords="5,6,93,34"/>
+<center> <map id="uml_class_diagram_for_oauth2cl_19" name="uml_class_diagram_for_oauth2cl_19">
+<area shape="rect" id="node146" href="oauth2client.client.Credentials-class.html#NON_SERIALIZED_MEMBERS" title="oauth2client.client.Credentials.NON_SERIALIZED_MEMBERS" alt="" coords="17,31,216,49"/>
+<area shape="rect" id="node146" href="oauth2client.client.Credentials-class.html#authorize" title="Take an httplib2.Http instance (or equivalent) and authorizes it." alt="" coords="17,52,216,71"/>
+<area shape="rect" id="node146" href="oauth2client.client.Credentials-class.html#refresh" title="Forces a refresh of the access_token." alt="" coords="17,71,216,89"/>
+<area shape="rect" id="node146" href="oauth2client.client.Credentials-class.html#revoke" title="Revokes a refresh_token and makes the credentials void." alt="" coords="17,89,216,108"/>
+<area shape="rect" id="node146" href="oauth2client.client.Credentials-class.html#apply" title="Add the authorization to the headers." alt="" coords="17,108,216,127"/>
+<area shape="rect" id="node146" href="oauth2client.client.Credentials-class.html#to_json" title="Creating a JSON representation of an instance of Credentials." alt="" coords="17,127,216,145"/>
+<area shape="rect" id="node146" href="oauth2client.client.Credentials-class.html#new_from_json" title="Utility class method to instantiate a Credentials subclass from a JSON representation produced by to_json()." alt="" coords="17,145,216,164"/>
+<area shape="rect" id="node146" href="oauth2client.client.Credentials-class.html#from_json" title="Instantiate a Credentials object from a JSON description of it." alt="" coords="17,164,216,183"/>
+<area shape="rect" id="node1" href="oauth2client.client.Credentials-class.html" title="Base class for all Credentials objects." alt="" coords="5,6,227,189"/>
</map>
- <img src="class_hierarchy_for_credential_5.gif" alt='' usemap="#class_hierarchy_for_credential_5" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_oauth2cl_19.gif" alt='' usemap="#uml_class_diagram_for_oauth2cl_19" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -595,7 +603,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:24 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:45 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.client.Error-class.html b/docs/epy/oauth2client.client.Error-class.html
index 63e6eb4..38ee1a5 100644
--- a/docs/epy/oauth2client.client.Error-class.html
+++ b/docs/epy/oauth2client.client.Error-class.html
@@ -55,12 +55,26 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class Error</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.client-pysrc.html#Error">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_error_2" name="class_hierarchy_for_error_2">
-<area shape="rect" id="node1" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
-<area shape="rect" id="node2" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
-<area shape="rect" id="node3" href="oauth2client.client.Error-class.html" title="Error" alt="" coords="68,123,119,151"/>
+<center> <map id="uml_class_diagram_for_oauth2cl_20" name="uml_class_diagram_for_oauth2cl_20">
+<area shape="rect" id="node1" href="oauth2client.client.Error-class.html" title="Base error for this module." alt="" coords="68,379,121,423"/>
+<area shape="rect" id="node148" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="32,316,159,335"/>
+<area shape="rect" id="node148" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="32,335,159,353"/>
+<area shape="rect" id="node2" href="javascript:void(0);" title="Common base class for all non-exit exceptions." alt="" coords="20,283,169,359"/>
+<area shape="rect" id="node149" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="17,31,175,49"/>
+<area shape="rect" id="node149" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="17,49,175,68"/>
+<area shape="rect" id="node149" href="javascript:void(0);" title="x.__delattr__('name') <==> del x.name" alt="" coords="17,71,175,89"/>
+<area shape="rect" id="node149" href="javascript:void(0);" title="x.__getattribute__('name') <==> x.name" alt="" coords="17,89,175,108"/>
+<area shape="rect" id="node149" href="javascript:void(0);" title="x[y]" alt="" coords="17,108,175,127"/>
+<area shape="rect" id="node149" href="javascript:void(0);" title="x[i:j]" alt="" coords="17,127,175,145"/>
+<area shape="rect" id="node149" href="javascript:void(0);" title="helper for pickle" alt="" coords="17,145,175,164"/>
+<area shape="rect" id="node149" href="javascript:void(0);" title="repr(x)" alt="" coords="17,164,175,183"/>
+<area shape="rect" id="node149" href="javascript:void(0);" title="x.__setattr__('name', value) <==> x.name = value" alt="" coords="17,183,175,201"/>
+<area shape="rect" id="node149" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="17,201,175,220"/>
+<area shape="rect" id="node149" href="javascript:void(0);" title="str(x)" alt="" coords="17,220,175,239"/>
+<area shape="rect" id="node149" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="17,239,175,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,6,187,263"/>
</map>
- <img src="class_hierarchy_for_error_2.gif" alt='' usemap="#class_hierarchy_for_error_2" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_oauth2cl_20.gif" alt='' usemap="#uml_class_diagram_for_oauth2cl_20" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -166,7 +180,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:24 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:45 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.client.Flow-class.html b/docs/epy/oauth2client.client.Flow-class.html
index a80d8b4..e0ab885 100644
--- a/docs/epy/oauth2client.client.Flow-class.html
+++ b/docs/epy/oauth2client.client.Flow-class.html
@@ -55,10 +55,10 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class Flow</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.client-pysrc.html#Flow">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_flow" name="class_hierarchy_for_flow">
-<area shape="rect" id="node1" href="oauth2client.client.Flow-class.html" title="Flow" alt="" coords="5,6,56,34"/>
+<center> <map id="uml_class_diagram_for_oauth2cl_21" name="uml_class_diagram_for_oauth2cl_21">
+<area shape="rect" id="node1" href="oauth2client.client.Flow-class.html" title="Base class for all Flow objects." alt="" coords="5,6,59,50"/>
</map>
- <img src="class_hierarchy_for_flow.gif" alt='' usemap="#class_hierarchy_for_flow" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_oauth2cl_21.gif" alt='' usemap="#uml_class_diagram_for_oauth2cl_21" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -152,7 +152,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:25 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:45 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.client.FlowExchangeError-class.html b/docs/epy/oauth2client.client.FlowExchangeError-class.html
index 7982066..73d5582 100644
--- a/docs/epy/oauth2client.client.FlowExchangeError-class.html
+++ b/docs/epy/oauth2client.client.FlowExchangeError-class.html
@@ -55,13 +55,27 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class FlowExchangeError</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.client-pysrc.html#FlowExchangeError">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_flowexchan" name="class_hierarchy_for_flowexchan">
-<area shape="rect" id="node1" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
-<area shape="rect" id="node2" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
-<area shape="rect" id="node3" href="oauth2client.client.Error-class.html" title="Error" alt="" coords="68,123,119,151"/>
-<area shape="rect" id="node4" href="oauth2client.client.FlowExchangeError-class.html" title="FlowExchangeError" alt="" coords="205,6,341,34"/>
+<center> <map id="uml_class_diagram_for_oauth2cl_22" name="uml_class_diagram_for_oauth2cl_22">
+<area shape="rect" id="node1" href="oauth2client.client.FlowExchangeError-class.html" title="Error trying to exchange an authorization grant for an access token." alt="" coords="25,443,164,487"/>
+<area shape="rect" id="node2" href="oauth2client.client.Error-class.html" title="Base error for this module." alt="" coords="68,379,121,423"/>
+<area shape="rect" id="node154" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="17,31,175,49"/>
+<area shape="rect" id="node154" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="17,49,175,68"/>
+<area shape="rect" id="node154" href="javascript:void(0);" title="x.__delattr__('name') <==> del x.name" alt="" coords="17,71,175,89"/>
+<area shape="rect" id="node154" href="javascript:void(0);" title="x.__getattribute__('name') <==> x.name" alt="" coords="17,89,175,108"/>
+<area shape="rect" id="node154" href="javascript:void(0);" title="x[y]" alt="" coords="17,108,175,127"/>
+<area shape="rect" id="node154" href="javascript:void(0);" title="x[i:j]" alt="" coords="17,127,175,145"/>
+<area shape="rect" id="node154" href="javascript:void(0);" title="helper for pickle" alt="" coords="17,145,175,164"/>
+<area shape="rect" id="node154" href="javascript:void(0);" title="repr(x)" alt="" coords="17,164,175,183"/>
+<area shape="rect" id="node154" href="javascript:void(0);" title="x.__setattr__('name', value) <==> x.name = value" alt="" coords="17,183,175,201"/>
+<area shape="rect" id="node154" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="17,201,175,220"/>
+<area shape="rect" id="node154" href="javascript:void(0);" title="str(x)" alt="" coords="17,220,175,239"/>
+<area shape="rect" id="node154" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="17,239,175,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,6,187,263"/>
+<area shape="rect" id="node153" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="32,316,159,335"/>
+<area shape="rect" id="node153" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="32,335,159,353"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all non-exit exceptions." alt="" coords="20,283,169,359"/>
</map>
- <img src="class_hierarchy_for_flowexchan.gif" alt='' usemap="#class_hierarchy_for_flowexchan" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_oauth2cl_22.gif" alt='' usemap="#uml_class_diagram_for_oauth2cl_22" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -167,7 +181,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:25 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:45 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.client.MemoryCache-class.html b/docs/epy/oauth2client.client.MemoryCache-class.html
index 5a40a95..a6743e0 100644
--- a/docs/epy/oauth2client.client.MemoryCache-class.html
+++ b/docs/epy/oauth2client.client.MemoryCache-class.html
@@ -55,10 +55,14 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class MemoryCache</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.client-pysrc.html#MemoryCache">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_memorycach" name="class_hierarchy_for_memorycach">
-<area shape="rect" id="node1" href="oauth2client.client.MemoryCache-class.html" title="MemoryCache" alt="" coords="5,6,112,34"/>
+<center> <map id="uml_class_diagram_for_oauth2cl_23" name="uml_class_diagram_for_oauth2cl_23">
+<area shape="rect" id="node155" href="oauth2client.client.MemoryCache-class.html#__init__" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="17,39,140,57"/>
+<area shape="rect" id="node155" href="oauth2client.client.MemoryCache-class.html#get" title="oauth2client.client.MemoryCache.get" alt="" coords="17,57,140,76"/>
+<area shape="rect" id="node155" href="oauth2client.client.MemoryCache-class.html#set" title="oauth2client.client.MemoryCache.set" alt="" coords="17,76,140,95"/>
+<area shape="rect" id="node155" href="oauth2client.client.MemoryCache-class.html#delete" title="oauth2client.client.MemoryCache.delete" alt="" coords="17,95,140,113"/>
+<area shape="rect" id="node1" href="oauth2client.client.MemoryCache-class.html" title="httplib2 Cache implementation which only caches locally." alt="" coords="5,6,152,119"/>
</map>
- <img src="class_hierarchy_for_memorycach.gif" alt='' usemap="#class_hierarchy_for_memorycach" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_oauth2cl_23.gif" alt='' usemap="#uml_class_diagram_for_oauth2cl_23" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -266,7 +270,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:25 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:45 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.client.NonAsciiHeaderError-class.html b/docs/epy/oauth2client.client.NonAsciiHeaderError-class.html
index b88cbba..a95ae0d 100644
--- a/docs/epy/oauth2client.client.NonAsciiHeaderError-class.html
+++ b/docs/epy/oauth2client.client.NonAsciiHeaderError-class.html
@@ -55,13 +55,27 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class NonAsciiHeaderError</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.client-pysrc.html#NonAsciiHeaderError">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_nonasciihe" name="class_hierarchy_for_nonasciihe">
-<area shape="rect" id="node1" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
-<area shape="rect" id="node2" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
-<area shape="rect" id="node3" href="oauth2client.client.Error-class.html" title="Error" alt="" coords="68,123,119,151"/>
-<area shape="rect" id="node4" href="oauth2client.client.NonAsciiHeaderError-class.html" title="NonAsciiHeaderError" alt="" coords="205,6,349,34"/>
+<center> <map id="uml_class_diagram_for_oauth2cl_24" name="uml_class_diagram_for_oauth2cl_24">
+<area shape="rect" id="node1" href="oauth2client.client.NonAsciiHeaderError-class.html" title="Header names and values must be ASCII strings." alt="" coords="21,443,171,487"/>
+<area shape="rect" id="node2" href="oauth2client.client.Error-class.html" title="Base error for this module." alt="" coords="68,379,121,423"/>
+<area shape="rect" id="node159" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="17,31,175,49"/>
+<area shape="rect" id="node159" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="17,49,175,68"/>
+<area shape="rect" id="node159" href="javascript:void(0);" title="x.__delattr__('name') <==> del x.name" alt="" coords="17,71,175,89"/>
+<area shape="rect" id="node159" href="javascript:void(0);" title="x.__getattribute__('name') <==> x.name" alt="" coords="17,89,175,108"/>
+<area shape="rect" id="node159" href="javascript:void(0);" title="x[y]" alt="" coords="17,108,175,127"/>
+<area shape="rect" id="node159" href="javascript:void(0);" title="x[i:j]" alt="" coords="17,127,175,145"/>
+<area shape="rect" id="node159" href="javascript:void(0);" title="helper for pickle" alt="" coords="17,145,175,164"/>
+<area shape="rect" id="node159" href="javascript:void(0);" title="repr(x)" alt="" coords="17,164,175,183"/>
+<area shape="rect" id="node159" href="javascript:void(0);" title="x.__setattr__('name', value) <==> x.name = value" alt="" coords="17,183,175,201"/>
+<area shape="rect" id="node159" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="17,201,175,220"/>
+<area shape="rect" id="node159" href="javascript:void(0);" title="str(x)" alt="" coords="17,220,175,239"/>
+<area shape="rect" id="node159" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="17,239,175,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,6,187,263"/>
+<area shape="rect" id="node158" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="32,316,159,335"/>
+<area shape="rect" id="node158" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="32,335,159,353"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all non-exit exceptions." alt="" coords="20,283,169,359"/>
</map>
- <img src="class_hierarchy_for_nonasciihe.gif" alt='' usemap="#class_hierarchy_for_nonasciihe" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_oauth2cl_24.gif" alt='' usemap="#uml_class_diagram_for_oauth2cl_24" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -167,7 +181,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:25 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:45 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.client.OAuth2Credentials-class.html b/docs/epy/oauth2client.client.OAuth2Credentials-class.html
index 47e54cd..bfbdf65 100644
--- a/docs/epy/oauth2client.client.OAuth2Credentials-class.html
+++ b/docs/epy/oauth2client.client.OAuth2Credentials-class.html
@@ -55,11 +55,24 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class OAuth2Credentials</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.client-pysrc.html#OAuth2Credentials">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_oauth2cred" name="class_hierarchy_for_oauth2cred">
-<area shape="rect" id="node1" href="oauth2client.client.Credentials-class.html" title="Credentials" alt="" coords="5,6,93,34"/>
-<area shape="rect" id="node2" href="oauth2client.client.OAuth2Credentials-class.html" title="OAuth2Credentials" alt="" coords="117,6,248,34"/>
+<center> <map id="uml_class_diagram_for_oauth2cl_25" name="uml_class_diagram_for_oauth2cl_25">
+<area shape="rect" id="node160" href="oauth2client.client.OAuth2Credentials-class.html#__init__" title="Create an instance of OAuth2Credentials." alt="" coords="17,129,969,148"/>
+<area shape="rect" id="node160" href="oauth2client.client.OAuth2Credentials-class.html#authorize" title="Authorize an httplib2.Http instance with these credentials." alt="" coords="17,148,969,167"/>
+<area shape="rect" id="node160" href="oauth2client.client.OAuth2Credentials-class.html#refresh" title="Forces a refresh of the access_token." alt="" coords="17,167,969,185"/>
+<area shape="rect" id="node160" href="oauth2client.client.OAuth2Credentials-class.html#revoke" title="Revokes a refresh_token and makes the credentials void." alt="" coords="17,185,969,204"/>
+<area shape="rect" id="node160" href="oauth2client.client.OAuth2Credentials-class.html#apply" title="Add the authorization to the headers." alt="" coords="17,204,969,223"/>
+<area shape="rect" id="node160" href="oauth2client.client.OAuth2Credentials-class.html#to_json" title="Creating a JSON representation of an instance of Credentials." alt="" coords="17,223,969,241"/>
+<area shape="rect" id="node160" href="oauth2client.client.OAuth2Credentials-class.html#from_json" title="Instantiate a Credentials object from a JSON description of it." alt="" coords="17,241,969,260"/>
+<area shape="rect" id="node160" href="oauth2client.client.OAuth2Credentials-class.html#access_token_expired" title="True if the credential is expired or invalid." alt="" coords="17,260,969,279"/>
+<area shape="rect" id="node160" href="oauth2client.client.OAuth2Credentials-class.html#set_store" title="Set the Storage for the credential." alt="" coords="17,279,969,297"/>
+<area shape="rect" id="node160" href="oauth2client.client.OAuth2Credentials-class.html#__getstate__" title="Trim the state down to something that can be pickled." alt="" coords="17,297,969,316"/>
+<area shape="rect" id="node160" href="oauth2client.client.OAuth2Credentials-class.html#__setstate__" title="Reconstitute the state of the object from being pickled." alt="" coords="17,316,969,335"/>
+<area shape="rect" id="node1" href="oauth2client.client.OAuth2Credentials-class.html" title="Credentials object for OAuth 2.0." alt="" coords="5,97,981,341"/>
+<area shape="rect" id="node161" href="oauth2client.client.Credentials-class.html#NON_SERIALIZED_MEMBERS" title="oauth2client.client.Credentials.NON_SERIALIZED_MEMBERS" alt="" coords="393,31,592,49"/>
+<area shape="rect" id="node161" href="oauth2client.client.Credentials-class.html#new_from_json" title="Utility class method to instantiate a Credentials subclass from a JSON representation produced by to_json()." alt="" coords="393,52,592,71"/>
+<area shape="rect" id="node2" href="oauth2client.client.Credentials-class.html" title="Base class for all Credentials objects." alt="" coords="381,6,603,77"/>
</map>
- <img src="class_hierarchy_for_oauth2cred.gif" alt='' usemap="#class_hierarchy_for_oauth2cred" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_oauth2cl_25.gif" alt='' usemap="#uml_class_diagram_for_oauth2cl_25" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -1007,7 +1020,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:25 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:45 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.client.OAuth2WebServerFlow-class.html b/docs/epy/oauth2client.client.OAuth2WebServerFlow-class.html
index 3747fdc..f86442b 100644
--- a/docs/epy/oauth2client.client.OAuth2WebServerFlow-class.html
+++ b/docs/epy/oauth2client.client.OAuth2WebServerFlow-class.html
@@ -55,11 +55,14 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class OAuth2WebServerFlow</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.client-pysrc.html#OAuth2WebServerFlow">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_oauth2webs" name="class_hierarchy_for_oauth2webs">
-<area shape="rect" id="node1" href="oauth2client.client.Flow-class.html" title="Flow" alt="" coords="5,6,56,34"/>
-<area shape="rect" id="node2" href="oauth2client.client.OAuth2WebServerFlow-class.html" title="OAuth2WebServerFlow" alt="" coords="80,6,237,34"/>
+<center> <map id="uml_class_diagram_for_oauth2cl_26" name="uml_class_diagram_for_oauth2cl_26">
+<area shape="rect" id="node162" href="oauth2client.client.OAuth2WebServerFlow-class.html#__init__" title="Constructor for OAuth2WebServerFlow." alt="" coords="17,103,1189,121"/>
+<area shape="rect" id="node162" href="oauth2client.client.OAuth2WebServerFlow-class.html#step1_get_authorize_url" title="Returns a URI to redirect to the provider." alt="" coords="17,121,1189,140"/>
+<area shape="rect" id="node162" href="oauth2client.client.OAuth2WebServerFlow-class.html#step2_exchange" title="Exhanges a code for OAuth2Credentials." alt="" coords="17,140,1189,159"/>
+<area shape="rect" id="node1" href="oauth2client.client.OAuth2WebServerFlow-class.html" title="Does the Web Server Flow for OAuth 2.0." alt="" coords="5,70,1200,165"/>
+<area shape="rect" id="node2" href="oauth2client.client.Flow-class.html" title="Base class for all Flow objects." alt="" coords="576,6,629,50"/>
</map>
- <img src="class_hierarchy_for_oauth2webs.gif" alt='' usemap="#class_hierarchy_for_oauth2webs" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_oauth2cl_26.gif" alt='' usemap="#uml_class_diagram_for_oauth2cl_26" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -374,7 +377,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:25 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:45 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.client.SignedJwtAssertionCredentials-class.html b/docs/epy/oauth2client.client.SignedJwtAssertionCredentials-class.html
index 9a184a3..bb7b870 100644
--- a/docs/epy/oauth2client.client.SignedJwtAssertionCredentials-class.html
+++ b/docs/epy/oauth2client.client.SignedJwtAssertionCredentials-class.html
@@ -55,13 +55,27 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class SignedJwtAssertionCredentials</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.client-pysrc.html#SignedJwtAssertionCredentials">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_signedjwta" name="class_hierarchy_for_signedjwta">
-<area shape="rect" id="node1" href="oauth2client.client.AssertionCredentials-class.html" title="AssertionCredentials" alt="" coords="5,6,147,34"/>
-<area shape="rect" id="node2" href="oauth2client.client.Credentials-class.html" title="Credentials" alt="" coords="171,6,259,34"/>
-<area shape="rect" id="node3" href="oauth2client.client.OAuth2Credentials-class.html" title="OAuth2Credentials" alt="" coords="283,6,413,34"/>
-<area shape="rect" id="node4" href="oauth2client.client.SignedJwtAssertionCredentials-class.html" title="SignedJwtAssertionCredentials" alt="" coords="437,6,640,34"/>
+<center> <map id="uml_class_diagram_for_oauth2cl_27" name="uml_class_diagram_for_oauth2cl_27">
+<area shape="rect" id="node164" href="oauth2client.client.SignedJwtAssertionCredentials-class.html#MAX_TOKEN_LIFETIME_SECS" title="oauth2client.client.SignedJwtAssertionCredentials.MAX_TOKEN_LIFETIME_SECS" alt="" coords="17,412,1177,431"/>
+<area shape="rect" id="node164" href="oauth2client.client.SignedJwtAssertionCredentials-class.html#__init__" title="Constructor for SignedJwtAssertionCredentials." alt="" coords="17,433,1177,452"/>
+<area shape="rect" id="node164" href="oauth2client.client.SignedJwtAssertionCredentials-class.html#from_json" title="Instantiate a Credentials object from a JSON description of it." alt="" coords="17,452,1177,471"/>
+<area shape="rect" id="node1" href="oauth2client.client.SignedJwtAssertionCredentials-class.html" title="Credentials object used for OAuth 2.0 Signed JWT assertion grants." alt="" coords="5,387,1189,477"/>
+<area shape="rect" id="node2" href="oauth2client.client.AssertionCredentials-class.html" title="Abstract Credentials object used for OAuth 2.0 assertion grants." alt="" coords="524,323,671,367"/>
+<area shape="rect" id="node166" href="oauth2client.client.OAuth2Credentials-class.html#authorize" title="Authorize an httplib2.Http instance with these credentials." alt="" coords="513,129,680,148"/>
+<area shape="rect" id="node166" href="oauth2client.client.OAuth2Credentials-class.html#refresh" title="Forces a refresh of the access_token." alt="" coords="513,148,680,167"/>
+<area shape="rect" id="node166" href="oauth2client.client.OAuth2Credentials-class.html#revoke" title="Revokes a refresh_token and makes the credentials void." alt="" coords="513,167,680,185"/>
+<area shape="rect" id="node166" href="oauth2client.client.OAuth2Credentials-class.html#apply" title="Add the authorization to the headers." alt="" coords="513,185,680,204"/>
+<area shape="rect" id="node166" href="oauth2client.client.OAuth2Credentials-class.html#to_json" title="Creating a JSON representation of an instance of Credentials." alt="" coords="513,204,680,223"/>
+<area shape="rect" id="node166" href="oauth2client.client.OAuth2Credentials-class.html#access_token_expired" title="True if the credential is expired or invalid." alt="" coords="513,223,680,241"/>
+<area shape="rect" id="node166" href="oauth2client.client.OAuth2Credentials-class.html#set_store" title="Set the Storage for the credential." alt="" coords="513,241,680,260"/>
+<area shape="rect" id="node166" href="oauth2client.client.OAuth2Credentials-class.html#__getstate__" title="Trim the state down to something that can be pickled." alt="" coords="513,260,680,279"/>
+<area shape="rect" id="node166" href="oauth2client.client.OAuth2Credentials-class.html#__setstate__" title="Reconstitute the state of the object from being pickled." alt="" coords="513,279,680,297"/>
+<area shape="rect" id="node3" href="oauth2client.client.OAuth2Credentials-class.html" title="Credentials object for OAuth 2.0." alt="" coords="501,97,691,303"/>
+<area shape="rect" id="node167" href="oauth2client.client.Credentials-class.html#NON_SERIALIZED_MEMBERS" title="oauth2client.client.Credentials.NON_SERIALIZED_MEMBERS" alt="" coords="497,31,696,49"/>
+<area shape="rect" id="node167" href="oauth2client.client.Credentials-class.html#new_from_json" title="Utility class method to instantiate a Credentials subclass from a JSON representation produced by to_json()." alt="" coords="497,52,696,71"/>
+<area shape="rect" id="node4" href="oauth2client.client.Credentials-class.html" title="Base class for all Credentials objects." alt="" coords="485,6,707,77"/>
</map>
- <img src="class_hierarchy_for_signedjwta.gif" alt='' usemap="#class_hierarchy_for_signedjwta" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_oauth2cl_27.gif" alt='' usemap="#uml_class_diagram_for_oauth2cl_27" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -336,7 +350,7 @@
defaults to Google's endpoints but any OAuth 2.0 provider can be used.
revoke_uri: string, URI for revoke endpoint.
kwargs: kwargs, Additional parameters to add to the JWT token, for
- example prn=joe@xample.org.
+ example sub=joe@xample.org.
</pre>
<dl class="fields">
@@ -434,7 +448,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:25 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:45 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.client.Storage-class.html b/docs/epy/oauth2client.client.Storage-class.html
index 36c1525..929f712 100644
--- a/docs/epy/oauth2client.client.Storage-class.html
+++ b/docs/epy/oauth2client.client.Storage-class.html
@@ -55,10 +55,18 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class Storage</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.client-pysrc.html#Storage">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_storage" name="class_hierarchy_for_storage">
-<area shape="rect" id="node1" href="oauth2client.client.Storage-class.html" title="Storage" alt="" coords="5,6,72,34"/>
+<center> <map id="uml_class_diagram_for_oauth2cl_28" name="uml_class_diagram_for_oauth2cl_28">
+<area shape="rect" id="node168" href="oauth2client.client.Storage-class.html#acquire_lock" title="Acquires any lock necessary to access this Storage." alt="" coords="17,39,188,57"/>
+<area shape="rect" id="node168" href="oauth2client.client.Storage-class.html#release_lock" title="Release the Storage lock." alt="" coords="17,57,188,76"/>
+<area shape="rect" id="node168" href="oauth2client.client.Storage-class.html#locked_get" title="Retrieve credential." alt="" coords="17,76,188,95"/>
+<area shape="rect" id="node168" href="oauth2client.client.Storage-class.html#locked_put" title="Write a credential." alt="" coords="17,95,188,113"/>
+<area shape="rect" id="node168" href="oauth2client.client.Storage-class.html#locked_delete" title="Delete a credential." alt="" coords="17,113,188,132"/>
+<area shape="rect" id="node168" href="oauth2client.client.Storage-class.html#get" title="Retrieve credential." alt="" coords="17,132,188,151"/>
+<area shape="rect" id="node168" href="oauth2client.client.Storage-class.html#put" title="Write a credential." alt="" coords="17,151,188,169"/>
+<area shape="rect" id="node168" href="oauth2client.client.Storage-class.html#delete" title="Delete credential." alt="" coords="17,169,188,188"/>
+<area shape="rect" id="node1" href="oauth2client.client.Storage-class.html" title="Base class for all Storage objects." alt="" coords="5,6,200,194"/>
</map>
- <img src="class_hierarchy_for_storage.gif" alt='' usemap="#class_hierarchy_for_storage" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_oauth2cl_28.gif" alt='' usemap="#uml_class_diagram_for_oauth2cl_28" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -524,7 +532,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:25 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:45 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.client.TokenRevokeError-class.html b/docs/epy/oauth2client.client.TokenRevokeError-class.html
index 17c27a6..39e2f12 100644
--- a/docs/epy/oauth2client.client.TokenRevokeError-class.html
+++ b/docs/epy/oauth2client.client.TokenRevokeError-class.html
@@ -55,13 +55,27 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class TokenRevokeError</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.client-pysrc.html#TokenRevokeError">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_tokenrevok" name="class_hierarchy_for_tokenrevok">
-<area shape="rect" id="node1" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
-<area shape="rect" id="node2" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
-<area shape="rect" id="node3" href="oauth2client.client.Error-class.html" title="Error" alt="" coords="68,123,119,151"/>
-<area shape="rect" id="node4" href="oauth2client.client.TokenRevokeError-class.html" title="TokenRevokeError" alt="" coords="205,6,336,34"/>
+<center> <map id="uml_class_diagram_for_oauth2cl_29" name="uml_class_diagram_for_oauth2cl_29">
+<area shape="rect" id="node1" href="oauth2client.client.TokenRevokeError-class.html" title="Error trying to revoke a token." alt="" coords="28,443,161,487"/>
+<area shape="rect" id="node2" href="oauth2client.client.Error-class.html" title="Base error for this module." alt="" coords="68,379,121,423"/>
+<area shape="rect" id="node172" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="17,31,175,49"/>
+<area shape="rect" id="node172" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="17,49,175,68"/>
+<area shape="rect" id="node172" href="javascript:void(0);" title="x.__delattr__('name') <==> del x.name" alt="" coords="17,71,175,89"/>
+<area shape="rect" id="node172" href="javascript:void(0);" title="x.__getattribute__('name') <==> x.name" alt="" coords="17,89,175,108"/>
+<area shape="rect" id="node172" href="javascript:void(0);" title="x[y]" alt="" coords="17,108,175,127"/>
+<area shape="rect" id="node172" href="javascript:void(0);" title="x[i:j]" alt="" coords="17,127,175,145"/>
+<area shape="rect" id="node172" href="javascript:void(0);" title="helper for pickle" alt="" coords="17,145,175,164"/>
+<area shape="rect" id="node172" href="javascript:void(0);" title="repr(x)" alt="" coords="17,164,175,183"/>
+<area shape="rect" id="node172" href="javascript:void(0);" title="x.__setattr__('name', value) <==> x.name = value" alt="" coords="17,183,175,201"/>
+<area shape="rect" id="node172" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="17,201,175,220"/>
+<area shape="rect" id="node172" href="javascript:void(0);" title="str(x)" alt="" coords="17,220,175,239"/>
+<area shape="rect" id="node172" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="17,239,175,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,6,187,263"/>
+<area shape="rect" id="node171" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="32,316,159,335"/>
+<area shape="rect" id="node171" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="32,335,159,353"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all non-exit exceptions." alt="" coords="20,283,169,359"/>
</map>
- <img src="class_hierarchy_for_tokenrevok.gif" alt='' usemap="#class_hierarchy_for_tokenrevok" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_oauth2cl_29.gif" alt='' usemap="#uml_class_diagram_for_oauth2cl_29" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -167,7 +181,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:25 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:45 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.client.UnknownClientSecretsFlowError-class.html b/docs/epy/oauth2client.client.UnknownClientSecretsFlowError-class.html
index 2a2465c..c67d00c 100644
--- a/docs/epy/oauth2client.client.UnknownClientSecretsFlowError-class.html
+++ b/docs/epy/oauth2client.client.UnknownClientSecretsFlowError-class.html
@@ -55,13 +55,27 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class UnknownClientSecretsFlowError</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.client-pysrc.html#UnknownClientSecretsFlowError">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_unknowncli" name="class_hierarchy_for_unknowncli">
-<area shape="rect" id="node1" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
-<area shape="rect" id="node2" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
-<area shape="rect" id="node3" href="oauth2client.client.Error-class.html" title="Error" alt="" coords="68,123,119,151"/>
-<area shape="rect" id="node4" href="oauth2client.client.UnknownClientSecretsFlowError-class.html" title="UnknownClientSecretsFlowError" alt="" coords="205,6,416,34"/>
+<center> <map id="uml_class_diagram_for_oauth2cl_30" name="uml_class_diagram_for_oauth2cl_30">
+<area shape="rect" id="node1" href="oauth2client.client.UnknownClientSecretsFlowError-class.html" title="The client secrets file called for an unknown type of OAuth 2.0 flow." alt="" coords="5,443,221,487"/>
+<area shape="rect" id="node2" href="oauth2client.client.Error-class.html" title="Base error for this module." alt="" coords="85,379,139,423"/>
+<area shape="rect" id="node176" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="35,31,192,49"/>
+<area shape="rect" id="node176" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="35,49,192,68"/>
+<area shape="rect" id="node176" href="javascript:void(0);" title="x.__delattr__('name') <==> del x.name" alt="" coords="35,71,192,89"/>
+<area shape="rect" id="node176" href="javascript:void(0);" title="x.__getattribute__('name') <==> x.name" alt="" coords="35,89,192,108"/>
+<area shape="rect" id="node176" href="javascript:void(0);" title="x[y]" alt="" coords="35,108,192,127"/>
+<area shape="rect" id="node176" href="javascript:void(0);" title="x[i:j]" alt="" coords="35,127,192,145"/>
+<area shape="rect" id="node176" href="javascript:void(0);" title="helper for pickle" alt="" coords="35,145,192,164"/>
+<area shape="rect" id="node176" href="javascript:void(0);" title="repr(x)" alt="" coords="35,164,192,183"/>
+<area shape="rect" id="node176" href="javascript:void(0);" title="x.__setattr__('name', value) <==> x.name = value" alt="" coords="35,183,192,201"/>
+<area shape="rect" id="node176" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="35,201,192,220"/>
+<area shape="rect" id="node176" href="javascript:void(0);" title="str(x)" alt="" coords="35,220,192,239"/>
+<area shape="rect" id="node176" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="35,239,192,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="23,6,204,263"/>
+<area shape="rect" id="node175" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="49,316,176,335"/>
+<area shape="rect" id="node175" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="49,335,176,353"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all non-exit exceptions." alt="" coords="37,283,187,359"/>
</map>
- <img src="class_hierarchy_for_unknowncli.gif" alt='' usemap="#class_hierarchy_for_unknowncli" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_oauth2cl_30.gif" alt='' usemap="#uml_class_diagram_for_oauth2cl_30" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -167,7 +181,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:25 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:45 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.client.VerifyJwtTokenError-class.html b/docs/epy/oauth2client.client.VerifyJwtTokenError-class.html
index cfa04b7..641041d 100644
--- a/docs/epy/oauth2client.client.VerifyJwtTokenError-class.html
+++ b/docs/epy/oauth2client.client.VerifyJwtTokenError-class.html
@@ -55,13 +55,27 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class VerifyJwtTokenError</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.client-pysrc.html#VerifyJwtTokenError">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_verifyjwtt" name="class_hierarchy_for_verifyjwtt">
-<area shape="rect" id="node1" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
-<area shape="rect" id="node2" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
-<area shape="rect" id="node3" href="oauth2client.client.Error-class.html" title="Error" alt="" coords="68,123,119,151"/>
-<area shape="rect" id="node4" href="oauth2client.client.VerifyJwtTokenError-class.html" title="VerifyJwtTokenError" alt="" coords="205,6,347,34"/>
+<center> <map id="uml_class_diagram_for_oauth2cl_31" name="uml_class_diagram_for_oauth2cl_31">
+<area shape="rect" id="node1" href="oauth2client.client.VerifyJwtTokenError-class.html" title="Could on retrieve certificates for validation." alt="" coords="23,443,167,487"/>
+<area shape="rect" id="node2" href="oauth2client.client.Error-class.html" title="Base error for this module." alt="" coords="68,379,121,423"/>
+<area shape="rect" id="node180" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="17,31,175,49"/>
+<area shape="rect" id="node180" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="17,49,175,68"/>
+<area shape="rect" id="node180" href="javascript:void(0);" title="x.__delattr__('name') <==> del x.name" alt="" coords="17,71,175,89"/>
+<area shape="rect" id="node180" href="javascript:void(0);" title="x.__getattribute__('name') <==> x.name" alt="" coords="17,89,175,108"/>
+<area shape="rect" id="node180" href="javascript:void(0);" title="x[y]" alt="" coords="17,108,175,127"/>
+<area shape="rect" id="node180" href="javascript:void(0);" title="x[i:j]" alt="" coords="17,127,175,145"/>
+<area shape="rect" id="node180" href="javascript:void(0);" title="helper for pickle" alt="" coords="17,145,175,164"/>
+<area shape="rect" id="node180" href="javascript:void(0);" title="repr(x)" alt="" coords="17,164,175,183"/>
+<area shape="rect" id="node180" href="javascript:void(0);" title="x.__setattr__('name', value) <==> x.name = value" alt="" coords="17,183,175,201"/>
+<area shape="rect" id="node180" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="17,201,175,220"/>
+<area shape="rect" id="node180" href="javascript:void(0);" title="str(x)" alt="" coords="17,220,175,239"/>
+<area shape="rect" id="node180" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="17,239,175,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,6,187,263"/>
+<area shape="rect" id="node179" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="32,316,159,335"/>
+<area shape="rect" id="node179" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="32,335,159,353"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all non-exit exceptions." alt="" coords="20,283,169,359"/>
</map>
- <img src="class_hierarchy_for_verifyjwtt.gif" alt='' usemap="#class_hierarchy_for_verifyjwtt" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_oauth2cl_31.gif" alt='' usemap="#uml_class_diagram_for_oauth2cl_31" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -167,7 +181,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:25 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:45 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.clientsecrets-module.html b/docs/epy/oauth2client.clientsecrets-module.html
index 86babec..6a927e2 100644
--- a/docs/epy/oauth2client.clientsecrets-module.html
+++ b/docs/epy/oauth2client.clientsecrets-module.html
@@ -376,7 +376,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:23 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:42 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.clientsecrets-pysrc.html b/docs/epy/oauth2client.clientsecrets-pysrc.html
index 6fb6d56..4c74258 100644
--- a/docs/epy/oauth2client.clientsecrets-pysrc.html
+++ b/docs/epy/oauth2client.clientsecrets-pysrc.html
@@ -249,7 +249,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:26 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:47 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.clientsecrets.Error-class.html b/docs/epy/oauth2client.clientsecrets.Error-class.html
index b07f34d..86e94ae 100644
--- a/docs/epy/oauth2client.clientsecrets.Error-class.html
+++ b/docs/epy/oauth2client.clientsecrets.Error-class.html
@@ -55,12 +55,26 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class Error</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.clientsecrets-pysrc.html#Error">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_error_3" name="class_hierarchy_for_error_3">
-<area shape="rect" id="node1" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
-<area shape="rect" id="node2" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
-<area shape="rect" id="node3" href="oauth2client.clientsecrets.Error-class.html" title="Error" alt="" coords="68,123,119,151"/>
+<center> <map id="uml_class_diagram_for_oauth2cl_32" name="uml_class_diagram_for_oauth2cl_32">
+<area shape="rect" id="node1" href="oauth2client.clientsecrets.Error-class.html" title="Base error for this module." alt="" coords="68,379,121,423"/>
+<area shape="rect" id="node182" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="32,316,159,335"/>
+<area shape="rect" id="node182" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="32,335,159,353"/>
+<area shape="rect" id="node2" href="javascript:void(0);" title="Common base class for all non-exit exceptions." alt="" coords="20,283,169,359"/>
+<area shape="rect" id="node183" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="17,31,175,49"/>
+<area shape="rect" id="node183" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="17,49,175,68"/>
+<area shape="rect" id="node183" href="javascript:void(0);" title="x.__delattr__('name') <==> del x.name" alt="" coords="17,71,175,89"/>
+<area shape="rect" id="node183" href="javascript:void(0);" title="x.__getattribute__('name') <==> x.name" alt="" coords="17,89,175,108"/>
+<area shape="rect" id="node183" href="javascript:void(0);" title="x[y]" alt="" coords="17,108,175,127"/>
+<area shape="rect" id="node183" href="javascript:void(0);" title="x[i:j]" alt="" coords="17,127,175,145"/>
+<area shape="rect" id="node183" href="javascript:void(0);" title="helper for pickle" alt="" coords="17,145,175,164"/>
+<area shape="rect" id="node183" href="javascript:void(0);" title="repr(x)" alt="" coords="17,164,175,183"/>
+<area shape="rect" id="node183" href="javascript:void(0);" title="x.__setattr__('name', value) <==> x.name = value" alt="" coords="17,183,175,201"/>
+<area shape="rect" id="node183" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="17,201,175,220"/>
+<area shape="rect" id="node183" href="javascript:void(0);" title="str(x)" alt="" coords="17,220,175,239"/>
+<area shape="rect" id="node183" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="17,239,175,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,6,187,263"/>
</map>
- <img src="class_hierarchy_for_error_3.gif" alt='' usemap="#class_hierarchy_for_error_3" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_oauth2cl_32.gif" alt='' usemap="#uml_class_diagram_for_oauth2cl_32" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -166,7 +180,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:25 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:45 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.clientsecrets.InvalidClientSecretsError-class.html b/docs/epy/oauth2client.clientsecrets.InvalidClientSecretsError-class.html
index 2e49eba..9351122 100644
--- a/docs/epy/oauth2client.clientsecrets.InvalidClientSecretsError-class.html
+++ b/docs/epy/oauth2client.clientsecrets.InvalidClientSecretsError-class.html
@@ -55,13 +55,27 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class InvalidClientSecretsError</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.clientsecrets-pysrc.html#InvalidClientSecretsError">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_invalidcli_2" name="class_hierarchy_for_invalidcli_2">
-<area shape="rect" id="node1" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
-<area shape="rect" id="node2" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
-<area shape="rect" id="node3" href="oauth2client.clientsecrets.Error-class.html" title="Error" alt="" coords="68,123,119,151"/>
-<area shape="rect" id="node4" href="oauth2client.clientsecrets.InvalidClientSecretsError-class.html" title="InvalidClientSecretsError" alt="" coords="205,6,371,34"/>
+<center> <map id="uml_class_diagram_for_oauth2cl_33" name="uml_class_diagram_for_oauth2cl_33">
+<area shape="rect" id="node1" href="oauth2client.clientsecrets.InvalidClientSecretsError-class.html" title="Format of ClientSecrets file is invalid." alt="" coords="11,443,181,487"/>
+<area shape="rect" id="node2" href="oauth2client.clientsecrets.Error-class.html" title="Base error for this module." alt="" coords="68,379,121,423"/>
+<area shape="rect" id="node187" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="17,31,175,49"/>
+<area shape="rect" id="node187" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="17,49,175,68"/>
+<area shape="rect" id="node187" href="javascript:void(0);" title="x.__delattr__('name') <==> del x.name" alt="" coords="17,71,175,89"/>
+<area shape="rect" id="node187" href="javascript:void(0);" title="x.__getattribute__('name') <==> x.name" alt="" coords="17,89,175,108"/>
+<area shape="rect" id="node187" href="javascript:void(0);" title="x[y]" alt="" coords="17,108,175,127"/>
+<area shape="rect" id="node187" href="javascript:void(0);" title="x[i:j]" alt="" coords="17,127,175,145"/>
+<area shape="rect" id="node187" href="javascript:void(0);" title="helper for pickle" alt="" coords="17,145,175,164"/>
+<area shape="rect" id="node187" href="javascript:void(0);" title="repr(x)" alt="" coords="17,164,175,183"/>
+<area shape="rect" id="node187" href="javascript:void(0);" title="x.__setattr__('name', value) <==> x.name = value" alt="" coords="17,183,175,201"/>
+<area shape="rect" id="node187" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="17,201,175,220"/>
+<area shape="rect" id="node187" href="javascript:void(0);" title="str(x)" alt="" coords="17,220,175,239"/>
+<area shape="rect" id="node187" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="17,239,175,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,6,187,263"/>
+<area shape="rect" id="node186" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="32,316,159,335"/>
+<area shape="rect" id="node186" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="32,335,159,353"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all non-exit exceptions." alt="" coords="20,283,169,359"/>
</map>
- <img src="class_hierarchy_for_invalidcli_2.gif" alt='' usemap="#class_hierarchy_for_invalidcli_2" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_oauth2cl_33.gif" alt='' usemap="#uml_class_diagram_for_oauth2cl_33" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -167,7 +181,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:25 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:46 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.crypt-module.html b/docs/epy/oauth2client.crypt-module.html
index c2bdde2..f2286ee 100644
--- a/docs/epy/oauth2client.crypt-module.html
+++ b/docs/epy/oauth2client.crypt-module.html
@@ -381,7 +381,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:23 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:42 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.crypt-pysrc.html b/docs/epy/oauth2client.crypt-pysrc.html
index fdbdc5a..8d75e18 100644
--- a/docs/epy/oauth2client.crypt-pysrc.html
+++ b/docs/epy/oauth2client.crypt-pysrc.html
@@ -125,7 +125,7 @@
<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"><tt class="py-docstring"> key that this object was constructed with.</tt> </tt>
<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"> <tt class="py-name">crypto</tt><tt class="py-op">.</tt><tt id="link-5" class="py-name" targets="Method apiclient.push.Subscription.verify()=apiclient.push.Subscription-class.html#verify"><a title="apiclient.push.Subscription.verify" class="py-name" href="#" onclick="return doclink('link-5', 'verify', 'link-5');">verify</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pubkey</tt><tt class="py-op">,</tt> <tt class="py-name">signature</tt><tt class="py-op">,</tt> <tt class="py-name">message</tt><tt class="py-op">,</tt> <tt class="py-string">'sha256'</tt><tt class="py-op">)</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"> <tt class="py-name">crypto</tt><tt class="py-op">.</tt><tt class="py-name">verify</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pubkey</tt><tt class="py-op">,</tt> <tt class="py-name">signature</tt><tt class="py-op">,</tt> <tt class="py-name">message</tt><tt class="py-op">,</tt> <tt class="py-string">'sha256'</tt><tt class="py-op">)</tt> </tt>
<a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">True</tt> </tt>
<a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"> <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
<a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
@@ -149,7 +149,7 @@
<a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> <tt class="py-name">pubkey</tt> <tt class="py-op">=</tt> <tt class="py-name">crypto</tt><tt class="py-op">.</tt><tt class="py-name">load_certificate</tt><tt class="py-op">(</tt><tt class="py-name">crypto</tt><tt class="py-op">.</tt><tt class="py-name">FILETYPE_PEM</tt><tt class="py-op">,</tt> <tt class="py-name">key_pem</tt><tt class="py-op">)</tt> </tt>
<a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"> <tt class="py-name">pubkey</tt> <tt class="py-op">=</tt> <tt class="py-name">crypto</tt><tt class="py-op">.</tt><tt class="py-name">load_privatekey</tt><tt class="py-op">(</tt><tt class="py-name">crypto</tt><tt class="py-op">.</tt><tt class="py-name">FILETYPE_PEM</tt><tt class="py-op">,</tt> <tt class="py-name">key_pem</tt><tt class="py-op">)</tt> </tt>
-<a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-6" class="py-name" targets="Variable oauth2client.crypt.OpenSSLVerifier=oauth2client.crypt-module.html#OpenSSLVerifier"><a title="oauth2client.crypt.OpenSSLVerifier" class="py-name" href="#" onclick="return doclink('link-6', 'OpenSSLVerifier', 'link-6');">OpenSSLVerifier</a></tt><tt class="py-op">(</tt><tt class="py-name">pubkey</tt><tt class="py-op">)</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-5" class="py-name" targets="Variable oauth2client.crypt.OpenSSLVerifier=oauth2client.crypt-module.html#OpenSSLVerifier"><a title="oauth2client.crypt.OpenSSLVerifier" class="py-name" href="#" onclick="return doclink('link-5', 'OpenSSLVerifier', 'link-5');">OpenSSLVerifier</a></tt><tt class="py-op">(</tt><tt class="py-name">pubkey</tt><tt class="py-op">)</tt> </tt>
</div></div><a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"> </tt>
<a name="OpenSSLSigner"></a><div id="OpenSSLSigner-def"><a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"> </tt>
<a name="L92"></a><tt class="py-lineno"> 92</tt> <a class="py-toggle" href="#" id="OpenSSLSigner-toggle" onclick="return toggle('OpenSSLSigner');">-</a><tt class="py-line"> <tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.crypt.OpenSSLSigner-class.html">OpenSSLSigner</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
@@ -192,11 +192,11 @@
<a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"> <tt class="py-name">pkey</tt> <tt class="py-op">=</tt> <tt class="py-name">crypto</tt><tt class="py-op">.</tt><tt class="py-name">load_privatekey</tt><tt class="py-op">(</tt><tt class="py-name">crypto</tt><tt class="py-op">.</tt><tt class="py-name">FILETYPE_PEM</tt><tt class="py-op">,</tt> <tt class="py-name">key</tt><tt class="py-op">)</tt> </tt>
<a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"> <tt class="py-name">pkey</tt> <tt class="py-op">=</tt> <tt class="py-name">crypto</tt><tt class="py-op">.</tt><tt class="py-name">load_pkcs12</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">password</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">get_privatekey</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-7" class="py-name" targets="Variable oauth2client.crypt.OpenSSLSigner=oauth2client.crypt-module.html#OpenSSLSigner"><a title="oauth2client.crypt.OpenSSLSigner" class="py-name" href="#" onclick="return doclink('link-7', 'OpenSSLSigner', 'link-7');">OpenSSLSigner</a></tt><tt class="py-op">(</tt><tt class="py-name">pkey</tt><tt class="py-op">)</tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-6" class="py-name" targets="Variable oauth2client.crypt.OpenSSLSigner=oauth2client.crypt-module.html#OpenSSLSigner"><a title="oauth2client.crypt.OpenSSLSigner" class="py-name" href="#" onclick="return doclink('link-6', 'OpenSSLSigner', 'link-6');">OpenSSLSigner</a></tt><tt class="py-op">(</tt><tt class="py-name">pkey</tt><tt class="py-op">)</tt> </tt>
</div></div><a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"> </tt>
<a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>
-<a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"> <tt id="link-8" class="py-name"><a title="oauth2client.crypt.OpenSSLVerifier" class="py-name" href="#" onclick="return doclink('link-8', 'OpenSSLVerifier', 'link-6');">OpenSSLVerifier</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"> <tt id="link-9" class="py-name"><a title="oauth2client.crypt.OpenSSLSigner" class="py-name" href="#" onclick="return doclink('link-9', 'OpenSSLSigner', 'link-7');">OpenSSLSigner</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"> <tt id="link-7" class="py-name"><a title="oauth2client.crypt.OpenSSLVerifier" class="py-name" href="#" onclick="return doclink('link-7', 'OpenSSLVerifier', 'link-5');">OpenSSLVerifier</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"> <tt id="link-8" class="py-name"><a title="oauth2client.crypt.OpenSSLSigner" class="py-name" href="#" onclick="return doclink('link-8', 'OpenSSLSigner', 'link-6');">OpenSSLSigner</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
<a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"> </tt>
<a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"> </tt>
<a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
@@ -228,7 +228,7 @@
<a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"><tt class="py-docstring"> key that this object was constructed with.</tt> </tt>
<a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
<a name="L167"></a><tt class="py-lineno">167</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">PKCS1_v1_5</tt><tt class="py-op">.</tt><tt class="py-name">new</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pubkey</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-10" class="py-name"><a title="apiclient.push.Subscription.verify" class="py-name" href="#" onclick="return doclink('link-10', 'verify', 'link-5');">verify</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">PKCS1_v1_5</tt><tt class="py-op">.</tt><tt class="py-name">new</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pubkey</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">verify</tt><tt class="py-op">(</tt> </tt>
<a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"> <tt class="py-name">SHA256</tt><tt class="py-op">.</tt><tt class="py-name">new</tt><tt class="py-op">(</tt><tt class="py-name">message</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">signature</tt><tt class="py-op">)</tt> </tt>
<a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"> <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
<a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
@@ -254,7 +254,7 @@
<a name="L191"></a><tt class="py-lineno">191</tt> <tt class="py-line"> <tt class="py-string">'Try using PyOpenSSL if native code is an option.'</tt><tt class="py-op">)</tt> </tt>
<a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"> <tt class="py-name">pubkey</tt> <tt class="py-op">=</tt> <tt class="py-name">RSA</tt><tt class="py-op">.</tt><tt class="py-name">importKey</tt><tt class="py-op">(</tt><tt class="py-name">key_pem</tt><tt class="py-op">)</tt> </tt>
-<a name="L194"></a><tt class="py-lineno">194</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-11" class="py-name" targets="Variable oauth2client.crypt.PyCryptoVerifier=oauth2client.crypt-module.html#PyCryptoVerifier"><a title="oauth2client.crypt.PyCryptoVerifier" class="py-name" href="#" onclick="return doclink('link-11', 'PyCryptoVerifier', 'link-11');">PyCryptoVerifier</a></tt><tt class="py-op">(</tt><tt class="py-name">pubkey</tt><tt class="py-op">)</tt> </tt>
+<a name="L194"></a><tt class="py-lineno">194</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-9" class="py-name" targets="Variable oauth2client.crypt.PyCryptoVerifier=oauth2client.crypt-module.html#PyCryptoVerifier"><a title="oauth2client.crypt.PyCryptoVerifier" class="py-name" href="#" onclick="return doclink('link-9', 'PyCryptoVerifier', 'link-9');">PyCryptoVerifier</a></tt><tt class="py-op">(</tt><tt class="py-name">pubkey</tt><tt class="py-op">)</tt> </tt>
</div></div><a name="L195"></a><tt class="py-lineno">195</tt> <tt class="py-line"> </tt>
<a name="PyCryptoSigner"></a><div id="PyCryptoSigner-def"><a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"> </tt>
<a name="L197"></a><tt class="py-lineno">197</tt> <a class="py-toggle" href="#" id="PyCryptoSigner-toggle" onclick="return toggle('PyCryptoSigner');">-</a><tt class="py-line"> <tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.crypt.PyCryptoSigner-class.html">PyCryptoSigner</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
@@ -301,19 +301,19 @@
<a name="L238"></a><tt class="py-lineno">238</tt> <tt class="py-line"> <tt class="py-string">'Try converting to a "PEM" '</tt> </tt>
<a name="L239"></a><tt class="py-lineno">239</tt> <tt class="py-line"> <tt class="py-string">'(openssl pkcs12 -in xxxxx.p12 -nodes -nocerts > privatekey.pem) '</tt> </tt>
<a name="L240"></a><tt class="py-lineno">240</tt> <tt class="py-line"> <tt class="py-string">'or using PyOpenSSL if native code is an option.'</tt><tt class="py-op">)</tt> </tt>
-<a name="L241"></a><tt class="py-lineno">241</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-12" class="py-name" targets="Variable oauth2client.crypt.PyCryptoSigner=oauth2client.crypt-module.html#PyCryptoSigner"><a title="oauth2client.crypt.PyCryptoSigner" class="py-name" href="#" onclick="return doclink('link-12', 'PyCryptoSigner', 'link-12');">PyCryptoSigner</a></tt><tt class="py-op">(</tt><tt class="py-name">pkey</tt><tt class="py-op">)</tt> </tt>
+<a name="L241"></a><tt class="py-lineno">241</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-10" class="py-name" targets="Variable oauth2client.crypt.PyCryptoSigner=oauth2client.crypt-module.html#PyCryptoSigner"><a title="oauth2client.crypt.PyCryptoSigner" class="py-name" href="#" onclick="return doclink('link-10', 'PyCryptoSigner', 'link-10');">PyCryptoSigner</a></tt><tt class="py-op">(</tt><tt class="py-name">pkey</tt><tt class="py-op">)</tt> </tt>
</div></div><a name="L242"></a><tt class="py-lineno">242</tt> <tt class="py-line"> </tt>
<a name="L243"></a><tt class="py-lineno">243</tt> <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>
-<a name="L244"></a><tt class="py-lineno">244</tt> <tt class="py-line"> <tt id="link-13" class="py-name"><a title="oauth2client.crypt.PyCryptoVerifier" class="py-name" href="#" onclick="return doclink('link-13', 'PyCryptoVerifier', 'link-11');">PyCryptoVerifier</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L245"></a><tt class="py-lineno">245</tt> <tt class="py-line"> <tt id="link-14" class="py-name"><a title="oauth2client.crypt.PyCryptoSigner" class="py-name" href="#" onclick="return doclink('link-14', 'PyCryptoSigner', 'link-12');">PyCryptoSigner</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L244"></a><tt class="py-lineno">244</tt> <tt class="py-line"> <tt id="link-11" class="py-name"><a title="oauth2client.crypt.PyCryptoVerifier" class="py-name" href="#" onclick="return doclink('link-11', 'PyCryptoVerifier', 'link-9');">PyCryptoVerifier</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L245"></a><tt class="py-lineno">245</tt> <tt class="py-line"> <tt id="link-12" class="py-name"><a title="oauth2client.crypt.PyCryptoSigner" class="py-name" href="#" onclick="return doclink('link-12', 'PyCryptoSigner', 'link-10');">PyCryptoSigner</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
<a name="L246"></a><tt class="py-lineno">246</tt> <tt class="py-line"> </tt>
<a name="L247"></a><tt class="py-lineno">247</tt> <tt class="py-line"> </tt>
-<a name="L248"></a><tt class="py-lineno">248</tt> <tt class="py-line"><tt class="py-keyword">if</tt> <tt id="link-15" class="py-name"><a title="oauth2client.crypt.OpenSSLSigner" class="py-name" href="#" onclick="return doclink('link-15', 'OpenSSLSigner', 'link-7');">OpenSSLSigner</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L249"></a><tt class="py-lineno">249</tt> <tt class="py-line"> <tt id="link-16" class="py-name" targets="Variable oauth2client.crypt.Signer=oauth2client.crypt-module.html#Signer"><a title="oauth2client.crypt.Signer" class="py-name" href="#" onclick="return doclink('link-16', 'Signer', 'link-16');">Signer</a></tt> <tt class="py-op">=</tt> <tt id="link-17" class="py-name"><a title="oauth2client.crypt.OpenSSLSigner" class="py-name" href="#" onclick="return doclink('link-17', 'OpenSSLSigner', 'link-7');">OpenSSLSigner</a></tt> </tt>
-<a name="L250"></a><tt class="py-lineno">250</tt> <tt class="py-line"> <tt id="link-18" class="py-name" targets="Variable oauth2client.crypt.Verifier=oauth2client.crypt-module.html#Verifier"><a title="oauth2client.crypt.Verifier" class="py-name" href="#" onclick="return doclink('link-18', 'Verifier', 'link-18');">Verifier</a></tt> <tt class="py-op">=</tt> <tt id="link-19" class="py-name"><a title="oauth2client.crypt.OpenSSLVerifier" class="py-name" href="#" onclick="return doclink('link-19', 'OpenSSLVerifier', 'link-6');">OpenSSLVerifier</a></tt> </tt>
-<a name="L251"></a><tt class="py-lineno">251</tt> <tt class="py-line"><tt class="py-keyword">elif</tt> <tt id="link-20" class="py-name"><a title="oauth2client.crypt.PyCryptoSigner" class="py-name" href="#" onclick="return doclink('link-20', 'PyCryptoSigner', 'link-12');">PyCryptoSigner</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L252"></a><tt class="py-lineno">252</tt> <tt class="py-line"> <tt id="link-21" class="py-name"><a title="oauth2client.crypt.Signer" class="py-name" href="#" onclick="return doclink('link-21', 'Signer', 'link-16');">Signer</a></tt> <tt class="py-op">=</tt> <tt id="link-22" class="py-name"><a title="oauth2client.crypt.PyCryptoSigner" class="py-name" href="#" onclick="return doclink('link-22', 'PyCryptoSigner', 'link-12');">PyCryptoSigner</a></tt> </tt>
-<a name="L253"></a><tt class="py-lineno">253</tt> <tt class="py-line"> <tt id="link-23" class="py-name"><a title="oauth2client.crypt.Verifier" class="py-name" href="#" onclick="return doclink('link-23', 'Verifier', 'link-18');">Verifier</a></tt> <tt class="py-op">=</tt> <tt id="link-24" class="py-name"><a title="oauth2client.crypt.PyCryptoVerifier" class="py-name" href="#" onclick="return doclink('link-24', 'PyCryptoVerifier', 'link-11');">PyCryptoVerifier</a></tt> </tt>
+<a name="L248"></a><tt class="py-lineno">248</tt> <tt class="py-line"><tt class="py-keyword">if</tt> <tt id="link-13" class="py-name"><a title="oauth2client.crypt.OpenSSLSigner" class="py-name" href="#" onclick="return doclink('link-13', 'OpenSSLSigner', 'link-6');">OpenSSLSigner</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L249"></a><tt class="py-lineno">249</tt> <tt class="py-line"> <tt id="link-14" class="py-name" targets="Variable oauth2client.crypt.Signer=oauth2client.crypt-module.html#Signer"><a title="oauth2client.crypt.Signer" class="py-name" href="#" onclick="return doclink('link-14', 'Signer', 'link-14');">Signer</a></tt> <tt class="py-op">=</tt> <tt id="link-15" class="py-name"><a title="oauth2client.crypt.OpenSSLSigner" class="py-name" href="#" onclick="return doclink('link-15', 'OpenSSLSigner', 'link-6');">OpenSSLSigner</a></tt> </tt>
+<a name="L250"></a><tt class="py-lineno">250</tt> <tt class="py-line"> <tt id="link-16" class="py-name" targets="Variable oauth2client.crypt.Verifier=oauth2client.crypt-module.html#Verifier"><a title="oauth2client.crypt.Verifier" class="py-name" href="#" onclick="return doclink('link-16', 'Verifier', 'link-16');">Verifier</a></tt> <tt class="py-op">=</tt> <tt id="link-17" class="py-name"><a title="oauth2client.crypt.OpenSSLVerifier" class="py-name" href="#" onclick="return doclink('link-17', 'OpenSSLVerifier', 'link-5');">OpenSSLVerifier</a></tt> </tt>
+<a name="L251"></a><tt class="py-lineno">251</tt> <tt class="py-line"><tt class="py-keyword">elif</tt> <tt id="link-18" class="py-name"><a title="oauth2client.crypt.PyCryptoSigner" class="py-name" href="#" onclick="return doclink('link-18', 'PyCryptoSigner', 'link-10');">PyCryptoSigner</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L252"></a><tt class="py-lineno">252</tt> <tt class="py-line"> <tt id="link-19" class="py-name"><a title="oauth2client.crypt.Signer" class="py-name" href="#" onclick="return doclink('link-19', 'Signer', 'link-14');">Signer</a></tt> <tt class="py-op">=</tt> <tt id="link-20" class="py-name"><a title="oauth2client.crypt.PyCryptoSigner" class="py-name" href="#" onclick="return doclink('link-20', 'PyCryptoSigner', 'link-10');">PyCryptoSigner</a></tt> </tt>
+<a name="L253"></a><tt class="py-lineno">253</tt> <tt class="py-line"> <tt id="link-21" class="py-name"><a title="oauth2client.crypt.Verifier" class="py-name" href="#" onclick="return doclink('link-21', 'Verifier', 'link-16');">Verifier</a></tt> <tt class="py-op">=</tt> <tt id="link-22" class="py-name"><a title="oauth2client.crypt.PyCryptoVerifier" class="py-name" href="#" onclick="return doclink('link-22', 'PyCryptoVerifier', 'link-9');">PyCryptoVerifier</a></tt> </tt>
<a name="L254"></a><tt class="py-lineno">254</tt> <tt class="py-line"><tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
<a name="L255"></a><tt class="py-lineno">255</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">ImportError</tt><tt class="py-op">(</tt><tt class="py-string">'No encryption library found. Please install either '</tt> </tt>
<a name="L256"></a><tt class="py-lineno">256</tt> <tt class="py-line"> <tt class="py-string">'PyOpenSSL, or PyCrypto 2.6 or later'</tt><tt class="py-op">)</tt> </tt>
@@ -349,22 +349,22 @@
<a name="L286"></a><tt class="py-lineno">286</tt> <tt class="py-line"> <tt class="py-name">header</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'typ'</tt><tt class="py-op">:</tt> <tt class="py-string">'JWT'</tt><tt class="py-op">,</tt> <tt class="py-string">'alg'</tt><tt class="py-op">:</tt> <tt class="py-string">'RS256'</tt><tt class="py-op">}</tt> </tt>
<a name="L287"></a><tt class="py-lineno">287</tt> <tt class="py-line"> </tt>
<a name="L288"></a><tt class="py-lineno">288</tt> <tt class="py-line"> <tt class="py-name">segments</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> </tt>
-<a name="L289"></a><tt class="py-lineno">289</tt> <tt class="py-line"> <tt id="link-25" class="py-name" targets="Function oauth2client.crypt._urlsafe_b64encode()=oauth2client.crypt-module.html#_urlsafe_b64encode"><a title="oauth2client.crypt._urlsafe_b64encode" class="py-name" href="#" onclick="return doclink('link-25', '_urlsafe_b64encode', 'link-25');">_urlsafe_b64encode</a></tt><tt class="py-op">(</tt><tt id="link-26" class="py-name" targets="Function oauth2client.crypt._json_encode()=oauth2client.crypt-module.html#_json_encode"><a title="oauth2client.crypt._json_encode" class="py-name" href="#" onclick="return doclink('link-26', '_json_encode', 'link-26');">_json_encode</a></tt><tt class="py-op">(</tt><tt class="py-name">header</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L290"></a><tt class="py-lineno">290</tt> <tt class="py-line"> <tt id="link-27" class="py-name"><a title="oauth2client.crypt._urlsafe_b64encode" class="py-name" href="#" onclick="return doclink('link-27', '_urlsafe_b64encode', 'link-25');">_urlsafe_b64encode</a></tt><tt class="py-op">(</tt><tt id="link-28" class="py-name"><a title="oauth2client.crypt._json_encode" class="py-name" href="#" onclick="return doclink('link-28', '_json_encode', 'link-26');">_json_encode</a></tt><tt class="py-op">(</tt><tt class="py-name">payload</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L289"></a><tt class="py-lineno">289</tt> <tt class="py-line"> <tt id="link-23" class="py-name" targets="Function oauth2client.crypt._urlsafe_b64encode()=oauth2client.crypt-module.html#_urlsafe_b64encode"><a title="oauth2client.crypt._urlsafe_b64encode" class="py-name" href="#" onclick="return doclink('link-23', '_urlsafe_b64encode', 'link-23');">_urlsafe_b64encode</a></tt><tt class="py-op">(</tt><tt id="link-24" class="py-name" targets="Function oauth2client.crypt._json_encode()=oauth2client.crypt-module.html#_json_encode"><a title="oauth2client.crypt._json_encode" class="py-name" href="#" onclick="return doclink('link-24', '_json_encode', 'link-24');">_json_encode</a></tt><tt class="py-op">(</tt><tt class="py-name">header</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L290"></a><tt class="py-lineno">290</tt> <tt class="py-line"> <tt id="link-25" class="py-name"><a title="oauth2client.crypt._urlsafe_b64encode" class="py-name" href="#" onclick="return doclink('link-25', '_urlsafe_b64encode', 'link-23');">_urlsafe_b64encode</a></tt><tt class="py-op">(</tt><tt id="link-26" class="py-name"><a title="oauth2client.crypt._json_encode" class="py-name" href="#" onclick="return doclink('link-26', '_json_encode', 'link-24');">_json_encode</a></tt><tt class="py-op">(</tt><tt class="py-name">payload</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
<a name="L291"></a><tt class="py-lineno">291</tt> <tt class="py-line"> <tt class="py-op">]</tt> </tt>
<a name="L292"></a><tt class="py-lineno">292</tt> <tt class="py-line"> <tt class="py-name">signing_input</tt> <tt class="py-op">=</tt> <tt class="py-string">'.'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">segments</tt><tt class="py-op">)</tt> </tt>
<a name="L293"></a><tt class="py-lineno">293</tt> <tt class="py-line"> </tt>
<a name="L294"></a><tt class="py-lineno">294</tt> <tt class="py-line"> <tt class="py-name">signature</tt> <tt class="py-op">=</tt> <tt class="py-name">signer</tt><tt class="py-op">.</tt><tt class="py-name">sign</tt><tt class="py-op">(</tt><tt class="py-name">signing_input</tt><tt class="py-op">)</tt> </tt>
-<a name="L295"></a><tt class="py-lineno">295</tt> <tt class="py-line"> <tt class="py-name">segments</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-29" class="py-name"><a title="oauth2client.crypt._urlsafe_b64encode" class="py-name" href="#" onclick="return doclink('link-29', '_urlsafe_b64encode', 'link-25');">_urlsafe_b64encode</a></tt><tt class="py-op">(</tt><tt class="py-name">signature</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L295"></a><tt class="py-lineno">295</tt> <tt class="py-line"> <tt class="py-name">segments</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt id="link-27" class="py-name"><a title="oauth2client.crypt._urlsafe_b64encode" class="py-name" href="#" onclick="return doclink('link-27', '_urlsafe_b64encode', 'link-23');">_urlsafe_b64encode</a></tt><tt class="py-op">(</tt><tt class="py-name">signature</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L296"></a><tt class="py-lineno">296</tt> <tt class="py-line"> </tt>
-<a name="L297"></a><tt class="py-lineno">297</tt> <tt class="py-line"> <tt id="link-30" class="py-name"><a title="apiclient.discovery.logger
+<a name="L297"></a><tt class="py-lineno">297</tt> <tt class="py-line"> <tt id="link-28" class="py-name"><a title="apiclient.discovery.logger
oauth2client.appengine.logger
oauth2client.client.logger
oauth2client.crypt.logger
oauth2client.gce.logger
oauth2client.locked_file.logger
oauth2client.multistore_file.logger
-oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-30', 'logger', 'link-4');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">segments</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-28', 'logger', 'link-4');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">segments</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L298"></a><tt class="py-lineno">298</tt> <tt class="py-line"> </tt>
<a name="L299"></a><tt class="py-lineno">299</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">'.'</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">segments</tt><tt class="py-op">)</tt> </tt>
</div><a name="L300"></a><tt class="py-lineno">300</tt> <tt class="py-line"> </tt>
@@ -389,68 +389,68 @@
<a name="L319"></a><tt class="py-lineno">319</tt> <tt class="py-line"> <tt class="py-name">segments</tt> <tt class="py-op">=</tt> <tt class="py-name">jwt</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'.'</tt><tt class="py-op">)</tt> </tt>
<a name="L320"></a><tt class="py-lineno">320</tt> <tt class="py-line"> </tt>
<a name="L321"></a><tt class="py-lineno">321</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">segments</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-number">3</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L322"></a><tt class="py-lineno">322</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-31" class="py-name" targets="Class oauth2client.crypt.AppIdentityError=oauth2client.crypt.AppIdentityError-class.html"><a title="oauth2client.crypt.AppIdentityError" class="py-name" href="#" onclick="return doclink('link-31', 'AppIdentityError', 'link-31');">AppIdentityError</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L322"></a><tt class="py-lineno">322</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-29" class="py-name" targets="Class oauth2client.crypt.AppIdentityError=oauth2client.crypt.AppIdentityError-class.html"><a title="oauth2client.crypt.AppIdentityError" class="py-name" href="#" onclick="return doclink('link-29', 'AppIdentityError', 'link-29');">AppIdentityError</a></tt><tt class="py-op">(</tt> </tt>
<a name="L323"></a><tt class="py-lineno">323</tt> <tt class="py-line"> <tt class="py-string">'Wrong number of segments in token: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">jwt</tt><tt class="py-op">)</tt> </tt>
<a name="L324"></a><tt class="py-lineno">324</tt> <tt class="py-line"> <tt class="py-name">signed</tt> <tt class="py-op">=</tt> <tt class="py-string">'%s.%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">segments</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">segments</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
<a name="L325"></a><tt class="py-lineno">325</tt> <tt class="py-line"> </tt>
-<a name="L326"></a><tt class="py-lineno">326</tt> <tt class="py-line"> <tt class="py-name">signature</tt> <tt class="py-op">=</tt> <tt id="link-32" class="py-name" targets="Function oauth2client.client._urlsafe_b64decode()=oauth2client.client-module.html#_urlsafe_b64decode,Function oauth2client.crypt._urlsafe_b64decode()=oauth2client.crypt-module.html#_urlsafe_b64decode"><a title="oauth2client.client._urlsafe_b64decode
-oauth2client.crypt._urlsafe_b64decode" class="py-name" href="#" onclick="return doclink('link-32', '_urlsafe_b64decode', 'link-32');">_urlsafe_b64decode</a></tt><tt class="py-op">(</tt><tt class="py-name">segments</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L326"></a><tt class="py-lineno">326</tt> <tt class="py-line"> <tt class="py-name">signature</tt> <tt class="py-op">=</tt> <tt id="link-30" class="py-name" targets="Function oauth2client.client._urlsafe_b64decode()=oauth2client.client-module.html#_urlsafe_b64decode,Function oauth2client.crypt._urlsafe_b64decode()=oauth2client.crypt-module.html#_urlsafe_b64decode"><a title="oauth2client.client._urlsafe_b64decode
+oauth2client.crypt._urlsafe_b64decode" class="py-name" href="#" onclick="return doclink('link-30', '_urlsafe_b64decode', 'link-30');">_urlsafe_b64decode</a></tt><tt class="py-op">(</tt><tt class="py-name">segments</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
<a name="L327"></a><tt class="py-lineno">327</tt> <tt class="py-line"> </tt>
<a name="L328"></a><tt class="py-lineno">328</tt> <tt class="py-line"> <tt class="py-comment"># Parse token.</tt> </tt>
-<a name="L329"></a><tt class="py-lineno">329</tt> <tt class="py-line"> <tt class="py-name">json_body</tt> <tt class="py-op">=</tt> <tt id="link-33" class="py-name"><a title="oauth2client.client._urlsafe_b64decode
-oauth2client.crypt._urlsafe_b64decode" class="py-name" href="#" onclick="return doclink('link-33', '_urlsafe_b64decode', 'link-32');">_urlsafe_b64decode</a></tt><tt class="py-op">(</tt><tt class="py-name">segments</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L329"></a><tt class="py-lineno">329</tt> <tt class="py-line"> <tt class="py-name">json_body</tt> <tt class="py-op">=</tt> <tt id="link-31" class="py-name"><a title="oauth2client.client._urlsafe_b64decode
+oauth2client.crypt._urlsafe_b64decode" class="py-name" href="#" onclick="return doclink('link-31', '_urlsafe_b64decode', 'link-30');">_urlsafe_b64decode</a></tt><tt class="py-op">(</tt><tt class="py-name">segments</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
<a name="L330"></a><tt class="py-lineno">330</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L331"></a><tt class="py-lineno">331</tt> <tt class="py-line"> <tt class="py-name">parsed</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name" targets="Function oauth2client.clientsecrets.loads()=oauth2client.clientsecrets-module.html#loads"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-34', 'loads', 'link-34');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">json_body</tt><tt class="py-op">)</tt> </tt>
+<a name="L331"></a><tt class="py-lineno">331</tt> <tt class="py-line"> <tt class="py-name">parsed</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-32" class="py-name" targets="Function oauth2client.clientsecrets.loads()=oauth2client.clientsecrets-module.html#loads"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-32', 'loads', 'link-32');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">json_body</tt><tt class="py-op">)</tt> </tt>
<a name="L332"></a><tt class="py-lineno">332</tt> <tt class="py-line"> <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
-<a name="L333"></a><tt class="py-lineno">333</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-35" class="py-name"><a title="oauth2client.crypt.AppIdentityError" class="py-name" href="#" onclick="return doclink('link-35', 'AppIdentityError', 'link-31');">AppIdentityError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Can\'t parse token: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">json_body</tt><tt class="py-op">)</tt> </tt>
+<a name="L333"></a><tt class="py-lineno">333</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-33" class="py-name"><a title="oauth2client.crypt.AppIdentityError" class="py-name" href="#" onclick="return doclink('link-33', 'AppIdentityError', 'link-29');">AppIdentityError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Can\'t parse token: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">json_body</tt><tt class="py-op">)</tt> </tt>
<a name="L334"></a><tt class="py-lineno">334</tt> <tt class="py-line"> </tt>
<a name="L335"></a><tt class="py-lineno">335</tt> <tt class="py-line"> <tt class="py-comment"># Check signature.</tt> </tt>
<a name="L336"></a><tt class="py-lineno">336</tt> <tt class="py-line"> <tt class="py-name">verified</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
-<a name="L337"></a><tt class="py-lineno">337</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">keyname</tt><tt class="py-op">,</tt> <tt class="py-name">pem</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">certs</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name" targets="Method apiclient.push.Headers.items()=apiclient.push.Headers-class.html#items"><a title="apiclient.push.Headers.items" class="py-name" href="#" onclick="return doclink('link-36', 'items', 'link-36');">items</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L338"></a><tt class="py-lineno">338</tt> <tt class="py-line"> <tt class="py-name">verifier</tt> <tt class="py-op">=</tt> <tt id="link-37" class="py-name"><a title="oauth2client.crypt.Verifier" class="py-name" href="#" onclick="return doclink('link-37', 'Verifier', 'link-18');">Verifier</a></tt><tt class="py-op">.</tt><tt class="py-name">from_string</tt><tt class="py-op">(</tt><tt class="py-name">pem</tt><tt class="py-op">,</tt> <tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
-<a name="L339"></a><tt class="py-lineno">339</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">verifier</tt><tt class="py-op">.</tt><tt id="link-38" class="py-name"><a title="apiclient.push.Subscription.verify" class="py-name" href="#" onclick="return doclink('link-38', 'verify', 'link-5');">verify</a></tt><tt class="py-op">(</tt><tt class="py-name">signed</tt><tt class="py-op">,</tt> <tt class="py-name">signature</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L337"></a><tt class="py-lineno">337</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">keyname</tt><tt class="py-op">,</tt> <tt class="py-name">pem</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">certs</tt><tt class="py-op">.</tt><tt class="py-name">items</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L338"></a><tt class="py-lineno">338</tt> <tt class="py-line"> <tt class="py-name">verifier</tt> <tt class="py-op">=</tt> <tt id="link-34" class="py-name"><a title="oauth2client.crypt.Verifier" class="py-name" href="#" onclick="return doclink('link-34', 'Verifier', 'link-16');">Verifier</a></tt><tt class="py-op">.</tt><tt class="py-name">from_string</tt><tt class="py-op">(</tt><tt class="py-name">pem</tt><tt class="py-op">,</tt> <tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L339"></a><tt class="py-lineno">339</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">verifier</tt><tt class="py-op">.</tt><tt class="py-name">verify</tt><tt class="py-op">(</tt><tt class="py-name">signed</tt><tt class="py-op">,</tt> <tt class="py-name">signature</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L340"></a><tt class="py-lineno">340</tt> <tt class="py-line"> <tt class="py-name">verified</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
<a name="L341"></a><tt class="py-lineno">341</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt>
<a name="L342"></a><tt class="py-lineno">342</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">verified</tt><tt class="py-op">:</tt> </tt>
-<a name="L343"></a><tt class="py-lineno">343</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-39" class="py-name"><a title="oauth2client.crypt.AppIdentityError" class="py-name" href="#" onclick="return doclink('link-39', 'AppIdentityError', 'link-31');">AppIdentityError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Invalid token signature: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">jwt</tt><tt class="py-op">)</tt> </tt>
+<a name="L343"></a><tt class="py-lineno">343</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-35" class="py-name"><a title="oauth2client.crypt.AppIdentityError" class="py-name" href="#" onclick="return doclink('link-35', 'AppIdentityError', 'link-29');">AppIdentityError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Invalid token signature: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">jwt</tt><tt class="py-op">)</tt> </tt>
<a name="L344"></a><tt class="py-lineno">344</tt> <tt class="py-line"> </tt>
<a name="L345"></a><tt class="py-lineno">345</tt> <tt class="py-line"> <tt class="py-comment"># Check creation timestamp.</tt> </tt>
-<a name="L346"></a><tt class="py-lineno">346</tt> <tt class="py-line"> <tt class="py-name">iat</tt> <tt class="py-op">=</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name" targets="Method apiclient.schema.Schemas.get()=apiclient.schema.Schemas-class.html#get,Method oauth2client.client.MemoryCache.get()=oauth2client.client.MemoryCache-class.html#get,Method oauth2client.client.Storage.get()=oauth2client.client.Storage-class.html#get"><a title="apiclient.schema.Schemas.get
+<a name="L346"></a><tt class="py-lineno">346</tt> <tt class="py-line"> <tt class="py-name">iat</tt> <tt class="py-op">=</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name" targets="Method apiclient.schema.Schemas.get()=apiclient.schema.Schemas-class.html#get,Method oauth2client.client.MemoryCache.get()=oauth2client.client.MemoryCache-class.html#get,Method oauth2client.client.Storage.get()=oauth2client.client.Storage-class.html#get"><a title="apiclient.schema.Schemas.get
oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-40', 'get', 'link-40');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'iat'</tt><tt class="py-op">)</tt> </tt>
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-36', 'get', 'link-36');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'iat'</tt><tt class="py-op">)</tt> </tt>
<a name="L347"></a><tt class="py-lineno">347</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">iat</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L348"></a><tt class="py-lineno">348</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-41" class="py-name"><a title="oauth2client.crypt.AppIdentityError" class="py-name" href="#" onclick="return doclink('link-41', 'AppIdentityError', 'link-31');">AppIdentityError</a></tt><tt class="py-op">(</tt><tt class="py-string">'No iat field in token: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">json_body</tt><tt class="py-op">)</tt> </tt>
-<a name="L349"></a><tt class="py-lineno">349</tt> <tt class="py-line"> <tt class="py-name">earliest</tt> <tt class="py-op">=</tt> <tt class="py-name">iat</tt> <tt class="py-op">-</tt> <tt id="link-42" class="py-name"><a title="oauth2client.crypt.CLOCK_SKEW_SECS" class="py-name" href="#" onclick="return doclink('link-42', 'CLOCK_SKEW_SECS', 'link-1');">CLOCK_SKEW_SECS</a></tt> </tt>
+<a name="L348"></a><tt class="py-lineno">348</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-37" class="py-name"><a title="oauth2client.crypt.AppIdentityError" class="py-name" href="#" onclick="return doclink('link-37', 'AppIdentityError', 'link-29');">AppIdentityError</a></tt><tt class="py-op">(</tt><tt class="py-string">'No iat field in token: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">json_body</tt><tt class="py-op">)</tt> </tt>
+<a name="L349"></a><tt class="py-lineno">349</tt> <tt class="py-line"> <tt class="py-name">earliest</tt> <tt class="py-op">=</tt> <tt class="py-name">iat</tt> <tt class="py-op">-</tt> <tt id="link-38" class="py-name"><a title="oauth2client.crypt.CLOCK_SKEW_SECS" class="py-name" href="#" onclick="return doclink('link-38', 'CLOCK_SKEW_SECS', 'link-1');">CLOCK_SKEW_SECS</a></tt> </tt>
<a name="L350"></a><tt class="py-lineno">350</tt> <tt class="py-line"> </tt>
<a name="L351"></a><tt class="py-lineno">351</tt> <tt class="py-line"> <tt class="py-comment"># Check expiration timestamp.</tt> </tt>
<a name="L352"></a><tt class="py-lineno">352</tt> <tt class="py-line"> <tt class="py-name">now</tt> <tt class="py-op">=</tt> <tt class="py-name">long</tt><tt class="py-op">(</tt><tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">time</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L353"></a><tt class="py-lineno">353</tt> <tt class="py-line"> <tt class="py-name">exp</tt> <tt class="py-op">=</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt id="link-43" class="py-name"><a title="apiclient.schema.Schemas.get
+<a name="L353"></a><tt class="py-lineno">353</tt> <tt class="py-line"> <tt class="py-name">exp</tt> <tt class="py-op">=</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name"><a title="apiclient.schema.Schemas.get
oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-43', 'get', 'link-40');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'exp'</tt><tt class="py-op">)</tt> </tt>
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-39', 'get', 'link-36');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'exp'</tt><tt class="py-op">)</tt> </tt>
<a name="L354"></a><tt class="py-lineno">354</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">exp</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L355"></a><tt class="py-lineno">355</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-44" class="py-name"><a title="oauth2client.crypt.AppIdentityError" class="py-name" href="#" onclick="return doclink('link-44', 'AppIdentityError', 'link-31');">AppIdentityError</a></tt><tt class="py-op">(</tt><tt class="py-string">'No exp field in token: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">json_body</tt><tt class="py-op">)</tt> </tt>
-<a name="L356"></a><tt class="py-lineno">356</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">exp</tt> <tt class="py-op">>=</tt> <tt class="py-name">now</tt> <tt class="py-op">+</tt> <tt id="link-45" class="py-name"><a title="oauth2client.client.SignedJwtAssertionCredentials.MAX_TOKEN_LIFETIME_SECS
-oauth2client.crypt.MAX_TOKEN_LIFETIME_SECS" class="py-name" href="#" onclick="return doclink('link-45', 'MAX_TOKEN_LIFETIME_SECS', 'link-3');">MAX_TOKEN_LIFETIME_SECS</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L357"></a><tt class="py-lineno">357</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-46" class="py-name"><a title="oauth2client.crypt.AppIdentityError" class="py-name" href="#" onclick="return doclink('link-46', 'AppIdentityError', 'link-31');">AppIdentityError</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L355"></a><tt class="py-lineno">355</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-40" class="py-name"><a title="oauth2client.crypt.AppIdentityError" class="py-name" href="#" onclick="return doclink('link-40', 'AppIdentityError', 'link-29');">AppIdentityError</a></tt><tt class="py-op">(</tt><tt class="py-string">'No exp field in token: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">json_body</tt><tt class="py-op">)</tt> </tt>
+<a name="L356"></a><tt class="py-lineno">356</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">exp</tt> <tt class="py-op">>=</tt> <tt class="py-name">now</tt> <tt class="py-op">+</tt> <tt id="link-41" class="py-name"><a title="oauth2client.client.SignedJwtAssertionCredentials.MAX_TOKEN_LIFETIME_SECS
+oauth2client.crypt.MAX_TOKEN_LIFETIME_SECS" class="py-name" href="#" onclick="return doclink('link-41', 'MAX_TOKEN_LIFETIME_SECS', 'link-3');">MAX_TOKEN_LIFETIME_SECS</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L357"></a><tt class="py-lineno">357</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-42" class="py-name"><a title="oauth2client.crypt.AppIdentityError" class="py-name" href="#" onclick="return doclink('link-42', 'AppIdentityError', 'link-29');">AppIdentityError</a></tt><tt class="py-op">(</tt> </tt>
<a name="L358"></a><tt class="py-lineno">358</tt> <tt class="py-line"> <tt class="py-string">'exp field too far in future: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">json_body</tt><tt class="py-op">)</tt> </tt>
-<a name="L359"></a><tt class="py-lineno">359</tt> <tt class="py-line"> <tt class="py-name">latest</tt> <tt class="py-op">=</tt> <tt class="py-name">exp</tt> <tt class="py-op">+</tt> <tt id="link-47" class="py-name"><a title="oauth2client.crypt.CLOCK_SKEW_SECS" class="py-name" href="#" onclick="return doclink('link-47', 'CLOCK_SKEW_SECS', 'link-1');">CLOCK_SKEW_SECS</a></tt> </tt>
+<a name="L359"></a><tt class="py-lineno">359</tt> <tt class="py-line"> <tt class="py-name">latest</tt> <tt class="py-op">=</tt> <tt class="py-name">exp</tt> <tt class="py-op">+</tt> <tt id="link-43" class="py-name"><a title="oauth2client.crypt.CLOCK_SKEW_SECS" class="py-name" href="#" onclick="return doclink('link-43', 'CLOCK_SKEW_SECS', 'link-1');">CLOCK_SKEW_SECS</a></tt> </tt>
<a name="L360"></a><tt class="py-lineno">360</tt> <tt class="py-line"> </tt>
<a name="L361"></a><tt class="py-lineno">361</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">now</tt> <tt class="py-op"><</tt> <tt class="py-name">earliest</tt><tt class="py-op">:</tt> </tt>
-<a name="L362"></a><tt class="py-lineno">362</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-48" class="py-name"><a title="oauth2client.crypt.AppIdentityError" class="py-name" href="#" onclick="return doclink('link-48', 'AppIdentityError', 'link-31');">AppIdentityError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Token used too early, %d < %d: %s'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L362"></a><tt class="py-lineno">362</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-44" class="py-name"><a title="oauth2client.crypt.AppIdentityError" class="py-name" href="#" onclick="return doclink('link-44', 'AppIdentityError', 'link-29');">AppIdentityError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Token used too early, %d < %d: %s'</tt> <tt class="py-op">%</tt> </tt>
<a name="L363"></a><tt class="py-lineno">363</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">now</tt><tt class="py-op">,</tt> <tt class="py-name">earliest</tt><tt class="py-op">,</tt> <tt class="py-name">json_body</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L364"></a><tt class="py-lineno">364</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">now</tt> <tt class="py-op">></tt> <tt class="py-name">latest</tt><tt class="py-op">:</tt> </tt>
-<a name="L365"></a><tt class="py-lineno">365</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-49" class="py-name"><a title="oauth2client.crypt.AppIdentityError" class="py-name" href="#" onclick="return doclink('link-49', 'AppIdentityError', 'link-31');">AppIdentityError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Token used too late, %d > %d: %s'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L365"></a><tt class="py-lineno">365</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-45" class="py-name"><a title="oauth2client.crypt.AppIdentityError" class="py-name" href="#" onclick="return doclink('link-45', 'AppIdentityError', 'link-29');">AppIdentityError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Token used too late, %d > %d: %s'</tt> <tt class="py-op">%</tt> </tt>
<a name="L366"></a><tt class="py-lineno">366</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">now</tt><tt class="py-op">,</tt> <tt class="py-name">latest</tt><tt class="py-op">,</tt> <tt class="py-name">json_body</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L367"></a><tt class="py-lineno">367</tt> <tt class="py-line"> </tt>
<a name="L368"></a><tt class="py-lineno">368</tt> <tt class="py-line"> <tt class="py-comment"># Check audience.</tt> </tt>
<a name="L369"></a><tt class="py-lineno">369</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">audience</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L370"></a><tt class="py-lineno">370</tt> <tt class="py-line"> <tt class="py-name">aud</tt> <tt class="py-op">=</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt id="link-50" class="py-name"><a title="apiclient.schema.Schemas.get
+<a name="L370"></a><tt class="py-lineno">370</tt> <tt class="py-line"> <tt class="py-name">aud</tt> <tt class="py-op">=</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt id="link-46" class="py-name"><a title="apiclient.schema.Schemas.get
oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-50', 'get', 'link-40');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'aud'</tt><tt class="py-op">)</tt> </tt>
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-46', 'get', 'link-36');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'aud'</tt><tt class="py-op">)</tt> </tt>
<a name="L371"></a><tt class="py-lineno">371</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">aud</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L372"></a><tt class="py-lineno">372</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-51" class="py-name"><a title="oauth2client.crypt.AppIdentityError" class="py-name" href="#" onclick="return doclink('link-51', 'AppIdentityError', 'link-31');">AppIdentityError</a></tt><tt class="py-op">(</tt><tt class="py-string">'No aud field in token: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">json_body</tt><tt class="py-op">)</tt> </tt>
+<a name="L372"></a><tt class="py-lineno">372</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-47" class="py-name"><a title="oauth2client.crypt.AppIdentityError" class="py-name" href="#" onclick="return doclink('link-47', 'AppIdentityError', 'link-29');">AppIdentityError</a></tt><tt class="py-op">(</tt><tt class="py-string">'No aud field in token: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">json_body</tt><tt class="py-op">)</tt> </tt>
<a name="L373"></a><tt class="py-lineno">373</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">aud</tt> <tt class="py-op">!=</tt> <tt class="py-name">audience</tt><tt class="py-op">:</tt> </tt>
-<a name="L374"></a><tt class="py-lineno">374</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-52" class="py-name"><a title="oauth2client.crypt.AppIdentityError" class="py-name" href="#" onclick="return doclink('link-52', 'AppIdentityError', 'link-31');">AppIdentityError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Wrong recipient, %s != %s: %s'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L374"></a><tt class="py-lineno">374</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-48" class="py-name"><a title="oauth2client.crypt.AppIdentityError" class="py-name" href="#" onclick="return doclink('link-48', 'AppIdentityError', 'link-29');">AppIdentityError</a></tt><tt class="py-op">(</tt><tt class="py-string">'Wrong recipient, %s != %s: %s'</tt> <tt class="py-op">%</tt> </tt>
<a name="L375"></a><tt class="py-lineno">375</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">aud</tt><tt class="py-op">,</tt> <tt class="py-name">audience</tt><tt class="py-op">,</tt> <tt class="py-name">json_body</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L376"></a><tt class="py-lineno">376</tt> <tt class="py-line"> </tt>
<a name="L377"></a><tt class="py-lineno">377</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">parsed</tt> </tt>
@@ -484,7 +484,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:26 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:46 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.crypt.AppIdentityError-class.html b/docs/epy/oauth2client.crypt.AppIdentityError-class.html
index 99896a0..ea8172a 100644
--- a/docs/epy/oauth2client.crypt.AppIdentityError-class.html
+++ b/docs/epy/oauth2client.crypt.AppIdentityError-class.html
@@ -55,12 +55,26 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class AppIdentityError</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.crypt-pysrc.html#AppIdentityError">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_appidentit" name="class_hierarchy_for_appidentit">
-<area shape="rect" id="node1" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
-<area shape="rect" id="node2" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
-<area shape="rect" id="node3" href="oauth2client.crypt.AppIdentityError-class.html" title="AppIdentityError" alt="" coords="36,123,151,151"/>
+<center> <map id="uml_class_diagram_for_oauth2cl_34" name="uml_class_diagram_for_oauth2cl_34">
+<area shape="rect" id="node1" href="oauth2client.crypt.AppIdentityError-class.html" title="oauth2client.crypt.AppIdentityError" alt="" coords="36,379,156,423"/>
+<area shape="rect" id="node189" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="32,316,159,335"/>
+<area shape="rect" id="node189" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="32,335,159,353"/>
+<area shape="rect" id="node2" href="javascript:void(0);" title="Common base class for all non-exit exceptions." alt="" coords="20,283,169,359"/>
+<area shape="rect" id="node190" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="17,31,175,49"/>
+<area shape="rect" id="node190" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="17,49,175,68"/>
+<area shape="rect" id="node190" href="javascript:void(0);" title="x.__delattr__('name') <==> del x.name" alt="" coords="17,71,175,89"/>
+<area shape="rect" id="node190" href="javascript:void(0);" title="x.__getattribute__('name') <==> x.name" alt="" coords="17,89,175,108"/>
+<area shape="rect" id="node190" href="javascript:void(0);" title="x[y]" alt="" coords="17,108,175,127"/>
+<area shape="rect" id="node190" href="javascript:void(0);" title="x[i:j]" alt="" coords="17,127,175,145"/>
+<area shape="rect" id="node190" href="javascript:void(0);" title="helper for pickle" alt="" coords="17,145,175,164"/>
+<area shape="rect" id="node190" href="javascript:void(0);" title="repr(x)" alt="" coords="17,164,175,183"/>
+<area shape="rect" id="node190" href="javascript:void(0);" title="x.__setattr__('name', value) <==> x.name = value" alt="" coords="17,183,175,201"/>
+<area shape="rect" id="node190" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="17,201,175,220"/>
+<area shape="rect" id="node190" href="javascript:void(0);" title="str(x)" alt="" coords="17,220,175,239"/>
+<area shape="rect" id="node190" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="17,239,175,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,6,187,263"/>
</map>
- <img src="class_hierarchy_for_appidentit.gif" alt='' usemap="#class_hierarchy_for_appidentit" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_oauth2cl_34.gif" alt='' usemap="#uml_class_diagram_for_oauth2cl_34" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -161,7 +175,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:25 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:46 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.django_orm-module.html b/docs/epy/oauth2client.django_orm-module.html
index f68584d..9377296 100644
--- a/docs/epy/oauth2client.django_orm-module.html
+++ b/docs/epy/oauth2client.django_orm-module.html
@@ -129,7 +129,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:23 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:42 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.django_orm-pysrc.html b/docs/epy/oauth2client.django_orm-pysrc.html
index dc2136a..4d06446 100644
--- a/docs/epy/oauth2client.django_orm-pysrc.html
+++ b/docs/epy/oauth2client.django_orm-pysrc.html
@@ -93,7 +93,9 @@
<a name="CredentialsField.__init__"></a><div id="CredentialsField.__init__-def"><a name="L34"></a><tt class="py-lineno"> 34</tt> <a class="py-toggle" href="#" id="CredentialsField.__init__-toggle" onclick="return toggle('CredentialsField.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.django_orm.CredentialsField-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="CredentialsField.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="CredentialsField.__init__-expanded"><a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'null'</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">kwargs</tt><tt class="py-op">:</tt> </tt>
<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"> <tt class="py-name">kwargs</tt><tt class="py-op">[</tt><tt class="py-string">'null'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
-<a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-5" class="py-name" targets="Class oauth2client.django_orm.CredentialsField=oauth2client.django_orm.CredentialsField-class.html"><a title="oauth2client.django_orm.CredentialsField" class="py-name" href="#" onclick="return doclink('link-5', 'CredentialsField', 'link-5');">CredentialsField</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-6" class="py-name" targets="Method apiclient.discovery.Resource.__init__()=apiclient.discovery.Resource-class.html#__init__,Method apiclient.discovery.ResourceMethodParameters.__init__()=apiclient.discovery.ResourceMethodParameters-class.html#__init__,Method apiclient.errors.BatchError.__init__()=apiclient.errors.BatchError-class.html#__init__,Method apiclient.errors.HttpError.__init__()=apiclient.errors.HttpError-class.html#__init__,Method apiclient.errors.UnexpectedBodyError.__init__()=apiclient.errors.UnexpectedBodyError-class.html#__init__,Method apiclient.errors.UnexpectedMethodError.__init__()=apiclient.errors.UnexpectedMethodError-class.html#__init__,Method apiclient.http.BatchHttpRequest.__init__()=apiclient.http.BatchHttpRequest-class.html#__init__,Method apiclient.http.HttpMock.__init__()=apiclient.http.HttpMock-class.html#__init__,Method apiclient.http.HttpMockSequence.__init__()=apiclient.http.HttpMockSequence-class.html#__init__,Method apiclient.http.HttpRequest.__init__()=apiclient.http.HttpRequest-class.html#__init__,Method apiclient.http.HttpRequestMock.__init__()=apiclient.http.HttpRequestMock-class.html#__init__,Method apiclient.http.MediaDownloadProgress.__init__()=apiclient.http.MediaDownloadProgress-class.html#__init__,Method apiclient.http.MediaFileUpload.__init__()=apiclient.http.MediaFileUpload-class.html#__init__,Method apiclient.http.MediaInMemoryUpload.__init__()=apiclient.http.MediaInMemoryUpload-class.html#__init__,Method apiclient.http.MediaIoBaseDownload.__init__()=apiclient.http.MediaIoBaseDownload-class.html#__init__,Method apiclient.http.MediaIoBaseUpload.__init__()=apiclient.http.MediaIoBaseUpload-class.html#__init__,Method apiclient.http.MediaUploadProgress.__init__()=apiclient.http.MediaUploadProgress-class.html#__init__,Method apiclient.http.RequestMockBuilder.__init__()=apiclient.http.RequestMockBuilder-class.html#__init__,Method apiclient.http._StreamSlice.__init__()=apiclient.http._StreamSlice-class.html#__init__,Method apiclient.model.JsonModel.__init__()=apiclient.model.JsonModel-class.html#__init__,Method apiclient.model.ProtocolBufferModel.__init__()=apiclient.model.ProtocolBufferModel-class.html#__init__,Method apiclient.push.Channel.__init__()=apiclient.push.Channel-class.html#__init__,Method apiclient.push.Headers.__init__()=apiclient.push.Headers-class.html#__init__,Method apiclient.push.Subscription.__init__()=apiclient.push.Subscription-class.html#__init__,Method apiclient.push.WebhookChannel.__init__()=apiclient.push.WebhookChannel-class.html#__init__,Method apiclient.schema.Schemas.__init__()=apiclient.schema.Schemas-class.html#__init__,Method apiclient.schema._SchemaToStruct.__init__()=apiclient.schema._SchemaToStruct-class.html#__init__,Method oauth2client.appengine.AppAssertionCredentials.__init__()=oauth2client.appengine.AppAssertionCredentials-class.html#__init__,Method oauth2client.appengine.OAuth2Decorator.__init__()=oauth2client.appengine.OAuth2Decorator-class.html#__init__,Method oauth2client.appengine.OAuth2DecoratorFromClientSecrets.__init__()=oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html#__init__,Method oauth2client.appengine.StorageByKeyName.__init__()=oauth2client.appengine.StorageByKeyName-class.html#__init__,Method oauth2client.client.AccessTokenCredentials.__init__()=oauth2client.client.AccessTokenCredentials-class.html#__init__,Method oauth2client.client.AssertionCredentials.__init__()=oauth2client.client.AssertionCredentials-class.html#__init__,Method oauth2client.client.MemoryCache.__init__()=oauth2client.client.MemoryCache-class.html#__init__,Method oauth2client.client.OAuth2Credentials.__init__()=oauth2client.client.OAuth2Credentials-class.html#__init__,Method oauth2client.client.OAuth2WebServerFlow.__init__()=oauth2client.client.OAuth2WebServerFlow-class.html#__init__,Method oauth2client.client.SignedJwtAssertionCredentials.__init__()=oauth2client.client.SignedJwtAssertionCredentials-class.html#__init__,Method oauth2client.django_orm.CredentialsField.__init__()=oauth2client.django_orm.CredentialsField-class.html#__init__,Method oauth2client.django_orm.FlowField.__init__()=oauth2client.django_orm.FlowField-class.html#__init__,Method oauth2client.django_orm.Storage.__init__()=oauth2client.django_orm.Storage-class.html#__init__,Method oauth2client.file.Storage.__init__()=oauth2client.file.Storage-class.html#__init__,Method oauth2client.gce.AppAssertionCredentials.__init__()=oauth2client.gce.AppAssertionCredentials-class.html#__init__,Method oauth2client.keyring_storage.Storage.__init__()=oauth2client.keyring_storage.Storage-class.html#__init__,Method oauth2client.locked_file.LockedFile.__init__()=oauth2client.locked_file.LockedFile-class.html#__init__,Method oauth2client.locked_file._Opener.__init__()=oauth2client.locked_file._Opener-class.html#__init__,Method oauth2client.multistore_file._MultiStore._Storage.__init__()=oauth2client.multistore_file._MultiStore._Storage-class.html#__init__,Method oauth2client.multistore_file._MultiStore.__init__()=oauth2client.multistore_file._MultiStore-class.html#__init__"><a title="apiclient.discovery.Resource.__init__
+<a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-5" class="py-name" targets="Class oauth2client.django_orm.CredentialsField=oauth2client.django_orm.CredentialsField-class.html"><a title="oauth2client.django_orm.CredentialsField" class="py-name" href="#" onclick="return doclink('link-5', 'CredentialsField', 'link-5');">CredentialsField</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-6" class="py-name" targets="Method apiclient.channel.Channel.__init__()=apiclient.channel.Channel-class.html#__init__,Method apiclient.channel.Notification.__init__()=apiclient.channel.Notification-class.html#__init__,Method apiclient.discovery.Resource.__init__()=apiclient.discovery.Resource-class.html#__init__,Method apiclient.discovery.ResourceMethodParameters.__init__()=apiclient.discovery.ResourceMethodParameters-class.html#__init__,Method apiclient.errors.BatchError.__init__()=apiclient.errors.BatchError-class.html#__init__,Method apiclient.errors.HttpError.__init__()=apiclient.errors.HttpError-class.html#__init__,Method apiclient.errors.UnexpectedBodyError.__init__()=apiclient.errors.UnexpectedBodyError-class.html#__init__,Method apiclient.errors.UnexpectedMethodError.__init__()=apiclient.errors.UnexpectedMethodError-class.html#__init__,Method apiclient.http.BatchHttpRequest.__init__()=apiclient.http.BatchHttpRequest-class.html#__init__,Method apiclient.http.HttpMock.__init__()=apiclient.http.HttpMock-class.html#__init__,Method apiclient.http.HttpMockSequence.__init__()=apiclient.http.HttpMockSequence-class.html#__init__,Method apiclient.http.HttpRequest.__init__()=apiclient.http.HttpRequest-class.html#__init__,Method apiclient.http.HttpRequestMock.__init__()=apiclient.http.HttpRequestMock-class.html#__init__,Method apiclient.http.MediaDownloadProgress.__init__()=apiclient.http.MediaDownloadProgress-class.html#__init__,Method apiclient.http.MediaFileUpload.__init__()=apiclient.http.MediaFileUpload-class.html#__init__,Method apiclient.http.MediaInMemoryUpload.__init__()=apiclient.http.MediaInMemoryUpload-class.html#__init__,Method apiclient.http.MediaIoBaseDownload.__init__()=apiclient.http.MediaIoBaseDownload-class.html#__init__,Method apiclient.http.MediaIoBaseUpload.__init__()=apiclient.http.MediaIoBaseUpload-class.html#__init__,Method apiclient.http.MediaUploadProgress.__init__()=apiclient.http.MediaUploadProgress-class.html#__init__,Method apiclient.http.RequestMockBuilder.__init__()=apiclient.http.RequestMockBuilder-class.html#__init__,Method apiclient.http._StreamSlice.__init__()=apiclient.http._StreamSlice-class.html#__init__,Method apiclient.model.JsonModel.__init__()=apiclient.model.JsonModel-class.html#__init__,Method apiclient.model.ProtocolBufferModel.__init__()=apiclient.model.ProtocolBufferModel-class.html#__init__,Method apiclient.schema.Schemas.__init__()=apiclient.schema.Schemas-class.html#__init__,Method apiclient.schema._SchemaToStruct.__init__()=apiclient.schema._SchemaToStruct-class.html#__init__,Method oauth2client.appengine.AppAssertionCredentials.__init__()=oauth2client.appengine.AppAssertionCredentials-class.html#__init__,Method oauth2client.appengine.OAuth2Decorator.__init__()=oauth2client.appengine.OAuth2Decorator-class.html#__init__,Method oauth2client.appengine.OAuth2DecoratorFromClientSecrets.__init__()=oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html#__init__,Method oauth2client.appengine.StorageByKeyName.__init__()=oauth2client.appengine.StorageByKeyName-class.html#__init__,Method oauth2client.client.AccessTokenCredentials.__init__()=oauth2client.client.AccessTokenCredentials-class.html#__init__,Method oauth2client.client.AssertionCredentials.__init__()=oauth2client.client.AssertionCredentials-class.html#__init__,Method oauth2client.client.MemoryCache.__init__()=oauth2client.client.MemoryCache-class.html#__init__,Method oauth2client.client.OAuth2Credentials.__init__()=oauth2client.client.OAuth2Credentials-class.html#__init__,Method oauth2client.client.OAuth2WebServerFlow.__init__()=oauth2client.client.OAuth2WebServerFlow-class.html#__init__,Method oauth2client.client.SignedJwtAssertionCredentials.__init__()=oauth2client.client.SignedJwtAssertionCredentials-class.html#__init__,Method oauth2client.django_orm.CredentialsField.__init__()=oauth2client.django_orm.CredentialsField-class.html#__init__,Method oauth2client.django_orm.FlowField.__init__()=oauth2client.django_orm.FlowField-class.html#__init__,Method oauth2client.django_orm.Storage.__init__()=oauth2client.django_orm.Storage-class.html#__init__,Method oauth2client.file.Storage.__init__()=oauth2client.file.Storage-class.html#__init__,Method oauth2client.gce.AppAssertionCredentials.__init__()=oauth2client.gce.AppAssertionCredentials-class.html#__init__,Method oauth2client.keyring_storage.Storage.__init__()=oauth2client.keyring_storage.Storage-class.html#__init__,Method oauth2client.locked_file.LockedFile.__init__()=oauth2client.locked_file.LockedFile-class.html#__init__,Method oauth2client.locked_file._Opener.__init__()=oauth2client.locked_file._Opener-class.html#__init__,Method oauth2client.multistore_file._MultiStore._Storage.__init__()=oauth2client.multistore_file._MultiStore._Storage-class.html#__init__,Method oauth2client.multistore_file._MultiStore.__init__()=oauth2client.multistore_file._MultiStore-class.html#__init__"><a title="apiclient.channel.Channel.__init__
+apiclient.channel.Notification.__init__
+apiclient.discovery.Resource.__init__
apiclient.discovery.ResourceMethodParameters.__init__
apiclient.errors.BatchError.__init__
apiclient.errors.HttpError.__init__
@@ -114,10 +116,6 @@
apiclient.http._StreamSlice.__init__
apiclient.model.JsonModel.__init__
apiclient.model.ProtocolBufferModel.__init__
-apiclient.push.Channel.__init__
-apiclient.push.Headers.__init__
-apiclient.push.Subscription.__init__
-apiclient.push.WebhookChannel.__init__
apiclient.schema.Schemas.__init__
apiclient.schema._SchemaToStruct.__init__
oauth2client.appengine.AppAssertionCredentials.__init__
@@ -165,7 +163,9 @@
<a name="FlowField.__init__"></a><div id="FlowField.__init__-def"><a name="L59"></a><tt class="py-lineno"> 59</tt> <a class="py-toggle" href="#" id="FlowField.__init__-toggle" onclick="return toggle('FlowField.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.django_orm.FlowField-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="FlowField.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="FlowField.__init__-expanded"><a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'null'</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">kwargs</tt><tt class="py-op">:</tt> </tt>
<a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"> <tt class="py-name">kwargs</tt><tt class="py-op">[</tt><tt class="py-string">'null'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
-<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-12" class="py-name" targets="Class oauth2client.django_orm.FlowField=oauth2client.django_orm.FlowField-class.html"><a title="oauth2client.django_orm.FlowField" class="py-name" href="#" onclick="return doclink('link-12', 'FlowField', 'link-12');">FlowField</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name"><a title="apiclient.discovery.Resource.__init__
+<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-12" class="py-name" targets="Class oauth2client.django_orm.FlowField=oauth2client.django_orm.FlowField-class.html"><a title="oauth2client.django_orm.FlowField" class="py-name" href="#" onclick="return doclink('link-12', 'FlowField', 'link-12');">FlowField</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name"><a title="apiclient.channel.Channel.__init__
+apiclient.channel.Notification.__init__
+apiclient.discovery.Resource.__init__
apiclient.discovery.ResourceMethodParameters.__init__
apiclient.errors.BatchError.__init__
apiclient.errors.HttpError.__init__
@@ -186,10 +186,6 @@
apiclient.http._StreamSlice.__init__
apiclient.model.JsonModel.__init__
apiclient.model.ProtocolBufferModel.__init__
-apiclient.push.Channel.__init__
-apiclient.push.Headers.__init__
-apiclient.push.Subscription.__init__
-apiclient.push.WebhookChannel.__init__
apiclient.schema.Schemas.__init__
apiclient.schema._SchemaToStruct.__init__
oauth2client.appengine.AppAssertionCredentials.__init__
@@ -276,8 +272,9 @@
<a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
<a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"> <tt class="py-name">args</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">key_name</tt><tt class="py-op">:</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">key_value</tt><tt class="py-op">}</tt> </tt>
<a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"> <tt class="py-name">entity</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">model_class</tt><tt class="py-op">(</tt><tt class="py-op">**</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> </tt>
-<a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"> <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">entity</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">property_name</tt><tt class="py-op">,</tt> <tt id="link-19" class="py-name" targets="Variable oauth2client.appengine.CredentialsModel.credentials=oauth2client.appengine.CredentialsModel-class.html#credentials,Variable oauth2client.appengine.CredentialsNDBModel.credentials=oauth2client.appengine.CredentialsNDBModel-class.html#credentials"><a title="oauth2client.appengine.CredentialsModel.credentials
-oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-19', 'credentials', 'link-19');">credentials</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"> <tt class="py-name">setattr</tt><tt class="py-op">(</tt><tt class="py-name">entity</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">property_name</tt><tt class="py-op">,</tt> <tt id="link-19" class="py-name" targets="Variable oauth2client.appengine.CredentialsModel.credentials=oauth2client.appengine.CredentialsModel-class.html#credentials,Variable oauth2client.appengine.CredentialsNDBModel.credentials=oauth2client.appengine.CredentialsNDBModel-class.html#credentials,Variable oauth2client.appengine.OAuth2Decorator.credentials=oauth2client.appengine.OAuth2Decorator-class.html#credentials"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-19', 'credentials', 'link-19');">credentials</a></tt><tt class="py-op">)</tt> </tt>
<a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"> <tt class="py-name">entity</tt><tt class="py-op">.</tt><tt class="py-name">save</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
</div><a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"> </tt>
<a name="Storage.locked_delete"></a><div id="Storage.locked_delete-def"><a name="L130"></a><tt class="py-lineno">130</tt> <a class="py-toggle" href="#" id="Storage.locked_delete-toggle" onclick="return toggle('Storage.locked_delete');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.django_orm.Storage-class.html#locked_delete">locked_delete</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
@@ -316,7 +313,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:26 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:47 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.django_orm.CredentialsField-class.html b/docs/epy/oauth2client.django_orm.CredentialsField-class.html
index 784214c..771bb07 100644
--- a/docs/epy/oauth2client.django_orm.CredentialsField-class.html
+++ b/docs/epy/oauth2client.django_orm.CredentialsField-class.html
@@ -55,11 +55,15 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class CredentialsField</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.django_orm-pysrc.html#CredentialsField">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_credential_6" name="class_hierarchy_for_credential_6">
-<area shape="rect" id="node1" href="javascript:void(0);" title="django.db.models.Field" alt="" coords="5,6,160,34"/>
-<area shape="rect" id="node2" href="oauth2client.django_orm.CredentialsField-class.html" title="CredentialsField" alt="" coords="184,6,299,34"/>
+<center> <map id="uml_class_diagram_for_oauth2cl_35" name="uml_class_diagram_for_oauth2cl_35">
+<area shape="rect" id="node191" href="oauth2client.django_orm.CredentialsField-class.html#__metaclass__" title="oauth2client.django_orm.CredentialsField.__metaclass__" alt="" coords="17,31,371,49"/>
+<area shape="rect" id="node191" href="oauth2client.django_orm.CredentialsField-class.html#__init__" title="oauth2client.django_orm.CredentialsField.__init__" alt="" coords="17,52,371,71"/>
+<area shape="rect" id="node191" href="oauth2client.django_orm.CredentialsField-class.html#get_internal_type" title="oauth2client.django_orm.CredentialsField.get_internal_type" alt="" coords="17,71,371,89"/>
+<area shape="rect" id="node191" href="oauth2client.django_orm.CredentialsField-class.html#to_python" title="oauth2client.django_orm.CredentialsField.to_python" alt="" coords="17,89,371,108"/>
+<area shape="rect" id="node191" href="oauth2client.django_orm.CredentialsField-class.html#get_db_prep_value" title="oauth2client.django_orm.CredentialsField.get_db_prep_value" alt="" coords="17,108,371,127"/>
+<area shape="rect" id="node1" href="oauth2client.django_orm.CredentialsField-class.html" title="oauth2client.django_orm.CredentialsField" alt="" coords="5,6,381,133"/>
</map>
- <img src="class_hierarchy_for_credential_6.gif" alt='' usemap="#class_hierarchy_for_credential_6" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_oauth2cl_35.gif" alt='' usemap="#uml_class_diagram_for_oauth2cl_35" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -199,7 +203,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:25 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:46 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.django_orm.FlowField-class.html b/docs/epy/oauth2client.django_orm.FlowField-class.html
index 7b8eb30..eec2b4c 100644
--- a/docs/epy/oauth2client.django_orm.FlowField-class.html
+++ b/docs/epy/oauth2client.django_orm.FlowField-class.html
@@ -55,11 +55,15 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class FlowField</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.django_orm-pysrc.html#FlowField">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_flowfield" name="class_hierarchy_for_flowfield">
-<area shape="rect" id="node1" href="javascript:void(0);" title="django.db.models.Field" alt="" coords="5,6,160,34"/>
-<area shape="rect" id="node2" href="oauth2client.django_orm.FlowField-class.html" title="FlowField" alt="" coords="184,6,261,34"/>
+<center> <map id="uml_class_diagram_for_oauth2cl_36" name="uml_class_diagram_for_oauth2cl_36">
+<area shape="rect" id="node192" href="oauth2client.django_orm.FlowField-class.html#__metaclass__" title="oauth2client.django_orm.FlowField.__metaclass__" alt="" coords="17,31,371,49"/>
+<area shape="rect" id="node192" href="oauth2client.django_orm.FlowField-class.html#__init__" title="oauth2client.django_orm.FlowField.__init__" alt="" coords="17,52,371,71"/>
+<area shape="rect" id="node192" href="oauth2client.django_orm.FlowField-class.html#get_internal_type" title="oauth2client.django_orm.FlowField.get_internal_type" alt="" coords="17,71,371,89"/>
+<area shape="rect" id="node192" href="oauth2client.django_orm.FlowField-class.html#to_python" title="oauth2client.django_orm.FlowField.to_python" alt="" coords="17,89,371,108"/>
+<area shape="rect" id="node192" href="oauth2client.django_orm.FlowField-class.html#get_db_prep_value" title="oauth2client.django_orm.FlowField.get_db_prep_value" alt="" coords="17,108,371,127"/>
+<area shape="rect" id="node1" href="oauth2client.django_orm.FlowField-class.html" title="oauth2client.django_orm.FlowField" alt="" coords="5,6,381,133"/>
</map>
- <img src="class_hierarchy_for_flowfield.gif" alt='' usemap="#class_hierarchy_for_flowfield" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_oauth2cl_36.gif" alt='' usemap="#uml_class_diagram_for_oauth2cl_36" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -199,7 +203,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:25 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:46 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.django_orm.Storage-class.html b/docs/epy/oauth2client.django_orm.Storage-class.html
index ab63b8b..7dc8230 100644
--- a/docs/epy/oauth2client.django_orm.Storage-class.html
+++ b/docs/epy/oauth2client.django_orm.Storage-class.html
@@ -55,11 +55,20 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class Storage</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.django_orm-pysrc.html#Storage">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_storage_2" name="class_hierarchy_for_storage_2">
-<area shape="rect" id="node1" href="oauth2client.client.Storage-class.html" title="client.Storage" alt="" coords="5,6,107,34"/>
-<area shape="rect" id="node2" href="oauth2client.django_orm.Storage-class.html" title="Storage" alt="" coords="131,6,197,34"/>
+<center> <map id="uml_class_diagram_for_oauth2cl_37" name="uml_class_diagram_for_oauth2cl_37">
+<area shape="rect" id="node193" href="oauth2client.django_orm.Storage-class.html#__init__" title="Constructor for Storage." alt="" coords="17,191,409,209"/>
+<area shape="rect" id="node193" href="oauth2client.django_orm.Storage-class.html#locked_get" title="Retrieve Credential from datastore." alt="" coords="17,209,409,228"/>
+<area shape="rect" id="node193" href="oauth2client.django_orm.Storage-class.html#locked_put" title="Write a Credentials to the datastore." alt="" coords="17,228,409,247"/>
+<area shape="rect" id="node193" href="oauth2client.django_orm.Storage-class.html#locked_delete" title="Delete Credentials from the datastore." alt="" coords="17,247,409,265"/>
+<area shape="rect" id="node1" href="oauth2client.django_orm.Storage-class.html" title="Store and retrieve a single credential to and from the datastore." alt="" coords="5,158,421,271"/>
+<area shape="rect" id="node194" href="oauth2client.client.Storage-class.html#acquire_lock" title="Acquires any lock necessary to access this Storage." alt="" coords="151,39,276,57"/>
+<area shape="rect" id="node194" href="oauth2client.client.Storage-class.html#release_lock" title="Release the Storage lock." alt="" coords="151,57,276,76"/>
+<area shape="rect" id="node194" href="oauth2client.client.Storage-class.html#get" title="Retrieve credential." alt="" coords="151,76,276,95"/>
+<area shape="rect" id="node194" href="oauth2client.client.Storage-class.html#put" title="Write a credential." alt="" coords="151,95,276,113"/>
+<area shape="rect" id="node194" href="oauth2client.client.Storage-class.html#delete" title="Delete credential." alt="" coords="151,113,276,132"/>
+<area shape="rect" id="node2" href="oauth2client.client.Storage-class.html" title="Base class for all Storage objects." alt="" coords="139,6,288,138"/>
</map>
- <img src="class_hierarchy_for_storage_2.gif" alt='' usemap="#class_hierarchy_for_storage_2" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_oauth2cl_37.gif" alt='' usemap="#uml_class_diagram_for_oauth2cl_37" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -374,7 +383,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:25 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:46 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.file-module.html b/docs/epy/oauth2client.file-module.html
index b183ae9..5388051 100644
--- a/docs/epy/oauth2client.file-module.html
+++ b/docs/epy/oauth2client.file-module.html
@@ -122,7 +122,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:23 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:42 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.file-pysrc.html b/docs/epy/oauth2client.file-pysrc.html
index 5054fd4..e614f99 100644
--- a/docs/epy/oauth2client.file-pysrc.html
+++ b/docs/epy/oauth2client.file-pysrc.html
@@ -128,29 +128,33 @@
<a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"><tt class="py-docstring"> Raises:</tt> </tt>
<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"><tt class="py-docstring"> CredentialsFileSymbolicLinkError if the file is a symbolic link.</tt> </tt>
<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"> <tt id="link-10" class="py-name" targets="Variable oauth2client.appengine.CredentialsModel.credentials=oauth2client.appengine.CredentialsModel-class.html#credentials,Variable oauth2client.appengine.CredentialsNDBModel.credentials=oauth2client.appengine.CredentialsNDBModel-class.html#credentials"><a title="oauth2client.appengine.CredentialsModel.credentials
-oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-10', 'credentials', 'link-10');">credentials</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"> <tt id="link-10" class="py-name" targets="Variable oauth2client.appengine.CredentialsModel.credentials=oauth2client.appengine.CredentialsModel-class.html#credentials,Variable oauth2client.appengine.CredentialsNDBModel.credentials=oauth2client.appengine.CredentialsNDBModel-class.html#credentials,Variable oauth2client.appengine.OAuth2Decorator.credentials=oauth2client.appengine.OAuth2Decorator-class.html#credentials"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-10', 'credentials', 'link-10');">credentials</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
<a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-11" class="py-name" targets="Method oauth2client.file.Storage._validate_file()=oauth2client.file.Storage-class.html#_validate_file"><a title="oauth2client.file.Storage._validate_file" class="py-name" href="#" onclick="return doclink('link-11', '_validate_file', 'link-11');">_validate_file</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
<a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"> <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt><tt class="py-op">,</tt> <tt class="py-string">'rb'</tt><tt class="py-op">)</tt> </tt>
-<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Method apiclient.http._StreamSlice.read()=apiclient.http._StreamSlice-class.html#read,Method apiclient.push.Headers.read()=apiclient.push.Headers-class.html#read"><a title="apiclient.http._StreamSlice.read
-apiclient.push.Headers.read" class="py-name" href="#" onclick="return doclink('link-12', 'read', 'link-12');">read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Method apiclient.http._StreamSlice.read()=apiclient.http._StreamSlice-class.html#read"><a title="apiclient.http._StreamSlice.read" class="py-name" href="#" onclick="return doclink('link-12', 'read', 'link-12');">read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">IOError</tt><tt class="py-op">:</tt> </tt>
<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-13" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
-oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-13', 'credentials', 'link-10');">credentials</a></tt> </tt>
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-13', 'credentials', 'link-10');">credentials</a></tt> </tt>
<a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"> </tt>
<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
<a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"> <tt id="link-14" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
-oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-14', 'credentials', 'link-10');">credentials</a></tt> <tt class="py-op">=</tt> <tt id="link-15" class="py-name"><a title="oauth2client.client.Credentials" class="py-name" href="#" onclick="return doclink('link-15', 'Credentials', 'link-4');">Credentials</a></tt><tt class="py-op">.</tt><tt id="link-16" class="py-name" targets="Class Method apiclient.http.MediaUpload.new_from_json()=apiclient.http.MediaUpload-class.html#new_from_json,Class Method oauth2client.client.Credentials.new_from_json()=oauth2client.client.Credentials-class.html#new_from_json"><a title="apiclient.http.MediaUpload.new_from_json
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-14', 'credentials', 'link-10');">credentials</a></tt> <tt class="py-op">=</tt> <tt id="link-15" class="py-name"><a title="oauth2client.client.Credentials" class="py-name" href="#" onclick="return doclink('link-15', 'Credentials', 'link-4');">Credentials</a></tt><tt class="py-op">.</tt><tt id="link-16" class="py-name" targets="Class Method apiclient.http.MediaUpload.new_from_json()=apiclient.http.MediaUpload-class.html#new_from_json,Class Method oauth2client.client.Credentials.new_from_json()=oauth2client.client.Credentials-class.html#new_from_json"><a title="apiclient.http.MediaUpload.new_from_json
oauth2client.client.Credentials.new_from_json" class="py-name" href="#" onclick="return doclink('link-16', 'new_from_json', 'link-16');">new_from_json</a></tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
<a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"> <tt id="link-17" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
-oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-17', 'credentials', 'link-10');">credentials</a></tt><tt class="py-op">.</tt><tt id="link-18" class="py-name" targets="Method oauth2client.client.OAuth2Credentials.set_store()=oauth2client.client.OAuth2Credentials-class.html#set_store"><a title="oauth2client.client.OAuth2Credentials.set_store" class="py-name" href="#" onclick="return doclink('link-18', 'set_store', 'link-18');">set_store</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-17', 'credentials', 'link-10');">credentials</a></tt><tt class="py-op">.</tt><tt id="link-18" class="py-name" targets="Method oauth2client.client.OAuth2Credentials.set_store()=oauth2client.client.OAuth2Credentials-class.html#set_store"><a title="oauth2client.client.OAuth2Credentials.set_store" class="py-name" href="#" onclick="return doclink('link-18', 'set_store', 'link-18');">set_store</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt><tt class="py-op">:</tt> </tt>
<a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
<a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"> </tt>
<a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-19" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
-oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-19', 'credentials', 'link-10');">credentials</a></tt> </tt>
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-19', 'credentials', 'link-10');">credentials</a></tt> </tt>
</div><a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"> </tt>
<a name="Storage._create_file_if_needed"></a><div id="Storage._create_file_if_needed-def"><a name="L88"></a><tt class="py-lineno"> 88</tt> <a class="py-toggle" href="#" id="Storage._create_file_if_needed-toggle" onclick="return toggle('Storage._create_file_if_needed');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.file.Storage-class.html#_create_file_if_needed">_create_file_if_needed</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="Storage._create_file_if_needed-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="Storage._create_file_if_needed-expanded"><a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> <tt class="py-docstring">"""Create an empty file if necessary.</tt> </tt>
@@ -179,13 +183,14 @@
oauth2client.multistore_file._MultiStore._create_file_if_needed" class="py-name" href="#" onclick="return doclink('link-20', '_create_file_if_needed', 'link-20');">_create_file_if_needed</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-21" class="py-name"><a title="oauth2client.file.Storage._validate_file" class="py-name" href="#" onclick="return doclink('link-21', '_validate_file', 'link-11');">_validate_file</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"> <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt><tt class="py-op">,</tt> <tt class="py-string">'wb'</tt><tt class="py-op">)</tt> </tt>
-<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-22" class="py-name" targets="Method apiclient.push.Headers.write()=apiclient.push.Headers-class.html#write"><a title="apiclient.push.Headers.write" class="py-name" href="#" onclick="return doclink('link-22', 'write', 'link-22');">write</a></tt><tt class="py-op">(</tt><tt id="link-23" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
-oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-23', 'credentials', 'link-10');">credentials</a></tt><tt class="py-op">.</tt><tt id="link-24" class="py-name" targets="Method apiclient.http.HttpRequest.to_json()=apiclient.http.HttpRequest-class.html#to_json,Method apiclient.http.MediaFileUpload.to_json()=apiclient.http.MediaFileUpload-class.html#to_json,Method apiclient.http.MediaIoBaseUpload.to_json()=apiclient.http.MediaIoBaseUpload-class.html#to_json,Method apiclient.http.MediaUpload.to_json()=apiclient.http.MediaUpload-class.html#to_json,Method oauth2client.client.Credentials.to_json()=oauth2client.client.Credentials-class.html#to_json,Method oauth2client.client.OAuth2Credentials.to_json()=oauth2client.client.OAuth2Credentials-class.html#to_json"><a title="apiclient.http.HttpRequest.to_json
+<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt class="py-name">write</tt><tt class="py-op">(</tt><tt id="link-22" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-22', 'credentials', 'link-10');">credentials</a></tt><tt class="py-op">.</tt><tt id="link-23" class="py-name" targets="Method apiclient.http.HttpRequest.to_json()=apiclient.http.HttpRequest-class.html#to_json,Method apiclient.http.MediaFileUpload.to_json()=apiclient.http.MediaFileUpload-class.html#to_json,Method apiclient.http.MediaIoBaseUpload.to_json()=apiclient.http.MediaIoBaseUpload-class.html#to_json,Method apiclient.http.MediaUpload.to_json()=apiclient.http.MediaUpload-class.html#to_json,Method oauth2client.client.Credentials.to_json()=oauth2client.client.Credentials-class.html#to_json,Method oauth2client.client.OAuth2Credentials.to_json()=oauth2client.client.OAuth2Credentials-class.html#to_json"><a title="apiclient.http.HttpRequest.to_json
apiclient.http.MediaFileUpload.to_json
apiclient.http.MediaIoBaseUpload.to_json
apiclient.http.MediaUpload.to_json
oauth2client.client.Credentials.to_json
-oauth2client.client.OAuth2Credentials.to_json" class="py-name" href="#" onclick="return doclink('link-24', 'to_json', 'link-24');">to_json</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+oauth2client.client.OAuth2Credentials.to_json" class="py-name" href="#" onclick="return doclink('link-23', 'to_json', 'link-23');">to_json</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
</div><a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"> </tt>
<a name="Storage.locked_delete"></a><div id="Storage.locked_delete-def"><a name="L117"></a><tt class="py-lineno">117</tt> <a class="py-toggle" href="#" id="Storage.locked_delete-toggle" onclick="return toggle('Storage.locked_delete');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.file.Storage-class.html#locked_delete">locked_delete</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
@@ -226,7 +231,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:26 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:47 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.file.CredentialsFileSymbolicLinkError-class.html b/docs/epy/oauth2client.file.CredentialsFileSymbolicLinkError-class.html
index 7c90c90..449e8d1 100644
--- a/docs/epy/oauth2client.file.CredentialsFileSymbolicLinkError-class.html
+++ b/docs/epy/oauth2client.file.CredentialsFileSymbolicLinkError-class.html
@@ -55,12 +55,26 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class CredentialsFileSymbolicLinkError</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.file-pysrc.html#CredentialsFileSymbolicLinkError">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_credential_7" name="class_hierarchy_for_credential_7">
-<area shape="rect" id="node1" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="24,6,200,34"/>
-<area shape="rect" id="node2" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="39,65,185,93"/>
-<area shape="rect" id="node3" href="oauth2client.file.CredentialsFileSymbolicLinkError-class.html" title="CredentialsFileSymbolicLinkError" alt="" coords="5,123,219,151"/>
+<center> <map id="uml_class_diagram_for_oauth2cl_38" name="uml_class_diagram_for_oauth2cl_38">
+<area shape="rect" id="node1" href="oauth2client.file.CredentialsFileSymbolicLinkError-class.html" title="Credentials files must not be symbolic links." alt="" coords="5,379,224,423"/>
+<area shape="rect" id="node196" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="51,316,177,335"/>
+<area shape="rect" id="node196" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="51,335,177,353"/>
+<area shape="rect" id="node2" href="javascript:void(0);" title="Common base class for all non-exit exceptions." alt="" coords="39,283,188,359"/>
+<area shape="rect" id="node197" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="36,31,193,49"/>
+<area shape="rect" id="node197" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="36,49,193,68"/>
+<area shape="rect" id="node197" href="javascript:void(0);" title="x.__delattr__('name') <==> del x.name" alt="" coords="36,71,193,89"/>
+<area shape="rect" id="node197" href="javascript:void(0);" title="x.__getattribute__('name') <==> x.name" alt="" coords="36,89,193,108"/>
+<area shape="rect" id="node197" href="javascript:void(0);" title="x[y]" alt="" coords="36,108,193,127"/>
+<area shape="rect" id="node197" href="javascript:void(0);" title="x[i:j]" alt="" coords="36,127,193,145"/>
+<area shape="rect" id="node197" href="javascript:void(0);" title="helper for pickle" alt="" coords="36,145,193,164"/>
+<area shape="rect" id="node197" href="javascript:void(0);" title="repr(x)" alt="" coords="36,164,193,183"/>
+<area shape="rect" id="node197" href="javascript:void(0);" title="x.__setattr__('name', value) <==> x.name = value" alt="" coords="36,183,193,201"/>
+<area shape="rect" id="node197" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="36,201,193,220"/>
+<area shape="rect" id="node197" href="javascript:void(0);" title="str(x)" alt="" coords="36,220,193,239"/>
+<area shape="rect" id="node197" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="36,239,193,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="24,6,205,263"/>
</map>
- <img src="class_hierarchy_for_credential_7.gif" alt='' usemap="#class_hierarchy_for_credential_7" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_oauth2cl_38.gif" alt='' usemap="#uml_class_diagram_for_oauth2cl_38" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -166,7 +180,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:25 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:46 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.file.Storage-class.html b/docs/epy/oauth2client.file.Storage-class.html
index 4f08b5c..c76ee1f 100644
--- a/docs/epy/oauth2client.file.Storage-class.html
+++ b/docs/epy/oauth2client.file.Storage-class.html
@@ -55,11 +55,20 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class Storage</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.file-pysrc.html#Storage">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_storage_3" name="class_hierarchy_for_storage_3">
-<area shape="rect" id="node1" href="oauth2client.client.Storage-class.html" title="client.Storage" alt="" coords="5,6,107,34"/>
-<area shape="rect" id="node2" href="oauth2client.file.Storage-class.html" title="Storage" alt="" coords="131,6,197,34"/>
+<center> <map id="uml_class_diagram_for_oauth2cl_39" name="uml_class_diagram_for_oauth2cl_39">
+<area shape="rect" id="node198" href="oauth2client.file.Storage-class.html#__init__" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="17,153,188,172"/>
+<area shape="rect" id="node198" href="oauth2client.file.Storage-class.html#acquire_lock" title="Acquires any lock necessary to access this Storage." alt="" coords="17,172,188,191"/>
+<area shape="rect" id="node198" href="oauth2client.file.Storage-class.html#release_lock" title="Release the Storage lock." alt="" coords="17,191,188,209"/>
+<area shape="rect" id="node198" href="oauth2client.file.Storage-class.html#locked_get" title="Retrieve Credential from file." alt="" coords="17,209,188,228"/>
+<area shape="rect" id="node198" href="oauth2client.file.Storage-class.html#locked_put" title="Write Credentials to file." alt="" coords="17,228,188,247"/>
+<area shape="rect" id="node198" href="oauth2client.file.Storage-class.html#locked_delete" title="Delete Credentials file." alt="" coords="17,247,188,265"/>
+<area shape="rect" id="node1" href="oauth2client.file.Storage-class.html" title="Store and retrieve a single credential to and from a file." alt="" coords="5,121,200,271"/>
+<area shape="rect" id="node199" href="oauth2client.client.Storage-class.html#get" title="Retrieve credential." alt="" coords="40,39,165,57"/>
+<area shape="rect" id="node199" href="oauth2client.client.Storage-class.html#put" title="Write a credential." alt="" coords="40,57,165,76"/>
+<area shape="rect" id="node199" href="oauth2client.client.Storage-class.html#delete" title="Delete credential." alt="" coords="40,76,165,95"/>
+<area shape="rect" id="node2" href="oauth2client.client.Storage-class.html" title="Base class for all Storage objects." alt="" coords="28,6,177,101"/>
</map>
- <img src="class_hierarchy_for_storage_3.gif" alt='' usemap="#class_hierarchy_for_storage_3" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_oauth2cl_39.gif" alt='' usemap="#uml_class_diagram_for_oauth2cl_39" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -512,7 +521,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:25 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:46 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.gce-module.html b/docs/epy/oauth2client.gce-module.html
index 3fec9cb..e24d7d9 100644
--- a/docs/epy/oauth2client.gce-module.html
+++ b/docs/epy/oauth2client.gce-module.html
@@ -184,7 +184,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:23 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:42 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.gce-pysrc.html b/docs/epy/oauth2client.gce-pysrc.html
index 6063bf3..7546ae6 100644
--- a/docs/epy/oauth2client.gce-pysrc.html
+++ b/docs/epy/oauth2client.gce-pysrc.html
@@ -122,7 +122,9 @@
<a name="L60"></a><tt class="py-lineno">60</tt> <tt class="py-line"> </tt>
<a name="L61"></a><tt class="py-lineno">61</tt> <tt class="py-line"> <tt class="py-comment"># Assertion type is no longer used, but still in the parent class signature.</tt> </tt>
<a name="L62"></a><tt class="py-lineno">62</tt> <tt class="py-line"> <tt class="py-name">super</tt><tt class="py-op">(</tt><tt id="link-15" class="py-name" targets="Class oauth2client.appengine.AppAssertionCredentials=oauth2client.appengine.AppAssertionCredentials-class.html,Class oauth2client.gce.AppAssertionCredentials=oauth2client.gce.AppAssertionCredentials-class.html"><a title="oauth2client.appengine.AppAssertionCredentials
-oauth2client.gce.AppAssertionCredentials" class="py-name" href="#" onclick="return doclink('link-15', 'AppAssertionCredentials', 'link-15');">AppAssertionCredentials</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-16" class="py-name" targets="Method apiclient.discovery.Resource.__init__()=apiclient.discovery.Resource-class.html#__init__,Method apiclient.discovery.ResourceMethodParameters.__init__()=apiclient.discovery.ResourceMethodParameters-class.html#__init__,Method apiclient.errors.BatchError.__init__()=apiclient.errors.BatchError-class.html#__init__,Method apiclient.errors.HttpError.__init__()=apiclient.errors.HttpError-class.html#__init__,Method apiclient.errors.UnexpectedBodyError.__init__()=apiclient.errors.UnexpectedBodyError-class.html#__init__,Method apiclient.errors.UnexpectedMethodError.__init__()=apiclient.errors.UnexpectedMethodError-class.html#__init__,Method apiclient.http.BatchHttpRequest.__init__()=apiclient.http.BatchHttpRequest-class.html#__init__,Method apiclient.http.HttpMock.__init__()=apiclient.http.HttpMock-class.html#__init__,Method apiclient.http.HttpMockSequence.__init__()=apiclient.http.HttpMockSequence-class.html#__init__,Method apiclient.http.HttpRequest.__init__()=apiclient.http.HttpRequest-class.html#__init__,Method apiclient.http.HttpRequestMock.__init__()=apiclient.http.HttpRequestMock-class.html#__init__,Method apiclient.http.MediaDownloadProgress.__init__()=apiclient.http.MediaDownloadProgress-class.html#__init__,Method apiclient.http.MediaFileUpload.__init__()=apiclient.http.MediaFileUpload-class.html#__init__,Method apiclient.http.MediaInMemoryUpload.__init__()=apiclient.http.MediaInMemoryUpload-class.html#__init__,Method apiclient.http.MediaIoBaseDownload.__init__()=apiclient.http.MediaIoBaseDownload-class.html#__init__,Method apiclient.http.MediaIoBaseUpload.__init__()=apiclient.http.MediaIoBaseUpload-class.html#__init__,Method apiclient.http.MediaUploadProgress.__init__()=apiclient.http.MediaUploadProgress-class.html#__init__,Method apiclient.http.RequestMockBuilder.__init__()=apiclient.http.RequestMockBuilder-class.html#__init__,Method apiclient.http._StreamSlice.__init__()=apiclient.http._StreamSlice-class.html#__init__,Method apiclient.model.JsonModel.__init__()=apiclient.model.JsonModel-class.html#__init__,Method apiclient.model.ProtocolBufferModel.__init__()=apiclient.model.ProtocolBufferModel-class.html#__init__,Method apiclient.push.Channel.__init__()=apiclient.push.Channel-class.html#__init__,Method apiclient.push.Headers.__init__()=apiclient.push.Headers-class.html#__init__,Method apiclient.push.Subscription.__init__()=apiclient.push.Subscription-class.html#__init__,Method apiclient.push.WebhookChannel.__init__()=apiclient.push.WebhookChannel-class.html#__init__,Method apiclient.schema.Schemas.__init__()=apiclient.schema.Schemas-class.html#__init__,Method apiclient.schema._SchemaToStruct.__init__()=apiclient.schema._SchemaToStruct-class.html#__init__,Method oauth2client.appengine.AppAssertionCredentials.__init__()=oauth2client.appengine.AppAssertionCredentials-class.html#__init__,Method oauth2client.appengine.OAuth2Decorator.__init__()=oauth2client.appengine.OAuth2Decorator-class.html#__init__,Method oauth2client.appengine.OAuth2DecoratorFromClientSecrets.__init__()=oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html#__init__,Method oauth2client.appengine.StorageByKeyName.__init__()=oauth2client.appengine.StorageByKeyName-class.html#__init__,Method oauth2client.client.AccessTokenCredentials.__init__()=oauth2client.client.AccessTokenCredentials-class.html#__init__,Method oauth2client.client.AssertionCredentials.__init__()=oauth2client.client.AssertionCredentials-class.html#__init__,Method oauth2client.client.MemoryCache.__init__()=oauth2client.client.MemoryCache-class.html#__init__,Method oauth2client.client.OAuth2Credentials.__init__()=oauth2client.client.OAuth2Credentials-class.html#__init__,Method oauth2client.client.OAuth2WebServerFlow.__init__()=oauth2client.client.OAuth2WebServerFlow-class.html#__init__,Method oauth2client.client.SignedJwtAssertionCredentials.__init__()=oauth2client.client.SignedJwtAssertionCredentials-class.html#__init__,Method oauth2client.django_orm.CredentialsField.__init__()=oauth2client.django_orm.CredentialsField-class.html#__init__,Method oauth2client.django_orm.FlowField.__init__()=oauth2client.django_orm.FlowField-class.html#__init__,Method oauth2client.django_orm.Storage.__init__()=oauth2client.django_orm.Storage-class.html#__init__,Method oauth2client.file.Storage.__init__()=oauth2client.file.Storage-class.html#__init__,Method oauth2client.gce.AppAssertionCredentials.__init__()=oauth2client.gce.AppAssertionCredentials-class.html#__init__,Method oauth2client.keyring_storage.Storage.__init__()=oauth2client.keyring_storage.Storage-class.html#__init__,Method oauth2client.locked_file.LockedFile.__init__()=oauth2client.locked_file.LockedFile-class.html#__init__,Method oauth2client.locked_file._Opener.__init__()=oauth2client.locked_file._Opener-class.html#__init__,Method oauth2client.multistore_file._MultiStore._Storage.__init__()=oauth2client.multistore_file._MultiStore._Storage-class.html#__init__,Method oauth2client.multistore_file._MultiStore.__init__()=oauth2client.multistore_file._MultiStore-class.html#__init__"><a title="apiclient.discovery.Resource.__init__
+oauth2client.gce.AppAssertionCredentials" class="py-name" href="#" onclick="return doclink('link-15', 'AppAssertionCredentials', 'link-15');">AppAssertionCredentials</a></tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-16" class="py-name" targets="Method apiclient.channel.Channel.__init__()=apiclient.channel.Channel-class.html#__init__,Method apiclient.channel.Notification.__init__()=apiclient.channel.Notification-class.html#__init__,Method apiclient.discovery.Resource.__init__()=apiclient.discovery.Resource-class.html#__init__,Method apiclient.discovery.ResourceMethodParameters.__init__()=apiclient.discovery.ResourceMethodParameters-class.html#__init__,Method apiclient.errors.BatchError.__init__()=apiclient.errors.BatchError-class.html#__init__,Method apiclient.errors.HttpError.__init__()=apiclient.errors.HttpError-class.html#__init__,Method apiclient.errors.UnexpectedBodyError.__init__()=apiclient.errors.UnexpectedBodyError-class.html#__init__,Method apiclient.errors.UnexpectedMethodError.__init__()=apiclient.errors.UnexpectedMethodError-class.html#__init__,Method apiclient.http.BatchHttpRequest.__init__()=apiclient.http.BatchHttpRequest-class.html#__init__,Method apiclient.http.HttpMock.__init__()=apiclient.http.HttpMock-class.html#__init__,Method apiclient.http.HttpMockSequence.__init__()=apiclient.http.HttpMockSequence-class.html#__init__,Method apiclient.http.HttpRequest.__init__()=apiclient.http.HttpRequest-class.html#__init__,Method apiclient.http.HttpRequestMock.__init__()=apiclient.http.HttpRequestMock-class.html#__init__,Method apiclient.http.MediaDownloadProgress.__init__()=apiclient.http.MediaDownloadProgress-class.html#__init__,Method apiclient.http.MediaFileUpload.__init__()=apiclient.http.MediaFileUpload-class.html#__init__,Method apiclient.http.MediaInMemoryUpload.__init__()=apiclient.http.MediaInMemoryUpload-class.html#__init__,Method apiclient.http.MediaIoBaseDownload.__init__()=apiclient.http.MediaIoBaseDownload-class.html#__init__,Method apiclient.http.MediaIoBaseUpload.__init__()=apiclient.http.MediaIoBaseUpload-class.html#__init__,Method apiclient.http.MediaUploadProgress.__init__()=apiclient.http.MediaUploadProgress-class.html#__init__,Method apiclient.http.RequestMockBuilder.__init__()=apiclient.http.RequestMockBuilder-class.html#__init__,Method apiclient.http._StreamSlice.__init__()=apiclient.http._StreamSlice-class.html#__init__,Method apiclient.model.JsonModel.__init__()=apiclient.model.JsonModel-class.html#__init__,Method apiclient.model.ProtocolBufferModel.__init__()=apiclient.model.ProtocolBufferModel-class.html#__init__,Method apiclient.schema.Schemas.__init__()=apiclient.schema.Schemas-class.html#__init__,Method apiclient.schema._SchemaToStruct.__init__()=apiclient.schema._SchemaToStruct-class.html#__init__,Method oauth2client.appengine.AppAssertionCredentials.__init__()=oauth2client.appengine.AppAssertionCredentials-class.html#__init__,Method oauth2client.appengine.OAuth2Decorator.__init__()=oauth2client.appengine.OAuth2Decorator-class.html#__init__,Method oauth2client.appengine.OAuth2DecoratorFromClientSecrets.__init__()=oauth2client.appengine.OAuth2DecoratorFromClientSecrets-class.html#__init__,Method oauth2client.appengine.StorageByKeyName.__init__()=oauth2client.appengine.StorageByKeyName-class.html#__init__,Method oauth2client.client.AccessTokenCredentials.__init__()=oauth2client.client.AccessTokenCredentials-class.html#__init__,Method oauth2client.client.AssertionCredentials.__init__()=oauth2client.client.AssertionCredentials-class.html#__init__,Method oauth2client.client.MemoryCache.__init__()=oauth2client.client.MemoryCache-class.html#__init__,Method oauth2client.client.OAuth2Credentials.__init__()=oauth2client.client.OAuth2Credentials-class.html#__init__,Method oauth2client.client.OAuth2WebServerFlow.__init__()=oauth2client.client.OAuth2WebServerFlow-class.html#__init__,Method oauth2client.client.SignedJwtAssertionCredentials.__init__()=oauth2client.client.SignedJwtAssertionCredentials-class.html#__init__,Method oauth2client.django_orm.CredentialsField.__init__()=oauth2client.django_orm.CredentialsField-class.html#__init__,Method oauth2client.django_orm.FlowField.__init__()=oauth2client.django_orm.FlowField-class.html#__init__,Method oauth2client.django_orm.Storage.__init__()=oauth2client.django_orm.Storage-class.html#__init__,Method oauth2client.file.Storage.__init__()=oauth2client.file.Storage-class.html#__init__,Method oauth2client.gce.AppAssertionCredentials.__init__()=oauth2client.gce.AppAssertionCredentials-class.html#__init__,Method oauth2client.keyring_storage.Storage.__init__()=oauth2client.keyring_storage.Storage-class.html#__init__,Method oauth2client.locked_file.LockedFile.__init__()=oauth2client.locked_file.LockedFile-class.html#__init__,Method oauth2client.locked_file._Opener.__init__()=oauth2client.locked_file._Opener-class.html#__init__,Method oauth2client.multistore_file._MultiStore._Storage.__init__()=oauth2client.multistore_file._MultiStore._Storage-class.html#__init__,Method oauth2client.multistore_file._MultiStore.__init__()=oauth2client.multistore_file._MultiStore-class.html#__init__"><a title="apiclient.channel.Channel.__init__
+apiclient.channel.Notification.__init__
+apiclient.discovery.Resource.__init__
apiclient.discovery.ResourceMethodParameters.__init__
apiclient.errors.BatchError.__init__
apiclient.errors.HttpError.__init__
@@ -143,10 +145,6 @@
apiclient.http._StreamSlice.__init__
apiclient.model.JsonModel.__init__
apiclient.model.ProtocolBufferModel.__init__
-apiclient.push.Channel.__init__
-apiclient.push.Headers.__init__
-apiclient.push.Subscription.__init__
-apiclient.push.WebhookChannel.__init__
apiclient.schema.Schemas.__init__
apiclient.schema._SchemaToStruct.__init__
oauth2client.appengine.AppAssertionCredentials.__init__
@@ -230,7 +228,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:26 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:47 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.gce.AppAssertionCredentials-class.html b/docs/epy/oauth2client.gce.AppAssertionCredentials-class.html
index 94e348a..e4dad8b 100644
--- a/docs/epy/oauth2client.gce.AppAssertionCredentials-class.html
+++ b/docs/epy/oauth2client.gce.AppAssertionCredentials-class.html
@@ -55,13 +55,26 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class AppAssertionCredentials</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.gce-pysrc.html#AppAssertionCredentials">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_appasserti_2" name="class_hierarchy_for_appasserti_2">
-<area shape="rect" id="node1" href="oauth2client.client.AssertionCredentials-class.html" title="client.AssertionCredentials" alt="" coords="5,6,184,34"/>
-<area shape="rect" id="node2" href="oauth2client.client.Credentials-class.html" title="client.Credentials" alt="" coords="208,6,331,34"/>
-<area shape="rect" id="node3" href="oauth2client.client.OAuth2Credentials-class.html" title="client.OAuth2Credentials" alt="" coords="355,6,520,34"/>
-<area shape="rect" id="node4" href="oauth2client.gce.AppAssertionCredentials-class.html" title="AppAssertionCredentials" alt="" coords="544,6,709,34"/>
+<center> <map id="uml_class_diagram_for_oauth2cl_40" name="uml_class_diagram_for_oauth2cl_40">
+<area shape="rect" id="node200" href="oauth2client.gce.AppAssertionCredentials-class.html#__init__" title="Constructor for AppAssertionCredentials" alt="" coords="25,420,209,439"/>
+<area shape="rect" id="node200" href="oauth2client.gce.AppAssertionCredentials-class.html#from_json" title="Instantiate a Credentials object from a JSON description of it." alt="" coords="25,439,209,457"/>
+<area shape="rect" id="node1" href="oauth2client.gce.AppAssertionCredentials-class.html" title="Credentials object for Compute Engine Assertion Grants" alt="" coords="13,387,221,463"/>
+<area shape="rect" id="node2" href="oauth2client.client.AssertionCredentials-class.html" title="Abstract Credentials object used for OAuth 2.0 assertion grants." alt="" coords="25,323,207,367"/>
+<area shape="rect" id="node202" href="oauth2client.client.OAuth2Credentials-class.html#authorize" title="Authorize an httplib2.Http instance with these credentials." alt="" coords="33,129,200,148"/>
+<area shape="rect" id="node202" href="oauth2client.client.OAuth2Credentials-class.html#refresh" title="Forces a refresh of the access_token." alt="" coords="33,148,200,167"/>
+<area shape="rect" id="node202" href="oauth2client.client.OAuth2Credentials-class.html#revoke" title="Revokes a refresh_token and makes the credentials void." alt="" coords="33,167,200,185"/>
+<area shape="rect" id="node202" href="oauth2client.client.OAuth2Credentials-class.html#apply" title="Add the authorization to the headers." alt="" coords="33,185,200,204"/>
+<area shape="rect" id="node202" href="oauth2client.client.OAuth2Credentials-class.html#to_json" title="Creating a JSON representation of an instance of Credentials." alt="" coords="33,204,200,223"/>
+<area shape="rect" id="node202" href="oauth2client.client.OAuth2Credentials-class.html#access_token_expired" title="True if the credential is expired or invalid." alt="" coords="33,223,200,241"/>
+<area shape="rect" id="node202" href="oauth2client.client.OAuth2Credentials-class.html#set_store" title="Set the Storage for the credential." alt="" coords="33,241,200,260"/>
+<area shape="rect" id="node202" href="oauth2client.client.OAuth2Credentials-class.html#__getstate__" title="Trim the state down to something that can be pickled." alt="" coords="33,260,200,279"/>
+<area shape="rect" id="node202" href="oauth2client.client.OAuth2Credentials-class.html#__setstate__" title="Reconstitute the state of the object from being pickled." alt="" coords="33,279,200,297"/>
+<area shape="rect" id="node3" href="oauth2client.client.OAuth2Credentials-class.html" title="Credentials object for OAuth 2.0." alt="" coords="21,97,211,303"/>
+<area shape="rect" id="node203" href="oauth2client.client.Credentials-class.html#NON_SERIALIZED_MEMBERS" title="oauth2client.client.Credentials.NON_SERIALIZED_MEMBERS" alt="" coords="17,31,216,49"/>
+<area shape="rect" id="node203" href="oauth2client.client.Credentials-class.html#new_from_json" title="Utility class method to instantiate a Credentials subclass from a JSON representation produced by to_json()." alt="" coords="17,52,216,71"/>
+<area shape="rect" id="node4" href="oauth2client.client.Credentials-class.html" title="Base class for all Credentials objects." alt="" coords="5,6,227,77"/>
</map>
- <img src="class_hierarchy_for_appasserti_2.gif" alt='' usemap="#class_hierarchy_for_appasserti_2" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_oauth2cl_40.gif" alt='' usemap="#uml_class_diagram_for_oauth2cl_40" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -418,7 +431,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:25 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:46 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.keyring_storage-module.html b/docs/epy/oauth2client.keyring_storage-module.html
index b5269dc..cd7779a 100644
--- a/docs/epy/oauth2client.keyring_storage-module.html
+++ b/docs/epy/oauth2client.keyring_storage-module.html
@@ -113,7 +113,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:23 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:42 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.keyring_storage-pysrc.html b/docs/epy/oauth2client.keyring_storage-pysrc.html
index f17854f..466aa16 100644
--- a/docs/epy/oauth2client.keyring_storage-pysrc.html
+++ b/docs/epy/oauth2client.keyring_storage-pysrc.html
@@ -137,22 +137,26 @@
<a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"><tt class="py-docstring"> oauth2client.client.Credentials</tt> </tt>
<a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"> <tt id="link-7" class="py-name" targets="Variable oauth2client.appengine.CredentialsModel.credentials=oauth2client.appengine.CredentialsModel-class.html#credentials,Variable oauth2client.appengine.CredentialsNDBModel.credentials=oauth2client.appengine.CredentialsNDBModel-class.html#credentials"><a title="oauth2client.appengine.CredentialsModel.credentials
-oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-7', 'credentials', 'link-7');">credentials</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"> <tt id="link-7" class="py-name" targets="Variable oauth2client.appengine.CredentialsModel.credentials=oauth2client.appengine.CredentialsModel-class.html#credentials,Variable oauth2client.appengine.CredentialsNDBModel.credentials=oauth2client.appengine.CredentialsNDBModel-class.html#credentials,Variable oauth2client.appengine.OAuth2Decorator.credentials=oauth2client.appengine.OAuth2Decorator-class.html#credentials"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-7', 'credentials', 'link-7');">credentials</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"> <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-name">keyring</tt><tt class="py-op">.</tt><tt class="py-name">get_password</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_service_name</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_user_name</tt><tt class="py-op">)</tt> </tt>
<a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"> </tt>
<a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">content</tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
<a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
<a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"> <tt id="link-8" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
-oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-8', 'credentials', 'link-7');">credentials</a></tt> <tt class="py-op">=</tt> <tt id="link-9" class="py-name"><a title="oauth2client.client.Credentials" class="py-name" href="#" onclick="return doclink('link-9', 'Credentials', 'link-3');">Credentials</a></tt><tt class="py-op">.</tt><tt id="link-10" class="py-name" targets="Class Method apiclient.http.MediaUpload.new_from_json()=apiclient.http.MediaUpload-class.html#new_from_json,Class Method oauth2client.client.Credentials.new_from_json()=oauth2client.client.Credentials-class.html#new_from_json"><a title="apiclient.http.MediaUpload.new_from_json
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-8', 'credentials', 'link-7');">credentials</a></tt> <tt class="py-op">=</tt> <tt id="link-9" class="py-name"><a title="oauth2client.client.Credentials" class="py-name" href="#" onclick="return doclink('link-9', 'Credentials', 'link-3');">Credentials</a></tt><tt class="py-op">.</tt><tt id="link-10" class="py-name" targets="Class Method apiclient.http.MediaUpload.new_from_json()=apiclient.http.MediaUpload-class.html#new_from_json,Class Method oauth2client.client.Credentials.new_from_json()=oauth2client.client.Credentials-class.html#new_from_json"><a title="apiclient.http.MediaUpload.new_from_json
oauth2client.client.Credentials.new_from_json" class="py-name" href="#" onclick="return doclink('link-10', 'new_from_json', 'link-10');">new_from_json</a></tt><tt class="py-op">(</tt><tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
<a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"> <tt id="link-11" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
-oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-11', 'credentials', 'link-7');">credentials</a></tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Method oauth2client.client.OAuth2Credentials.set_store()=oauth2client.client.OAuth2Credentials-class.html#set_store"><a title="oauth2client.client.OAuth2Credentials.set_store" class="py-name" href="#" onclick="return doclink('link-12', 'set_store', 'link-12');">set_store</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-11', 'credentials', 'link-7');">credentials</a></tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Method oauth2client.client.OAuth2Credentials.set_store()=oauth2client.client.OAuth2Credentials-class.html#set_store"><a title="oauth2client.client.OAuth2Credentials.set_store" class="py-name" href="#" onclick="return doclink('link-12', 'set_store', 'link-12');">set_store</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
<a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt><tt class="py-op">:</tt> </tt>
<a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"> </tt>
<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-13" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
-oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-13', 'credentials', 'link-7');">credentials</a></tt> </tt>
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-13', 'credentials', 'link-7');">credentials</a></tt> </tt>
</div><a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"> </tt>
<a name="Storage.locked_put"></a><div id="Storage.locked_put-def"><a name="L94"></a><tt class="py-lineno"> 94</tt> <a class="py-toggle" href="#" id="Storage.locked_put-toggle" onclick="return toggle('Storage.locked_put');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.keyring_storage.Storage-class.html#locked_put">locked_put</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">credentials</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="Storage.locked_put-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="Storage.locked_put-expanded"><a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"> <tt class="py-docstring">"""Write Credentials to file.</tt> </tt>
@@ -162,7 +166,8 @@
<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"> <tt class="py-name">keyring</tt><tt class="py-op">.</tt><tt class="py-name">set_password</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_service_name</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_user_name</tt><tt class="py-op">,</tt> </tt>
<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"> <tt id="link-14" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
-oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-14', 'credentials', 'link-7');">credentials</a></tt><tt class="py-op">.</tt><tt id="link-15" class="py-name" targets="Method apiclient.http.HttpRequest.to_json()=apiclient.http.HttpRequest-class.html#to_json,Method apiclient.http.MediaFileUpload.to_json()=apiclient.http.MediaFileUpload-class.html#to_json,Method apiclient.http.MediaIoBaseUpload.to_json()=apiclient.http.MediaIoBaseUpload-class.html#to_json,Method apiclient.http.MediaUpload.to_json()=apiclient.http.MediaUpload-class.html#to_json,Method oauth2client.client.Credentials.to_json()=oauth2client.client.Credentials-class.html#to_json,Method oauth2client.client.OAuth2Credentials.to_json()=oauth2client.client.OAuth2Credentials-class.html#to_json"><a title="apiclient.http.HttpRequest.to_json
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-14', 'credentials', 'link-7');">credentials</a></tt><tt class="py-op">.</tt><tt id="link-15" class="py-name" targets="Method apiclient.http.HttpRequest.to_json()=apiclient.http.HttpRequest-class.html#to_json,Method apiclient.http.MediaFileUpload.to_json()=apiclient.http.MediaFileUpload-class.html#to_json,Method apiclient.http.MediaIoBaseUpload.to_json()=apiclient.http.MediaIoBaseUpload-class.html#to_json,Method apiclient.http.MediaUpload.to_json()=apiclient.http.MediaUpload-class.html#to_json,Method oauth2client.client.Credentials.to_json()=oauth2client.client.Credentials-class.html#to_json,Method oauth2client.client.OAuth2Credentials.to_json()=oauth2client.client.OAuth2Credentials-class.html#to_json"><a title="apiclient.http.HttpRequest.to_json
apiclient.http.MediaFileUpload.to_json
apiclient.http.MediaIoBaseUpload.to_json
apiclient.http.MediaUpload.to_json
@@ -206,7 +211,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:26 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:47 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.keyring_storage.Storage-class.html b/docs/epy/oauth2client.keyring_storage.Storage-class.html
index b2dc263..b34d3e4 100644
--- a/docs/epy/oauth2client.keyring_storage.Storage-class.html
+++ b/docs/epy/oauth2client.keyring_storage.Storage-class.html
@@ -55,11 +55,20 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class Storage</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.keyring_storage-pysrc.html#Storage">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_storage_4" name="class_hierarchy_for_storage_4">
-<area shape="rect" id="node1" href="oauth2client.client.Storage-class.html" title="client.Storage" alt="" coords="5,6,107,34"/>
-<area shape="rect" id="node2" href="oauth2client.keyring_storage.Storage-class.html" title="Storage" alt="" coords="131,6,197,34"/>
+<center> <map id="uml_class_diagram_for_oauth2cl_41" name="uml_class_diagram_for_oauth2cl_41">
+<area shape="rect" id="node204" href="oauth2client.keyring_storage.Storage-class.html#__init__" title="Constructor." alt="" coords="17,153,260,172"/>
+<area shape="rect" id="node204" href="oauth2client.keyring_storage.Storage-class.html#acquire_lock" title="Acquires any lock necessary to access this Storage." alt="" coords="17,172,260,191"/>
+<area shape="rect" id="node204" href="oauth2client.keyring_storage.Storage-class.html#release_lock" title="Release the Storage lock." alt="" coords="17,191,260,209"/>
+<area shape="rect" id="node204" href="oauth2client.keyring_storage.Storage-class.html#locked_get" title="Retrieve Credential from file." alt="" coords="17,209,260,228"/>
+<area shape="rect" id="node204" href="oauth2client.keyring_storage.Storage-class.html#locked_put" title="Write Credentials to file." alt="" coords="17,228,260,247"/>
+<area shape="rect" id="node204" href="oauth2client.keyring_storage.Storage-class.html#locked_delete" title="Delete Credentials file." alt="" coords="17,247,260,265"/>
+<area shape="rect" id="node1" href="oauth2client.keyring_storage.Storage-class.html" title="Store and retrieve a single credential to and from the keyring." alt="" coords="5,121,272,271"/>
+<area shape="rect" id="node205" href="oauth2client.client.Storage-class.html#get" title="Retrieve credential." alt="" coords="76,39,201,57"/>
+<area shape="rect" id="node205" href="oauth2client.client.Storage-class.html#put" title="Write a credential." alt="" coords="76,57,201,76"/>
+<area shape="rect" id="node205" href="oauth2client.client.Storage-class.html#delete" title="Delete credential." alt="" coords="76,76,201,95"/>
+<area shape="rect" id="node2" href="oauth2client.client.Storage-class.html" title="Base class for all Storage objects." alt="" coords="64,6,213,101"/>
</map>
- <img src="class_hierarchy_for_storage_4.gif" alt='' usemap="#class_hierarchy_for_storage_4" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_oauth2cl_41.gif" alt='' usemap="#uml_class_diagram_for_oauth2cl_41" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -470,7 +479,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:25 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:46 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.locked_file-module.html b/docs/epy/oauth2client.locked_file-module.html
index 10e1e01..b1655ef 100644
--- a/docs/epy/oauth2client.locked_file-module.html
+++ b/docs/epy/oauth2client.locked_file-module.html
@@ -229,7 +229,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:23 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:42 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.locked_file-pysrc.html b/docs/epy/oauth2client.locked_file-pysrc.html
index 502d46d..c81b479 100644
--- a/docs/epy/oauth2client.locked_file-pysrc.html
+++ b/docs/epy/oauth2client.locked_file-pysrc.html
@@ -53,34 +53,46 @@
</table>
<h1 class="epydoc">Source Code for <a href="oauth2client.locked_file-module.html">Module oauth2client.locked_file</a></h1>
<pre class="py-src">
-<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright 2011 Google Inc. All Rights Reserved.</tt> </tt>
-<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"> </tt>
-<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-docstring">"""Locked file interface that should work on Unix and Windows pythons.</tt> </tt>
-<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-docstring">This module first tries to use fcntl locking to ensure serialized access</tt> </tt>
-<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-docstring">to a file, then falls back on a lock file if that is unavialable.</tt> </tt>
-<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-docstring">Usage:</tt> </tt>
-<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-docstring"> f = LockedFile('filename', 'r+b', 'rb')</tt> </tt>
-<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-docstring"> f.open_and_lock()</tt> </tt>
-<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-docstring"> if f.is_locked():</tt> </tt>
-<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-docstring"> print 'Acquired filename with r+b mode'</tt> </tt>
-<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-docstring"> f.file_handle().write('locked data')</tt> </tt>
-<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-docstring"> else:</tt> </tt>
-<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-docstring"> print 'Aquired filename with rb mode'</tt> </tt>
-<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-docstring"> f.unlock_and_close()</tt> </tt>
-<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
-<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"> </tt>
-<a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-name">__author__</tt> <tt class="py-op">=</tt> <tt class="py-string">'cache@google.com (David T McWherter)'</tt> </tt>
-<a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"> </tt>
-<a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">errno</tt> </tt>
-<a name="L22"></a><tt class="py-lineno"> 22</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt> </tt>
-<a name="L23"></a><tt class="py-lineno"> 23</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">os</tt> </tt>
-<a name="L24"></a><tt class="py-lineno"> 24</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">time</tt> </tt>
-<a name="L25"></a><tt class="py-lineno"> 25</tt> <tt class="py-line"> </tt>
-<a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-0" class="py-name" targets="Package oauth2client=oauth2client-module.html"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-0', 'oauth2client', 'link-0');">oauth2client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-1" class="py-name" targets="Module oauth2client.util=oauth2client.util-module.html"><a title="oauth2client.util" class="py-name" href="#" onclick="return doclink('link-1', 'util', 'link-1');">util</a></tt> </tt>
-<a name="L27"></a><tt class="py-lineno"> 27</tt> <tt class="py-line"> </tt>
-<a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"><tt id="link-2" class="py-name" targets="Variable apiclient.discovery.logger=apiclient.discovery-module.html#logger,Variable oauth2client.appengine.logger=oauth2client.appengine-module.html#logger,Variable oauth2client.client.logger=oauth2client.client-module.html#logger,Variable oauth2client.crypt.logger=oauth2client.crypt-module.html#logger,Variable oauth2client.gce.logger=oauth2client.gce-module.html#logger,Variable oauth2client.locked_file.logger=oauth2client.locked_file-module.html#logger,Variable oauth2client.multistore_file.logger=oauth2client.multistore_file-module.html#logger,Variable oauth2client.util.logger=oauth2client.util-module.html#logger"><a title="apiclient.discovery.logger
+<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright 2011 Google Inc.</tt> </tt>
+<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"># Licensed under the Apache License, Version 2.0 (the "License");</tt> </tt>
+<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"># you may not use this file except in compliance with the License.</tt> </tt>
+<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"># You may obtain a copy of the License at</tt> </tt>
+<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"># http://www.apache.org/licenses/LICENSE-2.0</tt> </tt>
+<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"># Unless required by applicable law or agreed to in writing, software</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"># distributed under the License is distributed on an "AS IS" BASIS,</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"># WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"># See the License for the specific language governing permissions and</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"># limitations under the License.</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-docstring">"""Locked file interface that should work on Unix and Windows pythons.</tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-docstring">This module first tries to use fcntl locking to ensure serialized access</tt> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-docstring">to a file, then falls back on a lock file if that is unavialable.</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-docstring">Usage:</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-docstring"> f = LockedFile('filename', 'r+b', 'rb')</tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt> <tt class="py-line"><tt class="py-docstring"> f.open_and_lock()</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt> <tt class="py-line"><tt class="py-docstring"> if f.is_locked():</tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt> <tt class="py-line"><tt class="py-docstring"> print 'Acquired filename with r+b mode'</tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt> <tt class="py-line"><tt class="py-docstring"> f.file_handle().write('locked data')</tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"><tt class="py-docstring"> else:</tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt> <tt class="py-line"><tt class="py-docstring"> print 'Aquired filename with rb mode'</tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"><tt class="py-docstring"> f.unlock_and_close()</tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"><tt class="py-name">__author__</tt> <tt class="py-op">=</tt> <tt class="py-string">'cache@google.com (David T McWherter)'</tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">errno</tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">os</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">time</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-0" class="py-name" targets="Package oauth2client=oauth2client-module.html"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-0', 'oauth2client', 'link-0');">oauth2client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-1" class="py-name" targets="Module oauth2client.util=oauth2client.util-module.html"><a title="oauth2client.util" class="py-name" href="#" onclick="return doclink('link-1', 'util', 'link-1');">util</a></tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"><tt id="link-2" class="py-name" targets="Variable apiclient.discovery.logger=apiclient.discovery-module.html#logger,Variable oauth2client.appengine.logger=oauth2client.appengine-module.html#logger,Variable oauth2client.client.logger=oauth2client.client-module.html#logger,Variable oauth2client.crypt.logger=oauth2client.crypt-module.html#logger,Variable oauth2client.gce.logger=oauth2client.gce-module.html#logger,Variable oauth2client.locked_file.logger=oauth2client.locked_file-module.html#logger,Variable oauth2client.multistore_file.logger=oauth2client.multistore_file-module.html#logger,Variable oauth2client.util.logger=oauth2client.util-module.html#logger"><a title="apiclient.discovery.logger
oauth2client.appengine.logger
oauth2client.client.logger
oauth2client.crypt.logger
@@ -88,114 +100,114 @@
oauth2client.locked_file.logger
oauth2client.multistore_file.logger
oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-2', 'logger', 'link-2');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-name">__name__</tt><tt class="py-op">)</tt> </tt>
-<a name="CredentialsFileSymbolicLinkError"></a><div id="CredentialsFileSymbolicLinkError-def"><a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"> </tt>
-<a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"> </tt>
-<a name="L31"></a><tt class="py-lineno"> 31</tt> <a class="py-toggle" href="#" id="CredentialsFileSymbolicLinkError-toggle" onclick="return toggle('CredentialsFileSymbolicLinkError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.locked_file.CredentialsFileSymbolicLinkError-class.html">CredentialsFileSymbolicLinkError</a><tt class="py-op">(</tt><tt class="py-base-class">Exception</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="CredentialsFileSymbolicLinkError-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="CredentialsFileSymbolicLinkError-expanded"><a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"> <tt class="py-docstring">"""Credentials files must not be symbolic links."""</tt> </tt>
-</div><a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"> </tt>
-<a name="AlreadyLockedException"></a><div id="AlreadyLockedException-def"><a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"> </tt>
-<a name="L35"></a><tt class="py-lineno"> 35</tt> <a class="py-toggle" href="#" id="AlreadyLockedException-toggle" onclick="return toggle('AlreadyLockedException');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.locked_file.AlreadyLockedException-class.html">AlreadyLockedException</a><tt class="py-op">(</tt><tt class="py-base-class">Exception</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="AlreadyLockedException-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="AlreadyLockedException-expanded"><a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"> <tt class="py-docstring">"""Trying to lock a file that has already been locked by the LockedFile."""</tt> </tt>
-<a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
-</div><a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"> </tt>
-<a name="validate_file"></a><div id="validate_file-def"><a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"> </tt>
-<a name="L40"></a><tt class="py-lineno"> 40</tt> <a class="py-toggle" href="#" id="validate_file-toggle" onclick="return toggle('validate_file');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.locked_file-module.html#validate_file">validate_file</a><tt class="py-op">(</tt><tt class="py-param">filename</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="validate_file-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="validate_file-expanded"><a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">islink</tt><tt class="py-op">(</tt><tt id="link-3" class="py-name" targets="Method oauth2client.locked_file.LockedFile.filename()=oauth2client.locked_file.LockedFile-class.html#filename,Method oauth2client.locked_file._Opener.filename()=oauth2client.locked_file._Opener-class.html#filename"><a title="oauth2client.locked_file.LockedFile.filename
+<a name="CredentialsFileSymbolicLinkError"></a><div id="CredentialsFileSymbolicLinkError-def"><a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt> <a class="py-toggle" href="#" id="CredentialsFileSymbolicLinkError-toggle" onclick="return toggle('CredentialsFileSymbolicLinkError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.locked_file.CredentialsFileSymbolicLinkError-class.html">CredentialsFileSymbolicLinkError</a><tt class="py-op">(</tt><tt class="py-base-class">Exception</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="CredentialsFileSymbolicLinkError-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="CredentialsFileSymbolicLinkError-expanded"><a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"> <tt class="py-docstring">"""Credentials files must not be symbolic links."""</tt> </tt>
+</div><a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"> </tt>
+<a name="AlreadyLockedException"></a><div id="AlreadyLockedException-def"><a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt> <a class="py-toggle" href="#" id="AlreadyLockedException-toggle" onclick="return toggle('AlreadyLockedException');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.locked_file.AlreadyLockedException-class.html">AlreadyLockedException</a><tt class="py-op">(</tt><tt class="py-base-class">Exception</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="AlreadyLockedException-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="AlreadyLockedException-expanded"><a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"> <tt class="py-docstring">"""Trying to lock a file that has already been locked by the LockedFile."""</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"> </tt>
+<a name="validate_file"></a><div id="validate_file-def"><a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt> <a class="py-toggle" href="#" id="validate_file-toggle" onclick="return toggle('validate_file');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.locked_file-module.html#validate_file">validate_file</a><tt class="py-op">(</tt><tt class="py-param">filename</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="validate_file-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="validate_file-expanded"><a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">islink</tt><tt class="py-op">(</tt><tt id="link-3" class="py-name" targets="Method oauth2client.locked_file.LockedFile.filename()=oauth2client.locked_file.LockedFile-class.html#filename,Method oauth2client.locked_file._Opener.filename()=oauth2client.locked_file._Opener-class.html#filename"><a title="oauth2client.locked_file.LockedFile.filename
oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-3', 'filename', 'link-3');">filename</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-4" class="py-name" targets="Class oauth2client.file.CredentialsFileSymbolicLinkError=oauth2client.file.CredentialsFileSymbolicLinkError-class.html,Class oauth2client.locked_file.CredentialsFileSymbolicLinkError=oauth2client.locked_file.CredentialsFileSymbolicLinkError-class.html"><a title="oauth2client.file.CredentialsFileSymbolicLinkError
+<a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-4" class="py-name" targets="Class oauth2client.file.CredentialsFileSymbolicLinkError=oauth2client.file.CredentialsFileSymbolicLinkError-class.html,Class oauth2client.locked_file.CredentialsFileSymbolicLinkError=oauth2client.locked_file.CredentialsFileSymbolicLinkError-class.html"><a title="oauth2client.file.CredentialsFileSymbolicLinkError
oauth2client.locked_file.CredentialsFileSymbolicLinkError" class="py-name" href="#" onclick="return doclink('link-4', 'CredentialsFileSymbolicLinkError', 'link-4');">CredentialsFileSymbolicLinkError</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"> <tt class="py-string">'File: %s is a symbolic link.'</tt> <tt class="py-op">%</tt> <tt id="link-5" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
+<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"> <tt class="py-string">'File: %s is a symbolic link.'</tt> <tt class="py-op">%</tt> <tt id="link-5" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-5', 'filename', 'link-3');">filename</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"> </tt>
-<a name="_Opener"></a><div id="_Opener-def"><a name="L45"></a><tt class="py-lineno"> 45</tt> <a class="py-toggle" href="#" id="_Opener-toggle" onclick="return toggle('_Opener');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.locked_file._Opener-class.html">_Opener</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_Opener-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_Opener-expanded"><a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"> <tt class="py-docstring">"""Base class for different locking primitives."""</tt> </tt>
-<a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"> </tt>
-<a name="_Opener.__init__"></a><div id="_Opener.__init__-def"><a name="L48"></a><tt class="py-lineno"> 48</tt> <a class="py-toggle" href="#" id="_Opener.__init__-toggle" onclick="return toggle('_Opener.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.locked_file._Opener-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">filename</tt><tt class="py-op">,</tt> <tt class="py-param">mode</tt><tt class="py-op">,</tt> <tt class="py-param">fallback_mode</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_Opener.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_Opener.__init__-expanded"><a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"> <tt class="py-docstring">"""Create an Opener.</tt> </tt>
-<a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"><tt class="py-docstring"> filename: string, The pathname of the file.</tt> </tt>
-<a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"><tt class="py-docstring"> mode: string, The preferred mode to access the file with.</tt> </tt>
-<a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"><tt class="py-docstring"> fallback_mode: string, The mode to use if locking fails.</tt> </tt>
-<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_locked</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
-<a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt> <tt class="py-op">=</tt> <tt id="link-6" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
+</div><a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"> </tt>
+<a name="_Opener"></a><div id="_Opener-def"><a name="L57"></a><tt class="py-lineno"> 57</tt> <a class="py-toggle" href="#" id="_Opener-toggle" onclick="return toggle('_Opener');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.locked_file._Opener-class.html">_Opener</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_Opener-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_Opener-expanded"><a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"> <tt class="py-docstring">"""Base class for different locking primitives."""</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"> </tt>
+<a name="_Opener.__init__"></a><div id="_Opener.__init__-def"><a name="L60"></a><tt class="py-lineno"> 60</tt> <a class="py-toggle" href="#" id="_Opener.__init__-toggle" onclick="return toggle('_Opener.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.locked_file._Opener-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">filename</tt><tt class="py-op">,</tt> <tt class="py-param">mode</tt><tt class="py-op">,</tt> <tt class="py-param">fallback_mode</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_Opener.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_Opener.__init__-expanded"><a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"> <tt class="py-docstring">"""Create an Opener.</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"><tt class="py-docstring"> filename: string, The pathname of the file.</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"><tt class="py-docstring"> mode: string, The preferred mode to access the file with.</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"><tt class="py-docstring"> fallback_mode: string, The mode to use if locking fails.</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_locked</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt> <tt class="py-op">=</tt> <tt id="link-6" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-6', 'filename', 'link-3');">filename</a></tt> </tt>
-<a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_mode</tt> <tt class="py-op">=</tt> <tt class="py-name">mode</tt> </tt>
-<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fallback_mode</tt> <tt class="py-op">=</tt> <tt class="py-name">fallback_mode</tt> </tt>
-<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-</div><a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"> </tt>
-<a name="_Opener.is_locked"></a><div id="_Opener.is_locked-def"><a name="L62"></a><tt class="py-lineno"> 62</tt> <a class="py-toggle" href="#" id="_Opener.is_locked-toggle" onclick="return toggle('_Opener.is_locked');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.locked_file._Opener-class.html#is_locked">is_locked</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_Opener.is_locked-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_Opener.is_locked-expanded"><a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"> <tt class="py-docstring">"""Was the file locked."""</tt> </tt>
-<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_locked</tt> </tt>
-</div><a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"> </tt>
-<a name="_Opener.file_handle"></a><div id="_Opener.file_handle-def"><a name="L66"></a><tt class="py-lineno"> 66</tt> <a class="py-toggle" href="#" id="_Opener.file_handle-toggle" onclick="return toggle('_Opener.file_handle');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.locked_file._Opener-class.html#file_handle">file_handle</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_Opener.file_handle-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_Opener.file_handle-expanded"><a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"> <tt class="py-docstring">"""The file handle to the file. Valid only after opened."""</tt> </tt>
-<a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt> </tt>
-</div><a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"> </tt>
-<a name="_Opener.filename"></a><div id="_Opener.filename-def"><a name="L70"></a><tt class="py-lineno"> 70</tt> <a class="py-toggle" href="#" id="_Opener.filename-toggle" onclick="return toggle('_Opener.filename');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.locked_file._Opener-class.html#filename">filename</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_Opener.filename-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_Opener.filename-expanded"><a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"> <tt class="py-docstring">"""The filename that is being locked."""</tt> </tt>
-<a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_mode</tt> <tt class="py-op">=</tt> <tt class="py-name">mode</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fallback_mode</tt> <tt class="py-op">=</tt> <tt class="py-name">fallback_mode</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
</div><a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"> </tt>
-<a name="_Opener.open_and_lock"></a><div id="_Opener.open_and_lock-def"><a name="L74"></a><tt class="py-lineno"> 74</tt> <a class="py-toggle" href="#" id="_Opener.open_and_lock-toggle" onclick="return toggle('_Opener.open_and_lock');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.locked_file._Opener-class.html#open_and_lock">open_and_lock</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">timeout</tt><tt class="py-op">,</tt> <tt class="py-param">delay</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_Opener.open_and_lock-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_Opener.open_and_lock-expanded"><a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"> <tt class="py-docstring">"""Open the file and lock it.</tt> </tt>
-<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"><tt class="py-docstring"> timeout: float, How long to try to lock for.</tt> </tt>
-<a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"><tt class="py-docstring"> delay: float, How long to wait between retries.</tt> </tt>
-<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
-</div><a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"> </tt>
-<a name="_Opener.unlock_and_close"></a><div id="_Opener.unlock_and_close-def"><a name="L83"></a><tt class="py-lineno"> 83</tt> <a class="py-toggle" href="#" id="_Opener.unlock_and_close-toggle" onclick="return toggle('_Opener.unlock_and_close');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.locked_file._Opener-class.html#unlock_and_close">unlock_and_close</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_Opener.unlock_and_close-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_Opener.unlock_and_close-expanded"><a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"> <tt class="py-docstring">"""Unlock and close the file."""</tt> </tt>
-<a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
-</div></div><a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> </tt>
-<a name="_PosixOpener"></a><div id="_PosixOpener-def"><a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"> </tt>
-<a name="L88"></a><tt class="py-lineno"> 88</tt> <a class="py-toggle" href="#" id="_PosixOpener-toggle" onclick="return toggle('_PosixOpener');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.locked_file._PosixOpener-class.html">_PosixOpener</a><tt class="py-op">(</tt><tt class="py-base-class">_Opener</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_PosixOpener-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_PosixOpener-expanded"><a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> <tt class="py-docstring">"""Lock files using Posix advisory lock files."""</tt> </tt>
-<a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"> </tt>
-<a name="_PosixOpener.open_and_lock"></a><div id="_PosixOpener.open_and_lock-def"><a name="L91"></a><tt class="py-lineno"> 91</tt> <a class="py-toggle" href="#" id="_PosixOpener.open_and_lock-toggle" onclick="return toggle('_PosixOpener.open_and_lock');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.locked_file._PosixOpener-class.html#open_and_lock">open_and_lock</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">timeout</tt><tt class="py-op">,</tt> <tt class="py-param">delay</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_PosixOpener.open_and_lock-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_PosixOpener.open_and_lock-expanded"><a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"> <tt class="py-docstring">"""Open the file and lock it.</tt> </tt>
-<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"><tt class="py-docstring"> Tries to create a .lock file next to the file we're trying to open.</tt> </tt>
-<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"><tt class="py-docstring"> timeout: float, How long to try to lock for.</tt> </tt>
-<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"><tt class="py-docstring"> delay: float, How long to wait between retries.</tt> </tt>
-<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"><tt class="py-docstring"> Raises:</tt> </tt>
-<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"><tt class="py-docstring"> AlreadyLockedException: if the lock is already acquired.</tt> </tt>
-<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"><tt class="py-docstring"> IOError: if the open fails.</tt> </tt>
-<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"><tt class="py-docstring"> CredentialsFileSymbolicLinkError if the file is a symbolic link.</tt> </tt>
-<a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_locked</tt><tt class="py-op">:</tt> </tt>
-<a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-7" class="py-name" targets="Class oauth2client.locked_file.AlreadyLockedException=oauth2client.locked_file.AlreadyLockedException-class.html"><a title="oauth2client.locked_file.AlreadyLockedException" class="py-name" href="#" onclick="return doclink('link-7', 'AlreadyLockedException', 'link-7');">AlreadyLockedException</a></tt><tt class="py-op">(</tt><tt class="py-string">'File %s is already locked'</tt> <tt class="py-op">%</tt> </tt>
-<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt><tt class="py-op">)</tt> </tt>
-<a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_locked</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
-<a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"> </tt>
-<a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"> <tt id="link-8" class="py-name" targets="Function oauth2client.locked_file.validate_file()=oauth2client.locked_file-module.html#validate_file"><a title="oauth2client.locked_file.validate_file" class="py-name" href="#" onclick="return doclink('link-8', 'validate_file', 'link-8');">validate_file</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt><tt class="py-op">)</tt> </tt>
-<a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_mode</tt><tt class="py-op">)</tt> </tt>
-<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">IOError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
-<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"> <tt class="py-comment"># If we can't access with _mode, try _fallback_mode and don't lock.</tt> </tt>
-<a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">errno</tt> <tt class="py-op">==</tt> <tt class="py-name">errno</tt><tt class="py-op">.</tt><tt class="py-name">EACCES</tt><tt class="py-op">:</tt> </tt>
-<a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fallback_mode</tt><tt class="py-op">)</tt> </tt>
-<a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
-<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"> </tt>
-<a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"> <tt class="py-name">lock_filename</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-9" class="py-name" targets="Method oauth2client.locked_file._PosixOpener._posix_lockfile()=oauth2client.locked_file._PosixOpener-class.html#_posix_lockfile"><a title="oauth2client.locked_file._PosixOpener._posix_lockfile" class="py-name" href="#" onclick="return doclink('link-9', '_posix_lockfile', 'link-9');">_posix_lockfile</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt><tt class="py-op">)</tt> </tt>
-<a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"> <tt class="py-name">start_time</tt> <tt class="py-op">=</tt> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">time</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt>
-<a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_lock_fd</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">lock_filename</tt><tt class="py-op">,</tt> </tt>
-<a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">O_CREAT</tt><tt class="py-op">|</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">O_EXCL</tt><tt class="py-op">|</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">O_RDWR</tt><tt class="py-op">)</tt> </tt>
-<a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_locked</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
-<a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt>
-<a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"> </tt>
-<a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">OSError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
-<a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">errno</tt> <tt class="py-op">!=</tt> <tt class="py-name">errno</tt><tt class="py-op">.</tt><tt class="py-name">EEXIST</tt><tt class="py-op">:</tt> </tt>
-<a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> </tt>
-<a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">time</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">-</tt> <tt class="py-name">start_time</tt><tt class="py-op">)</tt> <tt class="py-op">>=</tt> <tt class="py-name">timeout</tt><tt class="py-op">:</tt> </tt>
-<a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"> <tt id="link-10" class="py-name"><a title="apiclient.discovery.logger
+<a name="_Opener.is_locked"></a><div id="_Opener.is_locked-def"><a name="L74"></a><tt class="py-lineno"> 74</tt> <a class="py-toggle" href="#" id="_Opener.is_locked-toggle" onclick="return toggle('_Opener.is_locked');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.locked_file._Opener-class.html#is_locked">is_locked</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_Opener.is_locked-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_Opener.is_locked-expanded"><a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"> <tt class="py-docstring">"""Was the file locked."""</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_locked</tt> </tt>
+</div><a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"> </tt>
+<a name="_Opener.file_handle"></a><div id="_Opener.file_handle-def"><a name="L78"></a><tt class="py-lineno"> 78</tt> <a class="py-toggle" href="#" id="_Opener.file_handle-toggle" onclick="return toggle('_Opener.file_handle');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.locked_file._Opener-class.html#file_handle">file_handle</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_Opener.file_handle-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_Opener.file_handle-expanded"><a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"> <tt class="py-docstring">"""The file handle to the file. Valid only after opened."""</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt> </tt>
+</div><a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"> </tt>
+<a name="_Opener.filename"></a><div id="_Opener.filename-def"><a name="L82"></a><tt class="py-lineno"> 82</tt> <a class="py-toggle" href="#" id="_Opener.filename-toggle" onclick="return toggle('_Opener.filename');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.locked_file._Opener-class.html#filename">filename</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_Opener.filename-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_Opener.filename-expanded"><a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"> <tt class="py-docstring">"""The filename that is being locked."""</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt> </tt>
+</div><a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"> </tt>
+<a name="_Opener.open_and_lock"></a><div id="_Opener.open_and_lock-def"><a name="L86"></a><tt class="py-lineno"> 86</tt> <a class="py-toggle" href="#" id="_Opener.open_and_lock-toggle" onclick="return toggle('_Opener.open_and_lock');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.locked_file._Opener-class.html#open_and_lock">open_and_lock</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">timeout</tt><tt class="py-op">,</tt> <tt class="py-param">delay</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_Opener.open_and_lock-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_Opener.open_and_lock-expanded"><a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"> <tt class="py-docstring">"""Open the file and lock it.</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"><tt class="py-docstring"> timeout: float, How long to try to lock for.</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"><tt class="py-docstring"> delay: float, How long to wait between retries.</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"> </tt>
+<a name="_Opener.unlock_and_close"></a><div id="_Opener.unlock_and_close-def"><a name="L95"></a><tt class="py-lineno"> 95</tt> <a class="py-toggle" href="#" id="_Opener.unlock_and_close-toggle" onclick="return toggle('_Opener.unlock_and_close');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.locked_file._Opener-class.html#unlock_and_close">unlock_and_close</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_Opener.unlock_and_close-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_Opener.unlock_and_close-expanded"><a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"> <tt class="py-docstring">"""Unlock and close the file."""</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+</div></div><a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"> </tt>
+<a name="_PosixOpener"></a><div id="_PosixOpener-def"><a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt> <a class="py-toggle" href="#" id="_PosixOpener-toggle" onclick="return toggle('_PosixOpener');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.locked_file._PosixOpener-class.html">_PosixOpener</a><tt class="py-op">(</tt><tt class="py-base-class">_Opener</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_PosixOpener-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_PosixOpener-expanded"><a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"> <tt class="py-docstring">"""Lock files using Posix advisory lock files."""</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"> </tt>
+<a name="_PosixOpener.open_and_lock"></a><div id="_PosixOpener.open_and_lock-def"><a name="L103"></a><tt class="py-lineno">103</tt> <a class="py-toggle" href="#" id="_PosixOpener.open_and_lock-toggle" onclick="return toggle('_PosixOpener.open_and_lock');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.locked_file._PosixOpener-class.html#open_and_lock">open_and_lock</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">timeout</tt><tt class="py-op">,</tt> <tt class="py-param">delay</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_PosixOpener.open_and_lock-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_PosixOpener.open_and_lock-expanded"><a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"> <tt class="py-docstring">"""Open the file and lock it.</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"><tt class="py-docstring"> Tries to create a .lock file next to the file we're trying to open.</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"><tt class="py-docstring"> timeout: float, How long to try to lock for.</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"><tt class="py-docstring"> delay: float, How long to wait between retries.</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"><tt class="py-docstring"> Raises:</tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"><tt class="py-docstring"> AlreadyLockedException: if the lock is already acquired.</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"><tt class="py-docstring"> IOError: if the open fails.</tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"><tt class="py-docstring"> CredentialsFileSymbolicLinkError if the file is a symbolic link.</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_locked</tt><tt class="py-op">:</tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-7" class="py-name" targets="Class oauth2client.locked_file.AlreadyLockedException=oauth2client.locked_file.AlreadyLockedException-class.html"><a title="oauth2client.locked_file.AlreadyLockedException" class="py-name" href="#" onclick="return doclink('link-7', 'AlreadyLockedException', 'link-7');">AlreadyLockedException</a></tt><tt class="py-op">(</tt><tt class="py-string">'File %s is already locked'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt><tt class="py-op">)</tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_locked</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"> <tt id="link-8" class="py-name" targets="Function oauth2client.locked_file.validate_file()=oauth2client.locked_file-module.html#validate_file"><a title="oauth2client.locked_file.validate_file" class="py-name" href="#" onclick="return doclink('link-8', 'validate_file', 'link-8');">validate_file</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt><tt class="py-op">)</tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_mode</tt><tt class="py-op">)</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">IOError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"> <tt class="py-comment"># If we can't access with _mode, try _fallback_mode and don't lock.</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">errno</tt> <tt class="py-op">==</tt> <tt class="py-name">errno</tt><tt class="py-op">.</tt><tt class="py-name">EACCES</tt><tt class="py-op">:</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fallback_mode</tt><tt class="py-op">)</tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"> <tt class="py-name">lock_filename</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-9" class="py-name" targets="Method oauth2client.locked_file._PosixOpener._posix_lockfile()=oauth2client.locked_file._PosixOpener-class.html#_posix_lockfile"><a title="oauth2client.locked_file._PosixOpener._posix_lockfile" class="py-name" href="#" onclick="return doclink('link-9', '_posix_lockfile', 'link-9');">_posix_lockfile</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt><tt class="py-op">)</tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"> <tt class="py-name">start_time</tt> <tt class="py-op">=</tt> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">time</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_lock_fd</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">lock_filename</tt><tt class="py-op">,</tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">O_CREAT</tt><tt class="py-op">|</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">O_EXCL</tt><tt class="py-op">|</tt><tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">O_RDWR</tt><tt class="py-op">)</tt> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_locked</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">OSError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">errno</tt> <tt class="py-op">!=</tt> <tt class="py-name">errno</tt><tt class="py-op">.</tt><tt class="py-name">EEXIST</tt><tt class="py-op">:</tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> </tt>
+<a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">time</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">-</tt> <tt class="py-name">start_time</tt><tt class="py-op">)</tt> <tt class="py-op">>=</tt> <tt class="py-name">timeout</tt><tt class="py-op">:</tt> </tt>
+<a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"> <tt id="link-10" class="py-name"><a title="apiclient.discovery.logger
oauth2client.appengine.logger
oauth2client.client.logger
oauth2client.crypt.logger
@@ -203,78 +215,78 @@
oauth2client.locked_file.logger
oauth2client.multistore_file.logger
oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-10', 'logger', 'link-2');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">'Could not acquire lock %s in %s seconds'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt> </tt>
-<a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"> <tt class="py-name">lock_filename</tt><tt class="py-op">,</tt> <tt class="py-name">timeout</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"> <tt class="py-comment"># Close the file and open in fallback_mode.</tt> </tt>
-<a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt><tt class="py-op">:</tt> </tt>
-<a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fallback_mode</tt><tt class="py-op">)</tt> </tt>
-<a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
-<a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">sleep</tt><tt class="py-op">(</tt><tt class="py-name">delay</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"> </tt>
-<a name="_PosixOpener.unlock_and_close"></a><div id="_PosixOpener.unlock_and_close-def"><a name="L141"></a><tt class="py-lineno">141</tt> <a class="py-toggle" href="#" id="_PosixOpener.unlock_and_close-toggle" onclick="return toggle('_PosixOpener.unlock_and_close');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.locked_file._PosixOpener-class.html#unlock_and_close">unlock_and_close</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_PosixOpener.unlock_and_close-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_PosixOpener.unlock_and_close-expanded"><a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"> <tt class="py-docstring">"""Unlock a file by removing the .lock file, and close the handle."""</tt> </tt>
-<a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_locked</tt><tt class="py-op">:</tt> </tt>
-<a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"> <tt class="py-name">lock_filename</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-11" class="py-name"><a title="oauth2client.locked_file._PosixOpener._posix_lockfile" class="py-name" href="#" onclick="return doclink('link-11', '_posix_lockfile', 'link-9');">_posix_lockfile</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt><tt class="py-op">)</tt> </tt>
-<a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_lock_fd</tt><tt class="py-op">)</tt> </tt>
-<a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">unlink</tt><tt class="py-op">(</tt><tt class="py-name">lock_filename</tt><tt class="py-op">)</tt> </tt>
-<a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_locked</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
-<a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_lock_fd</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt><tt class="py-op">:</tt> </tt>
-<a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"> </tt>
-<a name="_PosixOpener._posix_lockfile"></a><div id="_PosixOpener._posix_lockfile-def"><a name="L152"></a><tt class="py-lineno">152</tt> <a class="py-toggle" href="#" id="_PosixOpener._posix_lockfile-toggle" onclick="return toggle('_PosixOpener._posix_lockfile');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.locked_file._PosixOpener-class.html#_posix_lockfile">_posix_lockfile</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">filename</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_PosixOpener._posix_lockfile-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_PosixOpener._posix_lockfile-expanded"><a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"> <tt class="py-docstring">"""The name of the lock file to use for posix locking."""</tt> </tt>
-<a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">'%s.lock'</tt> <tt class="py-op">%</tt> <tt id="link-12" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
+<a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"> <tt class="py-name">lock_filename</tt><tt class="py-op">,</tt> <tt class="py-name">timeout</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"> <tt class="py-comment"># Close the file and open in fallback_mode.</tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt><tt class="py-op">:</tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fallback_mode</tt><tt class="py-op">)</tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">sleep</tt><tt class="py-op">(</tt><tt class="py-name">delay</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L152"></a><tt class="py-lineno">152</tt> <tt class="py-line"> </tt>
+<a name="_PosixOpener.unlock_and_close"></a><div id="_PosixOpener.unlock_and_close-def"><a name="L153"></a><tt class="py-lineno">153</tt> <a class="py-toggle" href="#" id="_PosixOpener.unlock_and_close-toggle" onclick="return toggle('_PosixOpener.unlock_and_close');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.locked_file._PosixOpener-class.html#unlock_and_close">unlock_and_close</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_PosixOpener.unlock_and_close-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_PosixOpener.unlock_and_close-expanded"><a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"> <tt class="py-docstring">"""Unlock a file by removing the .lock file, and close the handle."""</tt> </tt>
+<a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_locked</tt><tt class="py-op">:</tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"> <tt class="py-name">lock_filename</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-11" class="py-name"><a title="oauth2client.locked_file._PosixOpener._posix_lockfile" class="py-name" href="#" onclick="return doclink('link-11', '_posix_lockfile', 'link-9');">_posix_lockfile</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt><tt class="py-op">)</tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_lock_fd</tt><tt class="py-op">)</tt> </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt> <tt class="py-line"> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">unlink</tt><tt class="py-op">(</tt><tt class="py-name">lock_filename</tt><tt class="py-op">)</tt> </tt>
+<a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_locked</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_lock_fd</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt><tt class="py-op">:</tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L163"></a><tt class="py-lineno">163</tt> <tt class="py-line"> </tt>
+<a name="_PosixOpener._posix_lockfile"></a><div id="_PosixOpener._posix_lockfile-def"><a name="L164"></a><tt class="py-lineno">164</tt> <a class="py-toggle" href="#" id="_PosixOpener._posix_lockfile-toggle" onclick="return toggle('_PosixOpener._posix_lockfile');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.locked_file._PosixOpener-class.html#_posix_lockfile">_posix_lockfile</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">filename</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_PosixOpener._posix_lockfile-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_PosixOpener._posix_lockfile-expanded"><a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"> <tt class="py-docstring">"""The name of the lock file to use for posix locking."""</tt> </tt>
+<a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">'%s.lock'</tt> <tt class="py-op">%</tt> <tt id="link-12" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-12', 'filename', 'link-3');">filename</a></tt> </tt>
-</div></div><a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"> </tt>
-<a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"> </tt>
-<a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L158"></a><tt class="py-lineno">158</tt> <tt class="py-line"> <tt class="py-keyword">import</tt> <tt class="py-name">fcntl</tt> </tt>
-<a name="_FcntlOpener"></a><div id="_FcntlOpener-def"><a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"> </tt>
-<a name="L160"></a><tt class="py-lineno">160</tt> <a class="py-toggle" href="#" id="_FcntlOpener-toggle" onclick="return toggle('_FcntlOpener');">-</a><tt class="py-line"> <tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.locked_file._FcntlOpener-class.html">_FcntlOpener</a><tt class="py-op">(</tt><tt class="py-base-class">_Opener</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_FcntlOpener-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_FcntlOpener-expanded"><a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"> <tt class="py-docstring">"""Open, lock, and unlock a file using fcntl.lockf."""</tt> </tt>
-<a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"> </tt>
-<a name="_FcntlOpener.open_and_lock"></a><div id="_FcntlOpener.open_and_lock-def"><a name="L163"></a><tt class="py-lineno">163</tt> <a class="py-toggle" href="#" id="_FcntlOpener.open_and_lock-toggle" onclick="return toggle('_FcntlOpener.open_and_lock');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.locked_file._FcntlOpener-class.html#open_and_lock">open_and_lock</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">timeout</tt><tt class="py-op">,</tt> <tt class="py-param">delay</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_FcntlOpener.open_and_lock-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="_FcntlOpener.open_and_lock-expanded"><a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"> <tt class="py-docstring">"""Open the file and lock it.</tt> </tt>
-<a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L167"></a><tt class="py-lineno">167</tt> <tt class="py-line"><tt class="py-docstring"> timeout: float, How long to try to lock for.</tt> </tt>
-<a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"><tt class="py-docstring"> delay: float, How long to wait between retries</tt> </tt>
-<a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"><tt class="py-docstring"> Raises:</tt> </tt>
-<a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"><tt class="py-docstring"> AlreadyLockedException: if the lock is already acquired.</tt> </tt>
-<a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"><tt class="py-docstring"> IOError: if the open fails.</tt> </tt>
-<a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"><tt class="py-docstring"> CredentialsFileSymbolicLinkError if the file is a symbolic link.</tt> </tt>
-<a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_locked</tt><tt class="py-op">:</tt> </tt>
-<a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-13" class="py-name"><a title="oauth2client.locked_file.AlreadyLockedException" class="py-name" href="#" onclick="return doclink('link-13', 'AlreadyLockedException', 'link-7');">AlreadyLockedException</a></tt><tt class="py-op">(</tt><tt class="py-string">'File %s is already locked'</tt> <tt class="py-op">%</tt> </tt>
-<a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt><tt class="py-op">)</tt> </tt>
-<a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"> <tt class="py-name">start_time</tt> <tt class="py-op">=</tt> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">time</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"> </tt>
-<a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"> <tt id="link-14" class="py-name"><a title="oauth2client.locked_file.validate_file" class="py-name" href="#" onclick="return doclink('link-14', 'validate_file', 'link-8');">validate_file</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt><tt class="py-op">)</tt> </tt>
-<a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_mode</tt><tt class="py-op">)</tt> </tt>
-<a name="L183"></a><tt class="py-lineno">183</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">IOError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
-<a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"> <tt class="py-comment"># If we can't access with _mode, try _fallback_mode and don't lock.</tt> </tt>
-<a name="L185"></a><tt class="py-lineno">185</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">errno</tt> <tt class="py-op">==</tt> <tt class="py-name">errno</tt><tt class="py-op">.</tt><tt class="py-name">EACCES</tt><tt class="py-op">:</tt> </tt>
-<a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fallback_mode</tt><tt class="py-op">)</tt> </tt>
-<a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
-<a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"> </tt>
-<a name="L189"></a><tt class="py-lineno">189</tt> <tt class="py-line"> <tt class="py-comment"># We opened in _mode, try to lock the file.</tt> </tt>
-<a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt>
-<a name="L191"></a><tt class="py-lineno">191</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"> <tt class="py-name">fcntl</tt><tt class="py-op">.</tt><tt class="py-name">lockf</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt><tt class="py-op">.</tt><tt class="py-name">fileno</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">fcntl</tt><tt class="py-op">.</tt><tt class="py-name">LOCK_EX</tt><tt class="py-op">)</tt> </tt>
-<a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_locked</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
-<a name="L194"></a><tt class="py-lineno">194</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
-<a name="L195"></a><tt class="py-lineno">195</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">IOError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
-<a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"> <tt class="py-comment"># If not retrying, then just pass on the error.</tt> </tt>
-<a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">timeout</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
-<a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">e</tt> </tt>
-<a name="L199"></a><tt class="py-lineno">199</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">errno</tt> <tt class="py-op">!=</tt> <tt class="py-name">errno</tt><tt class="py-op">.</tt><tt class="py-name">EACCES</tt><tt class="py-op">:</tt> </tt>
-<a name="L200"></a><tt class="py-lineno">200</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">e</tt> </tt>
-<a name="L201"></a><tt class="py-lineno">201</tt> <tt class="py-line"> <tt class="py-comment"># We could not acquire the lock. Try again.</tt> </tt>
-<a name="L202"></a><tt class="py-lineno">202</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">time</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">-</tt> <tt class="py-name">start_time</tt><tt class="py-op">)</tt> <tt class="py-op">>=</tt> <tt class="py-name">timeout</tt><tt class="py-op">:</tt> </tt>
-<a name="L203"></a><tt class="py-lineno">203</tt> <tt class="py-line"> <tt id="link-15" class="py-name"><a title="apiclient.discovery.logger
+</div></div><a name="L167"></a><tt class="py-lineno">167</tt> <tt class="py-line"> </tt>
+<a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"> <tt class="py-keyword">import</tt> <tt class="py-name">fcntl</tt> </tt>
+<a name="_FcntlOpener"></a><div id="_FcntlOpener-def"><a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"> </tt>
+<a name="L172"></a><tt class="py-lineno">172</tt> <a class="py-toggle" href="#" id="_FcntlOpener-toggle" onclick="return toggle('_FcntlOpener');">-</a><tt class="py-line"> <tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.locked_file._FcntlOpener-class.html">_FcntlOpener</a><tt class="py-op">(</tt><tt class="py-base-class">_Opener</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_FcntlOpener-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_FcntlOpener-expanded"><a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"> <tt class="py-docstring">"""Open, lock, and unlock a file using fcntl.lockf."""</tt> </tt>
+<a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"> </tt>
+<a name="_FcntlOpener.open_and_lock"></a><div id="_FcntlOpener.open_and_lock-def"><a name="L175"></a><tt class="py-lineno">175</tt> <a class="py-toggle" href="#" id="_FcntlOpener.open_and_lock-toggle" onclick="return toggle('_FcntlOpener.open_and_lock');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.locked_file._FcntlOpener-class.html#open_and_lock">open_and_lock</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">timeout</tt><tt class="py-op">,</tt> <tt class="py-param">delay</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_FcntlOpener.open_and_lock-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="_FcntlOpener.open_and_lock-expanded"><a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"> <tt class="py-docstring">"""Open the file and lock it.</tt> </tt>
+<a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"><tt class="py-docstring"> timeout: float, How long to try to lock for.</tt> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"><tt class="py-docstring"> delay: float, How long to wait between retries</tt> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"><tt class="py-docstring"> Raises:</tt> </tt>
+<a name="L183"></a><tt class="py-lineno">183</tt> <tt class="py-line"><tt class="py-docstring"> AlreadyLockedException: if the lock is already acquired.</tt> </tt>
+<a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"><tt class="py-docstring"> IOError: if the open fails.</tt> </tt>
+<a name="L185"></a><tt class="py-lineno">185</tt> <tt class="py-line"><tt class="py-docstring"> CredentialsFileSymbolicLinkError if the file is a symbolic link.</tt> </tt>
+<a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_locked</tt><tt class="py-op">:</tt> </tt>
+<a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-13" class="py-name"><a title="oauth2client.locked_file.AlreadyLockedException" class="py-name" href="#" onclick="return doclink('link-13', 'AlreadyLockedException', 'link-7');">AlreadyLockedException</a></tt><tt class="py-op">(</tt><tt class="py-string">'File %s is already locked'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L189"></a><tt class="py-lineno">189</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt><tt class="py-op">)</tt> </tt>
+<a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"> <tt class="py-name">start_time</tt> <tt class="py-op">=</tt> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">time</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L191"></a><tt class="py-lineno">191</tt> <tt class="py-line"> </tt>
+<a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"> <tt id="link-14" class="py-name"><a title="oauth2client.locked_file.validate_file" class="py-name" href="#" onclick="return doclink('link-14', 'validate_file', 'link-8');">validate_file</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt><tt class="py-op">)</tt> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L194"></a><tt class="py-lineno">194</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_mode</tt><tt class="py-op">)</tt> </tt>
+<a name="L195"></a><tt class="py-lineno">195</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">IOError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"> <tt class="py-comment"># If we can't access with _mode, try _fallback_mode and don't lock.</tt> </tt>
+<a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">errno</tt> <tt class="py-op">==</tt> <tt class="py-name">errno</tt><tt class="py-op">.</tt><tt class="py-name">EACCES</tt><tt class="py-op">:</tt> </tt>
+<a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fallback_mode</tt><tt class="py-op">)</tt> </tt>
+<a name="L199"></a><tt class="py-lineno">199</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L200"></a><tt class="py-lineno">200</tt> <tt class="py-line"> </tt>
+<a name="L201"></a><tt class="py-lineno">201</tt> <tt class="py-line"> <tt class="py-comment"># We opened in _mode, try to lock the file.</tt> </tt>
+<a name="L202"></a><tt class="py-lineno">202</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt>
+<a name="L203"></a><tt class="py-lineno">203</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L204"></a><tt class="py-lineno">204</tt> <tt class="py-line"> <tt class="py-name">fcntl</tt><tt class="py-op">.</tt><tt class="py-name">lockf</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt><tt class="py-op">.</tt><tt class="py-name">fileno</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">fcntl</tt><tt class="py-op">.</tt><tt class="py-name">LOCK_EX</tt><tt class="py-op">)</tt> </tt>
+<a name="L205"></a><tt class="py-lineno">205</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_locked</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L206"></a><tt class="py-lineno">206</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L207"></a><tt class="py-lineno">207</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">IOError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L208"></a><tt class="py-lineno">208</tt> <tt class="py-line"> <tt class="py-comment"># If not retrying, then just pass on the error.</tt> </tt>
+<a name="L209"></a><tt class="py-lineno">209</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">timeout</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L210"></a><tt class="py-lineno">210</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">e</tt> </tt>
+<a name="L211"></a><tt class="py-lineno">211</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">errno</tt> <tt class="py-op">!=</tt> <tt class="py-name">errno</tt><tt class="py-op">.</tt><tt class="py-name">EACCES</tt><tt class="py-op">:</tt> </tt>
+<a name="L212"></a><tt class="py-lineno">212</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">e</tt> </tt>
+<a name="L213"></a><tt class="py-lineno">213</tt> <tt class="py-line"> <tt class="py-comment"># We could not acquire the lock. Try again.</tt> </tt>
+<a name="L214"></a><tt class="py-lineno">214</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">time</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">-</tt> <tt class="py-name">start_time</tt><tt class="py-op">)</tt> <tt class="py-op">>=</tt> <tt class="py-name">timeout</tt><tt class="py-op">:</tt> </tt>
+<a name="L215"></a><tt class="py-lineno">215</tt> <tt class="py-line"> <tt id="link-15" class="py-name"><a title="apiclient.discovery.logger
oauth2client.appengine.logger
oauth2client.client.logger
oauth2client.crypt.logger
@@ -282,88 +294,88 @@
oauth2client.locked_file.logger
oauth2client.multistore_file.logger
oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-15', 'logger', 'link-2');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">'Could not lock %s in %s seconds'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt> </tt>
-<a name="L204"></a><tt class="py-lineno">204</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt><tt class="py-op">,</tt> <tt class="py-name">timeout</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L205"></a><tt class="py-lineno">205</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt><tt class="py-op">:</tt> </tt>
-<a name="L206"></a><tt class="py-lineno">206</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L207"></a><tt class="py-lineno">207</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fallback_mode</tt><tt class="py-op">)</tt> </tt>
-<a name="L208"></a><tt class="py-lineno">208</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
-<a name="L209"></a><tt class="py-lineno">209</tt> <tt class="py-line"> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">sleep</tt><tt class="py-op">(</tt><tt class="py-name">delay</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L210"></a><tt class="py-lineno">210</tt> <tt class="py-line"> </tt>
-<a name="_FcntlOpener.unlock_and_close"></a><div id="_FcntlOpener.unlock_and_close-def"><a name="L211"></a><tt class="py-lineno">211</tt> <a class="py-toggle" href="#" id="_FcntlOpener.unlock_and_close-toggle" onclick="return toggle('_FcntlOpener.unlock_and_close');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.locked_file._FcntlOpener-class.html#unlock_and_close">unlock_and_close</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_FcntlOpener.unlock_and_close-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="_FcntlOpener.unlock_and_close-expanded"><a name="L212"></a><tt class="py-lineno">212</tt> <tt class="py-line"> <tt class="py-docstring">"""Close and unlock the file using the fcntl.lockf primitive."""</tt> </tt>
-<a name="L213"></a><tt class="py-lineno">213</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_locked</tt><tt class="py-op">:</tt> </tt>
-<a name="L214"></a><tt class="py-lineno">214</tt> <tt class="py-line"> <tt class="py-name">fcntl</tt><tt class="py-op">.</tt><tt class="py-name">lockf</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt><tt class="py-op">.</tt><tt class="py-name">fileno</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">fcntl</tt><tt class="py-op">.</tt><tt class="py-name">LOCK_UN</tt><tt class="py-op">)</tt> </tt>
-<a name="L215"></a><tt class="py-lineno">215</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_locked</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
-<a name="L216"></a><tt class="py-lineno">216</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt><tt class="py-op">:</tt> </tt>
-<a name="L217"></a><tt class="py-lineno">217</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L218"></a><tt class="py-lineno">218</tt> <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>
-<a name="L219"></a><tt class="py-lineno">219</tt> <tt class="py-line"> <tt id="link-16" class="py-name" targets="Variable oauth2client.locked_file._FcntlOpener=oauth2client.locked_file-module.html#_FcntlOpener"><a title="oauth2client.locked_file._FcntlOpener" class="py-name" href="#" onclick="return doclink('link-16', '_FcntlOpener', 'link-16');">_FcntlOpener</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L220"></a><tt class="py-lineno">220</tt> <tt class="py-line"> </tt>
-<a name="L221"></a><tt class="py-lineno">221</tt> <tt class="py-line"> </tt>
-<a name="L222"></a><tt class="py-lineno">222</tt> <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"> <tt class="py-keyword">import</tt> <tt class="py-name">pywintypes</tt> </tt>
-<a name="L224"></a><tt class="py-lineno">224</tt> <tt class="py-line"> <tt class="py-keyword">import</tt> <tt class="py-name">win32con</tt> </tt>
-<a name="L225"></a><tt class="py-lineno">225</tt> <tt class="py-line"> <tt class="py-keyword">import</tt> <tt class="py-name">win32file</tt> </tt>
-<a name="_Win32Opener"></a><div id="_Win32Opener-def"><a name="L226"></a><tt class="py-lineno">226</tt> <tt class="py-line"> </tt>
-<a name="L227"></a><tt class="py-lineno">227</tt> <a class="py-toggle" href="#" id="_Win32Opener-toggle" onclick="return toggle('_Win32Opener');">-</a><tt class="py-line"> <tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.locked_file._Win32Opener-class.html">_Win32Opener</a><tt class="py-op">(</tt><tt class="py-base-class">_Opener</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_Win32Opener-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_Win32Opener-expanded"><a name="L228"></a><tt class="py-lineno">228</tt> <tt class="py-line"> <tt class="py-docstring">"""Open, lock, and unlock a file using windows primitives."""</tt> </tt>
-<a name="L229"></a><tt class="py-lineno">229</tt> <tt class="py-line"> </tt>
-<a name="L230"></a><tt class="py-lineno">230</tt> <tt class="py-line"> <tt class="py-comment"># Error #33:</tt> </tt>
-<a name="L231"></a><tt class="py-lineno">231</tt> <tt class="py-line"> <tt class="py-comment"># 'The process cannot access the file because another process'</tt> </tt>
-<a name="L232"></a><tt class="py-lineno">232</tt> <tt class="py-line"> <tt class="py-name">FILE_IN_USE_ERROR</tt> <tt class="py-op">=</tt> <tt class="py-number">33</tt> </tt>
+<a name="L216"></a><tt class="py-lineno">216</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt><tt class="py-op">,</tt> <tt class="py-name">timeout</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L217"></a><tt class="py-lineno">217</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt><tt class="py-op">:</tt> </tt>
+<a name="L218"></a><tt class="py-lineno">218</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L219"></a><tt class="py-lineno">219</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fallback_mode</tt><tt class="py-op">)</tt> </tt>
+<a name="L220"></a><tt class="py-lineno">220</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L221"></a><tt class="py-lineno">221</tt> <tt class="py-line"> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">sleep</tt><tt class="py-op">(</tt><tt class="py-name">delay</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L222"></a><tt class="py-lineno">222</tt> <tt class="py-line"> </tt>
+<a name="_FcntlOpener.unlock_and_close"></a><div id="_FcntlOpener.unlock_and_close-def"><a name="L223"></a><tt class="py-lineno">223</tt> <a class="py-toggle" href="#" id="_FcntlOpener.unlock_and_close-toggle" onclick="return toggle('_FcntlOpener.unlock_and_close');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.locked_file._FcntlOpener-class.html#unlock_and_close">unlock_and_close</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_FcntlOpener.unlock_and_close-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="_FcntlOpener.unlock_and_close-expanded"><a name="L224"></a><tt class="py-lineno">224</tt> <tt class="py-line"> <tt class="py-docstring">"""Close and unlock the file using the fcntl.lockf primitive."""</tt> </tt>
+<a name="L225"></a><tt class="py-lineno">225</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_locked</tt><tt class="py-op">:</tt> </tt>
+<a name="L226"></a><tt class="py-lineno">226</tt> <tt class="py-line"> <tt class="py-name">fcntl</tt><tt class="py-op">.</tt><tt class="py-name">lockf</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt><tt class="py-op">.</tt><tt class="py-name">fileno</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">fcntl</tt><tt class="py-op">.</tt><tt class="py-name">LOCK_UN</tt><tt class="py-op">)</tt> </tt>
+<a name="L227"></a><tt class="py-lineno">227</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_locked</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L228"></a><tt class="py-lineno">228</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt><tt class="py-op">:</tt> </tt>
+<a name="L229"></a><tt class="py-lineno">229</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L230"></a><tt class="py-lineno">230</tt> <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>
+<a name="L231"></a><tt class="py-lineno">231</tt> <tt class="py-line"> <tt id="link-16" class="py-name" targets="Variable oauth2client.locked_file._FcntlOpener=oauth2client.locked_file-module.html#_FcntlOpener"><a title="oauth2client.locked_file._FcntlOpener" class="py-name" href="#" onclick="return doclink('link-16', '_FcntlOpener', 'link-16');">_FcntlOpener</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L232"></a><tt class="py-lineno">232</tt> <tt class="py-line"> </tt>
<a name="L233"></a><tt class="py-lineno">233</tt> <tt class="py-line"> </tt>
-<a name="L234"></a><tt class="py-lineno">234</tt> <tt class="py-line"> <tt class="py-comment"># Error #158:</tt> </tt>
-<a name="L235"></a><tt class="py-lineno">235</tt> <tt class="py-line"> <tt class="py-comment"># 'The segment is already unlocked.'</tt> </tt>
-<a name="L236"></a><tt class="py-lineno">236</tt> <tt class="py-line"> <tt class="py-name">FILE_ALREADY_UNLOCKED_ERROR</tt> <tt class="py-op">=</tt> <tt class="py-number">158</tt> </tt>
-<a name="L237"></a><tt class="py-lineno">237</tt> <tt class="py-line"> </tt>
-<a name="_Win32Opener.open_and_lock"></a><div id="_Win32Opener.open_and_lock-def"><a name="L238"></a><tt class="py-lineno">238</tt> <a class="py-toggle" href="#" id="_Win32Opener.open_and_lock-toggle" onclick="return toggle('_Win32Opener.open_and_lock');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.locked_file._Win32Opener-class.html#open_and_lock">open_and_lock</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">timeout</tt><tt class="py-op">,</tt> <tt class="py-param">delay</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_Win32Opener.open_and_lock-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="_Win32Opener.open_and_lock-expanded"><a name="L239"></a><tt class="py-lineno">239</tt> <tt class="py-line"> <tt class="py-docstring">"""Open the file and lock it.</tt> </tt>
-<a name="L240"></a><tt class="py-lineno">240</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L241"></a><tt class="py-lineno">241</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L242"></a><tt class="py-lineno">242</tt> <tt class="py-line"><tt class="py-docstring"> timeout: float, How long to try to lock for.</tt> </tt>
-<a name="L243"></a><tt class="py-lineno">243</tt> <tt class="py-line"><tt class="py-docstring"> delay: float, How long to wait between retries</tt> </tt>
-<a name="L244"></a><tt class="py-lineno">244</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L245"></a><tt class="py-lineno">245</tt> <tt class="py-line"><tt class="py-docstring"> Raises:</tt> </tt>
-<a name="L246"></a><tt class="py-lineno">246</tt> <tt class="py-line"><tt class="py-docstring"> AlreadyLockedException: if the lock is already acquired.</tt> </tt>
-<a name="L247"></a><tt class="py-lineno">247</tt> <tt class="py-line"><tt class="py-docstring"> IOError: if the open fails.</tt> </tt>
-<a name="L248"></a><tt class="py-lineno">248</tt> <tt class="py-line"><tt class="py-docstring"> CredentialsFileSymbolicLinkError if the file is a symbolic link.</tt> </tt>
-<a name="L249"></a><tt class="py-lineno">249</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L250"></a><tt class="py-lineno">250</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_locked</tt><tt class="py-op">:</tt> </tt>
-<a name="L251"></a><tt class="py-lineno">251</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-17" class="py-name"><a title="oauth2client.locked_file.AlreadyLockedException" class="py-name" href="#" onclick="return doclink('link-17', 'AlreadyLockedException', 'link-7');">AlreadyLockedException</a></tt><tt class="py-op">(</tt><tt class="py-string">'File %s is already locked'</tt> <tt class="py-op">%</tt> </tt>
-<a name="L252"></a><tt class="py-lineno">252</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt><tt class="py-op">)</tt> </tt>
-<a name="L253"></a><tt class="py-lineno">253</tt> <tt class="py-line"> <tt class="py-name">start_time</tt> <tt class="py-op">=</tt> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">time</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L254"></a><tt class="py-lineno">254</tt> <tt class="py-line"> </tt>
-<a name="L255"></a><tt class="py-lineno">255</tt> <tt class="py-line"> <tt id="link-18" class="py-name"><a title="oauth2client.locked_file.validate_file" class="py-name" href="#" onclick="return doclink('link-18', 'validate_file', 'link-8');">validate_file</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt><tt class="py-op">)</tt> </tt>
-<a name="L256"></a><tt class="py-lineno">256</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L257"></a><tt class="py-lineno">257</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_mode</tt><tt class="py-op">)</tt> </tt>
-<a name="L258"></a><tt class="py-lineno">258</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">IOError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
-<a name="L259"></a><tt class="py-lineno">259</tt> <tt class="py-line"> <tt class="py-comment"># If we can't access with _mode, try _fallback_mode and don't lock.</tt> </tt>
-<a name="L260"></a><tt class="py-lineno">260</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">errno</tt> <tt class="py-op">==</tt> <tt class="py-name">errno</tt><tt class="py-op">.</tt><tt class="py-name">EACCES</tt><tt class="py-op">:</tt> </tt>
-<a name="L261"></a><tt class="py-lineno">261</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fallback_mode</tt><tt class="py-op">)</tt> </tt>
-<a name="L262"></a><tt class="py-lineno">262</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
-<a name="L263"></a><tt class="py-lineno">263</tt> <tt class="py-line"> </tt>
-<a name="L264"></a><tt class="py-lineno">264</tt> <tt class="py-line"> <tt class="py-comment"># We opened in _mode, try to lock the file.</tt> </tt>
-<a name="L265"></a><tt class="py-lineno">265</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt>
-<a name="L266"></a><tt class="py-lineno">266</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L267"></a><tt class="py-lineno">267</tt> <tt class="py-line"> <tt class="py-name">hfile</tt> <tt class="py-op">=</tt> <tt class="py-name">win32file</tt><tt class="py-op">.</tt><tt class="py-name">_get_osfhandle</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt><tt class="py-op">.</tt><tt class="py-name">fileno</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L268"></a><tt class="py-lineno">268</tt> <tt class="py-line"> <tt class="py-name">win32file</tt><tt class="py-op">.</tt><tt class="py-name">LockFileEx</tt><tt class="py-op">(</tt> </tt>
-<a name="L269"></a><tt class="py-lineno">269</tt> <tt class="py-line"> <tt class="py-name">hfile</tt><tt class="py-op">,</tt> </tt>
-<a name="L270"></a><tt class="py-lineno">270</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">win32con</tt><tt class="py-op">.</tt><tt class="py-name">LOCKFILE_FAIL_IMMEDIATELY</tt><tt class="py-op">|</tt> </tt>
-<a name="L271"></a><tt class="py-lineno">271</tt> <tt class="py-line"> <tt class="py-name">win32con</tt><tt class="py-op">.</tt><tt class="py-name">LOCKFILE_EXCLUSIVE_LOCK</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-op">-</tt><tt class="py-number">0x10000</tt><tt class="py-op">,</tt> </tt>
-<a name="L272"></a><tt class="py-lineno">272</tt> <tt class="py-line"> <tt class="py-name">pywintypes</tt><tt class="py-op">.</tt><tt class="py-name">OVERLAPPED</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L273"></a><tt class="py-lineno">273</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_locked</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L234"></a><tt class="py-lineno">234</tt> <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L235"></a><tt class="py-lineno">235</tt> <tt class="py-line"> <tt class="py-keyword">import</tt> <tt class="py-name">pywintypes</tt> </tt>
+<a name="L236"></a><tt class="py-lineno">236</tt> <tt class="py-line"> <tt class="py-keyword">import</tt> <tt class="py-name">win32con</tt> </tt>
+<a name="L237"></a><tt class="py-lineno">237</tt> <tt class="py-line"> <tt class="py-keyword">import</tt> <tt class="py-name">win32file</tt> </tt>
+<a name="_Win32Opener"></a><div id="_Win32Opener-def"><a name="L238"></a><tt class="py-lineno">238</tt> <tt class="py-line"> </tt>
+<a name="L239"></a><tt class="py-lineno">239</tt> <a class="py-toggle" href="#" id="_Win32Opener-toggle" onclick="return toggle('_Win32Opener');">-</a><tt class="py-line"> <tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.locked_file._Win32Opener-class.html">_Win32Opener</a><tt class="py-op">(</tt><tt class="py-base-class">_Opener</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_Win32Opener-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_Win32Opener-expanded"><a name="L240"></a><tt class="py-lineno">240</tt> <tt class="py-line"> <tt class="py-docstring">"""Open, lock, and unlock a file using windows primitives."""</tt> </tt>
+<a name="L241"></a><tt class="py-lineno">241</tt> <tt class="py-line"> </tt>
+<a name="L242"></a><tt class="py-lineno">242</tt> <tt class="py-line"> <tt class="py-comment"># Error #33:</tt> </tt>
+<a name="L243"></a><tt class="py-lineno">243</tt> <tt class="py-line"> <tt class="py-comment"># 'The process cannot access the file because another process'</tt> </tt>
+<a name="L244"></a><tt class="py-lineno">244</tt> <tt class="py-line"> <tt class="py-name">FILE_IN_USE_ERROR</tt> <tt class="py-op">=</tt> <tt class="py-number">33</tt> </tt>
+<a name="L245"></a><tt class="py-lineno">245</tt> <tt class="py-line"> </tt>
+<a name="L246"></a><tt class="py-lineno">246</tt> <tt class="py-line"> <tt class="py-comment"># Error #158:</tt> </tt>
+<a name="L247"></a><tt class="py-lineno">247</tt> <tt class="py-line"> <tt class="py-comment"># 'The segment is already unlocked.'</tt> </tt>
+<a name="L248"></a><tt class="py-lineno">248</tt> <tt class="py-line"> <tt class="py-name">FILE_ALREADY_UNLOCKED_ERROR</tt> <tt class="py-op">=</tt> <tt class="py-number">158</tt> </tt>
+<a name="L249"></a><tt class="py-lineno">249</tt> <tt class="py-line"> </tt>
+<a name="_Win32Opener.open_and_lock"></a><div id="_Win32Opener.open_and_lock-def"><a name="L250"></a><tt class="py-lineno">250</tt> <a class="py-toggle" href="#" id="_Win32Opener.open_and_lock-toggle" onclick="return toggle('_Win32Opener.open_and_lock');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.locked_file._Win32Opener-class.html#open_and_lock">open_and_lock</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">timeout</tt><tt class="py-op">,</tt> <tt class="py-param">delay</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_Win32Opener.open_and_lock-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="_Win32Opener.open_and_lock-expanded"><a name="L251"></a><tt class="py-lineno">251</tt> <tt class="py-line"> <tt class="py-docstring">"""Open the file and lock it.</tt> </tt>
+<a name="L252"></a><tt class="py-lineno">252</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L253"></a><tt class="py-lineno">253</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L254"></a><tt class="py-lineno">254</tt> <tt class="py-line"><tt class="py-docstring"> timeout: float, How long to try to lock for.</tt> </tt>
+<a name="L255"></a><tt class="py-lineno">255</tt> <tt class="py-line"><tt class="py-docstring"> delay: float, How long to wait between retries</tt> </tt>
+<a name="L256"></a><tt class="py-lineno">256</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L257"></a><tt class="py-lineno">257</tt> <tt class="py-line"><tt class="py-docstring"> Raises:</tt> </tt>
+<a name="L258"></a><tt class="py-lineno">258</tt> <tt class="py-line"><tt class="py-docstring"> AlreadyLockedException: if the lock is already acquired.</tt> </tt>
+<a name="L259"></a><tt class="py-lineno">259</tt> <tt class="py-line"><tt class="py-docstring"> IOError: if the open fails.</tt> </tt>
+<a name="L260"></a><tt class="py-lineno">260</tt> <tt class="py-line"><tt class="py-docstring"> CredentialsFileSymbolicLinkError if the file is a symbolic link.</tt> </tt>
+<a name="L261"></a><tt class="py-lineno">261</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L262"></a><tt class="py-lineno">262</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_locked</tt><tt class="py-op">:</tt> </tt>
+<a name="L263"></a><tt class="py-lineno">263</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-17" class="py-name"><a title="oauth2client.locked_file.AlreadyLockedException" class="py-name" href="#" onclick="return doclink('link-17', 'AlreadyLockedException', 'link-7');">AlreadyLockedException</a></tt><tt class="py-op">(</tt><tt class="py-string">'File %s is already locked'</tt> <tt class="py-op">%</tt> </tt>
+<a name="L264"></a><tt class="py-lineno">264</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt><tt class="py-op">)</tt> </tt>
+<a name="L265"></a><tt class="py-lineno">265</tt> <tt class="py-line"> <tt class="py-name">start_time</tt> <tt class="py-op">=</tt> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">time</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L266"></a><tt class="py-lineno">266</tt> <tt class="py-line"> </tt>
+<a name="L267"></a><tt class="py-lineno">267</tt> <tt class="py-line"> <tt id="link-18" class="py-name"><a title="oauth2client.locked_file.validate_file" class="py-name" href="#" onclick="return doclink('link-18', 'validate_file', 'link-8');">validate_file</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt><tt class="py-op">)</tt> </tt>
+<a name="L268"></a><tt class="py-lineno">268</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L269"></a><tt class="py-lineno">269</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_mode</tt><tt class="py-op">)</tt> </tt>
+<a name="L270"></a><tt class="py-lineno">270</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">IOError</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L271"></a><tt class="py-lineno">271</tt> <tt class="py-line"> <tt class="py-comment"># If we can't access with _mode, try _fallback_mode and don't lock.</tt> </tt>
+<a name="L272"></a><tt class="py-lineno">272</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">errno</tt> <tt class="py-op">==</tt> <tt class="py-name">errno</tt><tt class="py-op">.</tt><tt class="py-name">EACCES</tt><tt class="py-op">:</tt> </tt>
+<a name="L273"></a><tt class="py-lineno">273</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fallback_mode</tt><tt class="py-op">)</tt> </tt>
<a name="L274"></a><tt class="py-lineno">274</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
-<a name="L275"></a><tt class="py-lineno">275</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">pywintypes</tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
-<a name="L276"></a><tt class="py-lineno">276</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">timeout</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
-<a name="L277"></a><tt class="py-lineno">277</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">e</tt> </tt>
-<a name="L278"></a><tt class="py-lineno">278</tt> <tt class="py-line"> </tt>
-<a name="L279"></a><tt class="py-lineno">279</tt> <tt class="py-line"> <tt class="py-comment"># If the error is not that the file is already in use, raise.</tt> </tt>
-<a name="L280"></a><tt class="py-lineno">280</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">e</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt id="link-19" class="py-name" targets="Variable oauth2client.locked_file._Win32Opener=oauth2client.locked_file-module.html#_Win32Opener"><a title="oauth2client.locked_file._Win32Opener" class="py-name" href="#" onclick="return doclink('link-19', '_Win32Opener', 'link-19');">_Win32Opener</a></tt><tt class="py-op">.</tt><tt class="py-name">FILE_IN_USE_ERROR</tt><tt class="py-op">:</tt> </tt>
-<a name="L281"></a><tt class="py-lineno">281</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> </tt>
-<a name="L282"></a><tt class="py-lineno">282</tt> <tt class="py-line"> </tt>
-<a name="L283"></a><tt class="py-lineno">283</tt> <tt class="py-line"> <tt class="py-comment"># We could not acquire the lock. Try again.</tt> </tt>
-<a name="L284"></a><tt class="py-lineno">284</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">time</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">-</tt> <tt class="py-name">start_time</tt><tt class="py-op">)</tt> <tt class="py-op">>=</tt> <tt class="py-name">timeout</tt><tt class="py-op">:</tt> </tt>
-<a name="L285"></a><tt class="py-lineno">285</tt> <tt class="py-line"> <tt id="link-20" class="py-name"><a title="apiclient.discovery.logger
+<a name="L275"></a><tt class="py-lineno">275</tt> <tt class="py-line"> </tt>
+<a name="L276"></a><tt class="py-lineno">276</tt> <tt class="py-line"> <tt class="py-comment"># We opened in _mode, try to lock the file.</tt> </tt>
+<a name="L277"></a><tt class="py-lineno">277</tt> <tt class="py-line"> <tt class="py-keyword">while</tt> <tt class="py-name">True</tt><tt class="py-op">:</tt> </tt>
+<a name="L278"></a><tt class="py-lineno">278</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L279"></a><tt class="py-lineno">279</tt> <tt class="py-line"> <tt class="py-name">hfile</tt> <tt class="py-op">=</tt> <tt class="py-name">win32file</tt><tt class="py-op">.</tt><tt class="py-name">_get_osfhandle</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt><tt class="py-op">.</tt><tt class="py-name">fileno</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L280"></a><tt class="py-lineno">280</tt> <tt class="py-line"> <tt class="py-name">win32file</tt><tt class="py-op">.</tt><tt class="py-name">LockFileEx</tt><tt class="py-op">(</tt> </tt>
+<a name="L281"></a><tt class="py-lineno">281</tt> <tt class="py-line"> <tt class="py-name">hfile</tt><tt class="py-op">,</tt> </tt>
+<a name="L282"></a><tt class="py-lineno">282</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">win32con</tt><tt class="py-op">.</tt><tt class="py-name">LOCKFILE_FAIL_IMMEDIATELY</tt><tt class="py-op">|</tt> </tt>
+<a name="L283"></a><tt class="py-lineno">283</tt> <tt class="py-line"> <tt class="py-name">win32con</tt><tt class="py-op">.</tt><tt class="py-name">LOCKFILE_EXCLUSIVE_LOCK</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-op">-</tt><tt class="py-number">0x10000</tt><tt class="py-op">,</tt> </tt>
+<a name="L284"></a><tt class="py-lineno">284</tt> <tt class="py-line"> <tt class="py-name">pywintypes</tt><tt class="py-op">.</tt><tt class="py-name">OVERLAPPED</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L285"></a><tt class="py-lineno">285</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_locked</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L286"></a><tt class="py-lineno">286</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L287"></a><tt class="py-lineno">287</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">pywintypes</tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L288"></a><tt class="py-lineno">288</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">timeout</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L289"></a><tt class="py-lineno">289</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">e</tt> </tt>
+<a name="L290"></a><tt class="py-lineno">290</tt> <tt class="py-line"> </tt>
+<a name="L291"></a><tt class="py-lineno">291</tt> <tt class="py-line"> <tt class="py-comment"># If the error is not that the file is already in use, raise.</tt> </tt>
+<a name="L292"></a><tt class="py-lineno">292</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">e</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt id="link-19" class="py-name" targets="Variable oauth2client.locked_file._Win32Opener=oauth2client.locked_file-module.html#_Win32Opener"><a title="oauth2client.locked_file._Win32Opener" class="py-name" href="#" onclick="return doclink('link-19', '_Win32Opener', 'link-19');">_Win32Opener</a></tt><tt class="py-op">.</tt><tt class="py-name">FILE_IN_USE_ERROR</tt><tt class="py-op">:</tt> </tt>
+<a name="L293"></a><tt class="py-lineno">293</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> </tt>
+<a name="L294"></a><tt class="py-lineno">294</tt> <tt class="py-line"> </tt>
+<a name="L295"></a><tt class="py-lineno">295</tt> <tt class="py-line"> <tt class="py-comment"># We could not acquire the lock. Try again.</tt> </tt>
+<a name="L296"></a><tt class="py-lineno">296</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-op">(</tt><tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">time</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">-</tt> <tt class="py-name">start_time</tt><tt class="py-op">)</tt> <tt class="py-op">>=</tt> <tt class="py-name">timeout</tt><tt class="py-op">:</tt> </tt>
+<a name="L297"></a><tt class="py-lineno">297</tt> <tt class="py-line"> <tt id="link-20" class="py-name"><a title="apiclient.discovery.logger
oauth2client.appengine.logger
oauth2client.client.logger
oauth2client.crypt.logger
@@ -371,92 +383,92 @@
oauth2client.locked_file.logger
oauth2client.multistore_file.logger
oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-20', 'logger', 'link-2');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">'Could not lock %s in %s seconds'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt> </tt>
-<a name="L286"></a><tt class="py-lineno">286</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt><tt class="py-op">,</tt> <tt class="py-name">timeout</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L287"></a><tt class="py-lineno">287</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt><tt class="py-op">:</tt> </tt>
-<a name="L288"></a><tt class="py-lineno">288</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L289"></a><tt class="py-lineno">289</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fallback_mode</tt><tt class="py-op">)</tt> </tt>
-<a name="L290"></a><tt class="py-lineno">290</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
-<a name="L291"></a><tt class="py-lineno">291</tt> <tt class="py-line"> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">sleep</tt><tt class="py-op">(</tt><tt class="py-name">delay</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L292"></a><tt class="py-lineno">292</tt> <tt class="py-line"> </tt>
-<a name="_Win32Opener.unlock_and_close"></a><div id="_Win32Opener.unlock_and_close-def"><a name="L293"></a><tt class="py-lineno">293</tt> <a class="py-toggle" href="#" id="_Win32Opener.unlock_and_close-toggle" onclick="return toggle('_Win32Opener.unlock_and_close');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.locked_file._Win32Opener-class.html#unlock_and_close">unlock_and_close</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_Win32Opener.unlock_and_close-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="_Win32Opener.unlock_and_close-expanded"><a name="L294"></a><tt class="py-lineno">294</tt> <tt class="py-line"> <tt class="py-docstring">"""Close and unlock the file using the win32 primitive."""</tt> </tt>
-<a name="L295"></a><tt class="py-lineno">295</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_locked</tt><tt class="py-op">:</tt> </tt>
-<a name="L296"></a><tt class="py-lineno">296</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L297"></a><tt class="py-lineno">297</tt> <tt class="py-line"> <tt class="py-name">hfile</tt> <tt class="py-op">=</tt> <tt class="py-name">win32file</tt><tt class="py-op">.</tt><tt class="py-name">_get_osfhandle</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt><tt class="py-op">.</tt><tt class="py-name">fileno</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L298"></a><tt class="py-lineno">298</tt> <tt class="py-line"> <tt class="py-name">win32file</tt><tt class="py-op">.</tt><tt class="py-name">UnlockFileEx</tt><tt class="py-op">(</tt><tt class="py-name">hfile</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-op">-</tt><tt class="py-number">0x10000</tt><tt class="py-op">,</tt> <tt class="py-name">pywintypes</tt><tt class="py-op">.</tt><tt class="py-name">OVERLAPPED</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L299"></a><tt class="py-lineno">299</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">pywintypes</tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
-<a name="L300"></a><tt class="py-lineno">300</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">e</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt id="link-21" class="py-name"><a title="oauth2client.locked_file._Win32Opener" class="py-name" href="#" onclick="return doclink('link-21', '_Win32Opener', 'link-19');">_Win32Opener</a></tt><tt class="py-op">.</tt><tt class="py-name">FILE_ALREADY_UNLOCKED_ERROR</tt><tt class="py-op">:</tt> </tt>
-<a name="L301"></a><tt class="py-lineno">301</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> </tt>
-<a name="L302"></a><tt class="py-lineno">302</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_locked</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
-<a name="L303"></a><tt class="py-lineno">303</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt><tt class="py-op">:</tt> </tt>
-<a name="L304"></a><tt class="py-lineno">304</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L305"></a><tt class="py-lineno">305</tt> <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>
-<a name="L306"></a><tt class="py-lineno">306</tt> <tt class="py-line"> <tt id="link-22" class="py-name"><a title="oauth2client.locked_file._Win32Opener" class="py-name" href="#" onclick="return doclink('link-22', '_Win32Opener', 'link-19');">_Win32Opener</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="LockedFile"></a><div id="LockedFile-def"><a name="L307"></a><tt class="py-lineno">307</tt> <tt class="py-line"> </tt>
-<a name="L308"></a><tt class="py-lineno">308</tt> <tt class="py-line"> </tt>
-<a name="L309"></a><tt class="py-lineno">309</tt> <a class="py-toggle" href="#" id="LockedFile-toggle" onclick="return toggle('LockedFile');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.locked_file.LockedFile-class.html">LockedFile</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="LockedFile-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="LockedFile-expanded"><a name="L310"></a><tt class="py-lineno">310</tt> <tt class="py-line"> <tt class="py-docstring">"""Represent a file that has exclusive access."""</tt> </tt>
-<a name="L311"></a><tt class="py-lineno">311</tt> <tt class="py-line"> </tt>
-<a name="L312"></a><tt class="py-lineno">312</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-23" class="py-name" targets="Function oauth2client.util.positional()=oauth2client.util-module.html#positional"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-23', 'positional', 'link-23');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">4</tt><tt class="py-op">)</tt> </tt>
-<a name="LockedFile.__init__"></a><div id="LockedFile.__init__-def"><a name="L313"></a><tt class="py-lineno">313</tt> <a class="py-toggle" href="#" id="LockedFile.__init__-toggle" onclick="return toggle('LockedFile.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.locked_file.LockedFile-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">filename</tt><tt class="py-op">,</tt> <tt class="py-param">mode</tt><tt class="py-op">,</tt> <tt class="py-param">fallback_mode</tt><tt class="py-op">,</tt> <tt class="py-param">use_native_locking</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="LockedFile.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="LockedFile.__init__-expanded"><a name="L314"></a><tt class="py-lineno">314</tt> <tt class="py-line"> <tt class="py-docstring">"""Construct a LockedFile.</tt> </tt>
-<a name="L315"></a><tt class="py-lineno">315</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L316"></a><tt class="py-lineno">316</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L317"></a><tt class="py-lineno">317</tt> <tt class="py-line"><tt class="py-docstring"> filename: string, The path of the file to open.</tt> </tt>
-<a name="L318"></a><tt class="py-lineno">318</tt> <tt class="py-line"><tt class="py-docstring"> mode: string, The mode to try to open the file with.</tt> </tt>
-<a name="L319"></a><tt class="py-lineno">319</tt> <tt class="py-line"><tt class="py-docstring"> fallback_mode: string, The mode to use if locking fails.</tt> </tt>
-<a name="L320"></a><tt class="py-lineno">320</tt> <tt class="py-line"><tt class="py-docstring"> use_native_locking: bool, Whether or not fcntl/win32 locking is used.</tt> </tt>
-<a name="L321"></a><tt class="py-lineno">321</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L322"></a><tt class="py-lineno">322</tt> <tt class="py-line"> <tt class="py-name">opener</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L323"></a><tt class="py-lineno">323</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">opener</tt> <tt class="py-keyword">and</tt> <tt class="py-name">use_native_locking</tt><tt class="py-op">:</tt> </tt>
-<a name="L324"></a><tt class="py-lineno">324</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-24" class="py-name"><a title="oauth2client.locked_file._Win32Opener" class="py-name" href="#" onclick="return doclink('link-24', '_Win32Opener', 'link-19');">_Win32Opener</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L325"></a><tt class="py-lineno">325</tt> <tt class="py-line"> <tt class="py-name">opener</tt> <tt class="py-op">=</tt> <tt id="link-25" class="py-name"><a title="oauth2client.locked_file._Win32Opener" class="py-name" href="#" onclick="return doclink('link-25', '_Win32Opener', 'link-19');">_Win32Opener</a></tt><tt class="py-op">(</tt><tt id="link-26" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
+<a name="L298"></a><tt class="py-lineno">298</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt><tt class="py-op">,</tt> <tt class="py-name">timeout</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L299"></a><tt class="py-lineno">299</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt><tt class="py-op">:</tt> </tt>
+<a name="L300"></a><tt class="py-lineno">300</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L301"></a><tt class="py-lineno">301</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fallback_mode</tt><tt class="py-op">)</tt> </tt>
+<a name="L302"></a><tt class="py-lineno">302</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L303"></a><tt class="py-lineno">303</tt> <tt class="py-line"> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">sleep</tt><tt class="py-op">(</tt><tt class="py-name">delay</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L304"></a><tt class="py-lineno">304</tt> <tt class="py-line"> </tt>
+<a name="_Win32Opener.unlock_and_close"></a><div id="_Win32Opener.unlock_and_close-def"><a name="L305"></a><tt class="py-lineno">305</tt> <a class="py-toggle" href="#" id="_Win32Opener.unlock_and_close-toggle" onclick="return toggle('_Win32Opener.unlock_and_close');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.locked_file._Win32Opener-class.html#unlock_and_close">unlock_and_close</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_Win32Opener.unlock_and_close-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="_Win32Opener.unlock_and_close-expanded"><a name="L306"></a><tt class="py-lineno">306</tt> <tt class="py-line"> <tt class="py-docstring">"""Close and unlock the file using the win32 primitive."""</tt> </tt>
+<a name="L307"></a><tt class="py-lineno">307</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_locked</tt><tt class="py-op">:</tt> </tt>
+<a name="L308"></a><tt class="py-lineno">308</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L309"></a><tt class="py-lineno">309</tt> <tt class="py-line"> <tt class="py-name">hfile</tt> <tt class="py-op">=</tt> <tt class="py-name">win32file</tt><tt class="py-op">.</tt><tt class="py-name">_get_osfhandle</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt><tt class="py-op">.</tt><tt class="py-name">fileno</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L310"></a><tt class="py-lineno">310</tt> <tt class="py-line"> <tt class="py-name">win32file</tt><tt class="py-op">.</tt><tt class="py-name">UnlockFileEx</tt><tt class="py-op">(</tt><tt class="py-name">hfile</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-op">-</tt><tt class="py-number">0x10000</tt><tt class="py-op">,</tt> <tt class="py-name">pywintypes</tt><tt class="py-op">.</tt><tt class="py-name">OVERLAPPED</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L311"></a><tt class="py-lineno">311</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">pywintypes</tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L312"></a><tt class="py-lineno">312</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">e</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">!=</tt> <tt id="link-21" class="py-name"><a title="oauth2client.locked_file._Win32Opener" class="py-name" href="#" onclick="return doclink('link-21', '_Win32Opener', 'link-19');">_Win32Opener</a></tt><tt class="py-op">.</tt><tt class="py-name">FILE_ALREADY_UNLOCKED_ERROR</tt><tt class="py-op">:</tt> </tt>
+<a name="L313"></a><tt class="py-lineno">313</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> </tt>
+<a name="L314"></a><tt class="py-lineno">314</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_locked</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L315"></a><tt class="py-lineno">315</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt><tt class="py-op">:</tt> </tt>
+<a name="L316"></a><tt class="py-lineno">316</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_fh</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L317"></a><tt class="py-lineno">317</tt> <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>
+<a name="L318"></a><tt class="py-lineno">318</tt> <tt class="py-line"> <tt id="link-22" class="py-name"><a title="oauth2client.locked_file._Win32Opener" class="py-name" href="#" onclick="return doclink('link-22', '_Win32Opener', 'link-19');">_Win32Opener</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="LockedFile"></a><div id="LockedFile-def"><a name="L319"></a><tt class="py-lineno">319</tt> <tt class="py-line"> </tt>
+<a name="L320"></a><tt class="py-lineno">320</tt> <tt class="py-line"> </tt>
+<a name="L321"></a><tt class="py-lineno">321</tt> <a class="py-toggle" href="#" id="LockedFile-toggle" onclick="return toggle('LockedFile');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.locked_file.LockedFile-class.html">LockedFile</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="LockedFile-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="LockedFile-expanded"><a name="L322"></a><tt class="py-lineno">322</tt> <tt class="py-line"> <tt class="py-docstring">"""Represent a file that has exclusive access."""</tt> </tt>
+<a name="L323"></a><tt class="py-lineno">323</tt> <tt class="py-line"> </tt>
+<a name="L324"></a><tt class="py-lineno">324</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-23" class="py-name" targets="Function oauth2client.util.positional()=oauth2client.util-module.html#positional"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-23', 'positional', 'link-23');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">4</tt><tt class="py-op">)</tt> </tt>
+<a name="LockedFile.__init__"></a><div id="LockedFile.__init__-def"><a name="L325"></a><tt class="py-lineno">325</tt> <a class="py-toggle" href="#" id="LockedFile.__init__-toggle" onclick="return toggle('LockedFile.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.locked_file.LockedFile-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">filename</tt><tt class="py-op">,</tt> <tt class="py-param">mode</tt><tt class="py-op">,</tt> <tt class="py-param">fallback_mode</tt><tt class="py-op">,</tt> <tt class="py-param">use_native_locking</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="LockedFile.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="LockedFile.__init__-expanded"><a name="L326"></a><tt class="py-lineno">326</tt> <tt class="py-line"> <tt class="py-docstring">"""Construct a LockedFile.</tt> </tt>
+<a name="L327"></a><tt class="py-lineno">327</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L328"></a><tt class="py-lineno">328</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L329"></a><tt class="py-lineno">329</tt> <tt class="py-line"><tt class="py-docstring"> filename: string, The path of the file to open.</tt> </tt>
+<a name="L330"></a><tt class="py-lineno">330</tt> <tt class="py-line"><tt class="py-docstring"> mode: string, The mode to try to open the file with.</tt> </tt>
+<a name="L331"></a><tt class="py-lineno">331</tt> <tt class="py-line"><tt class="py-docstring"> fallback_mode: string, The mode to use if locking fails.</tt> </tt>
+<a name="L332"></a><tt class="py-lineno">332</tt> <tt class="py-line"><tt class="py-docstring"> use_native_locking: bool, Whether or not fcntl/win32 locking is used.</tt> </tt>
+<a name="L333"></a><tt class="py-lineno">333</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L334"></a><tt class="py-lineno">334</tt> <tt class="py-line"> <tt class="py-name">opener</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L335"></a><tt class="py-lineno">335</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">opener</tt> <tt class="py-keyword">and</tt> <tt class="py-name">use_native_locking</tt><tt class="py-op">:</tt> </tt>
+<a name="L336"></a><tt class="py-lineno">336</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-24" class="py-name"><a title="oauth2client.locked_file._Win32Opener" class="py-name" href="#" onclick="return doclink('link-24', '_Win32Opener', 'link-19');">_Win32Opener</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L337"></a><tt class="py-lineno">337</tt> <tt class="py-line"> <tt class="py-name">opener</tt> <tt class="py-op">=</tt> <tt id="link-25" class="py-name"><a title="oauth2client.locked_file._Win32Opener" class="py-name" href="#" onclick="return doclink('link-25', '_Win32Opener', 'link-19');">_Win32Opener</a></tt><tt class="py-op">(</tt><tt id="link-26" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-26', 'filename', 'link-3');">filename</a></tt><tt class="py-op">,</tt> <tt class="py-name">mode</tt><tt class="py-op">,</tt> <tt class="py-name">fallback_mode</tt><tt class="py-op">)</tt> </tt>
-<a name="L326"></a><tt class="py-lineno">326</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-27" class="py-name"><a title="oauth2client.locked_file._FcntlOpener" class="py-name" href="#" onclick="return doclink('link-27', '_FcntlOpener', 'link-16');">_FcntlOpener</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L327"></a><tt class="py-lineno">327</tt> <tt class="py-line"> <tt class="py-name">opener</tt> <tt class="py-op">=</tt> <tt id="link-28" class="py-name"><a title="oauth2client.locked_file._FcntlOpener" class="py-name" href="#" onclick="return doclink('link-28', '_FcntlOpener', 'link-16');">_FcntlOpener</a></tt><tt class="py-op">(</tt><tt id="link-29" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
+<a name="L338"></a><tt class="py-lineno">338</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-27" class="py-name"><a title="oauth2client.locked_file._FcntlOpener" class="py-name" href="#" onclick="return doclink('link-27', '_FcntlOpener', 'link-16');">_FcntlOpener</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L339"></a><tt class="py-lineno">339</tt> <tt class="py-line"> <tt class="py-name">opener</tt> <tt class="py-op">=</tt> <tt id="link-28" class="py-name"><a title="oauth2client.locked_file._FcntlOpener" class="py-name" href="#" onclick="return doclink('link-28', '_FcntlOpener', 'link-16');">_FcntlOpener</a></tt><tt class="py-op">(</tt><tt id="link-29" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-29', 'filename', 'link-3');">filename</a></tt><tt class="py-op">,</tt> <tt class="py-name">mode</tt><tt class="py-op">,</tt> <tt class="py-name">fallback_mode</tt><tt class="py-op">)</tt> </tt>
-<a name="L328"></a><tt class="py-lineno">328</tt> <tt class="py-line"> </tt>
-<a name="L329"></a><tt class="py-lineno">329</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">opener</tt><tt class="py-op">:</tt> </tt>
-<a name="L330"></a><tt class="py-lineno">330</tt> <tt class="py-line"> <tt class="py-name">opener</tt> <tt class="py-op">=</tt> <tt id="link-30" class="py-name" targets="Class oauth2client.locked_file._PosixOpener=oauth2client.locked_file._PosixOpener-class.html"><a title="oauth2client.locked_file._PosixOpener" class="py-name" href="#" onclick="return doclink('link-30', '_PosixOpener', 'link-30');">_PosixOpener</a></tt><tt class="py-op">(</tt><tt id="link-31" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
+<a name="L340"></a><tt class="py-lineno">340</tt> <tt class="py-line"> </tt>
+<a name="L341"></a><tt class="py-lineno">341</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">opener</tt><tt class="py-op">:</tt> </tt>
+<a name="L342"></a><tt class="py-lineno">342</tt> <tt class="py-line"> <tt class="py-name">opener</tt> <tt class="py-op">=</tt> <tt id="link-30" class="py-name" targets="Class oauth2client.locked_file._PosixOpener=oauth2client.locked_file._PosixOpener-class.html"><a title="oauth2client.locked_file._PosixOpener" class="py-name" href="#" onclick="return doclink('link-30', '_PosixOpener', 'link-30');">_PosixOpener</a></tt><tt class="py-op">(</tt><tt id="link-31" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-31', 'filename', 'link-3');">filename</a></tt><tt class="py-op">,</tt> <tt class="py-name">mode</tt><tt class="py-op">,</tt> <tt class="py-name">fallback_mode</tt><tt class="py-op">)</tt> </tt>
-<a name="L331"></a><tt class="py-lineno">331</tt> <tt class="py-line"> </tt>
-<a name="L332"></a><tt class="py-lineno">332</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_opener</tt> <tt class="py-op">=</tt> <tt class="py-name">opener</tt> </tt>
-</div><a name="L333"></a><tt class="py-lineno">333</tt> <tt class="py-line"> </tt>
-<a name="LockedFile.filename"></a><div id="LockedFile.filename-def"><a name="L334"></a><tt class="py-lineno">334</tt> <a class="py-toggle" href="#" id="LockedFile.filename-toggle" onclick="return toggle('LockedFile.filename');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.locked_file.LockedFile-class.html#filename">filename</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="LockedFile.filename-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="LockedFile.filename-expanded"><a name="L335"></a><tt class="py-lineno">335</tt> <tt class="py-line"> <tt class="py-docstring">"""Return the filename we were constructed with."""</tt> </tt>
-<a name="L336"></a><tt class="py-lineno">336</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_opener</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt> </tt>
-</div><a name="L337"></a><tt class="py-lineno">337</tt> <tt class="py-line"> </tt>
-<a name="LockedFile.file_handle"></a><div id="LockedFile.file_handle-def"><a name="L338"></a><tt class="py-lineno">338</tt> <a class="py-toggle" href="#" id="LockedFile.file_handle-toggle" onclick="return toggle('LockedFile.file_handle');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.locked_file.LockedFile-class.html#file_handle">file_handle</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="LockedFile.file_handle-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="LockedFile.file_handle-expanded"><a name="L339"></a><tt class="py-lineno">339</tt> <tt class="py-line"> <tt class="py-docstring">"""Return the file_handle to the opened file."""</tt> </tt>
-<a name="L340"></a><tt class="py-lineno">340</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_opener</tt><tt class="py-op">.</tt><tt id="link-32" class="py-name" targets="Method oauth2client.locked_file.LockedFile.file_handle()=oauth2client.locked_file.LockedFile-class.html#file_handle,Method oauth2client.locked_file._Opener.file_handle()=oauth2client.locked_file._Opener-class.html#file_handle"><a title="oauth2client.locked_file.LockedFile.file_handle
-oauth2client.locked_file._Opener.file_handle" class="py-name" href="#" onclick="return doclink('link-32', 'file_handle', 'link-32');">file_handle</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L341"></a><tt class="py-lineno">341</tt> <tt class="py-line"> </tt>
-<a name="LockedFile.is_locked"></a><div id="LockedFile.is_locked-def"><a name="L342"></a><tt class="py-lineno">342</tt> <a class="py-toggle" href="#" id="LockedFile.is_locked-toggle" onclick="return toggle('LockedFile.is_locked');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.locked_file.LockedFile-class.html#is_locked">is_locked</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="LockedFile.is_locked-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="LockedFile.is_locked-expanded"><a name="L343"></a><tt class="py-lineno">343</tt> <tt class="py-line"> <tt class="py-docstring">"""Return whether we successfully locked the file."""</tt> </tt>
-<a name="L344"></a><tt class="py-lineno">344</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_opener</tt><tt class="py-op">.</tt><tt id="link-33" class="py-name" targets="Method oauth2client.locked_file.LockedFile.is_locked()=oauth2client.locked_file.LockedFile-class.html#is_locked,Method oauth2client.locked_file._Opener.is_locked()=oauth2client.locked_file._Opener-class.html#is_locked"><a title="oauth2client.locked_file.LockedFile.is_locked
-oauth2client.locked_file._Opener.is_locked" class="py-name" href="#" onclick="return doclink('link-33', 'is_locked', 'link-33');">is_locked</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L343"></a><tt class="py-lineno">343</tt> <tt class="py-line"> </tt>
+<a name="L344"></a><tt class="py-lineno">344</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_opener</tt> <tt class="py-op">=</tt> <tt class="py-name">opener</tt> </tt>
</div><a name="L345"></a><tt class="py-lineno">345</tt> <tt class="py-line"> </tt>
-<a name="LockedFile.open_and_lock"></a><div id="LockedFile.open_and_lock-def"><a name="L346"></a><tt class="py-lineno">346</tt> <a class="py-toggle" href="#" id="LockedFile.open_and_lock-toggle" onclick="return toggle('LockedFile.open_and_lock');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.locked_file.LockedFile-class.html#open_and_lock">open_and_lock</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">timeout</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-param">delay</tt><tt class="py-op">=</tt><tt class="py-number">0.05</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="LockedFile.open_and_lock-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="LockedFile.open_and_lock-expanded"><a name="L347"></a><tt class="py-lineno">347</tt> <tt class="py-line"> <tt class="py-docstring">"""Open the file, trying to lock it.</tt> </tt>
-<a name="L348"></a><tt class="py-lineno">348</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L349"></a><tt class="py-lineno">349</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L350"></a><tt class="py-lineno">350</tt> <tt class="py-line"><tt class="py-docstring"> timeout: float, The number of seconds to try to acquire the lock.</tt> </tt>
-<a name="L351"></a><tt class="py-lineno">351</tt> <tt class="py-line"><tt class="py-docstring"> delay: float, The number of seconds to wait between retry attempts.</tt> </tt>
-<a name="L352"></a><tt class="py-lineno">352</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L353"></a><tt class="py-lineno">353</tt> <tt class="py-line"><tt class="py-docstring"> Raises:</tt> </tt>
-<a name="L354"></a><tt class="py-lineno">354</tt> <tt class="py-line"><tt class="py-docstring"> AlreadyLockedException: if the lock is already acquired.</tt> </tt>
-<a name="L355"></a><tt class="py-lineno">355</tt> <tt class="py-line"><tt class="py-docstring"> IOError: if the open fails.</tt> </tt>
-<a name="L356"></a><tt class="py-lineno">356</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L357"></a><tt class="py-lineno">357</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_opener</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name" targets="Method oauth2client.locked_file.LockedFile.open_and_lock()=oauth2client.locked_file.LockedFile-class.html#open_and_lock,Method oauth2client.locked_file._Opener.open_and_lock()=oauth2client.locked_file._Opener-class.html#open_and_lock,Method oauth2client.locked_file._PosixOpener.open_and_lock()=oauth2client.locked_file._PosixOpener-class.html#open_and_lock"><a title="oauth2client.locked_file.LockedFile.open_and_lock
+<a name="LockedFile.filename"></a><div id="LockedFile.filename-def"><a name="L346"></a><tt class="py-lineno">346</tt> <a class="py-toggle" href="#" id="LockedFile.filename-toggle" onclick="return toggle('LockedFile.filename');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.locked_file.LockedFile-class.html#filename">filename</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="LockedFile.filename-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="LockedFile.filename-expanded"><a name="L347"></a><tt class="py-lineno">347</tt> <tt class="py-line"> <tt class="py-docstring">"""Return the filename we were constructed with."""</tt> </tt>
+<a name="L348"></a><tt class="py-lineno">348</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_opener</tt><tt class="py-op">.</tt><tt class="py-name">_filename</tt> </tt>
+</div><a name="L349"></a><tt class="py-lineno">349</tt> <tt class="py-line"> </tt>
+<a name="LockedFile.file_handle"></a><div id="LockedFile.file_handle-def"><a name="L350"></a><tt class="py-lineno">350</tt> <a class="py-toggle" href="#" id="LockedFile.file_handle-toggle" onclick="return toggle('LockedFile.file_handle');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.locked_file.LockedFile-class.html#file_handle">file_handle</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="LockedFile.file_handle-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="LockedFile.file_handle-expanded"><a name="L351"></a><tt class="py-lineno">351</tt> <tt class="py-line"> <tt class="py-docstring">"""Return the file_handle to the opened file."""</tt> </tt>
+<a name="L352"></a><tt class="py-lineno">352</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_opener</tt><tt class="py-op">.</tt><tt id="link-32" class="py-name" targets="Method oauth2client.locked_file.LockedFile.file_handle()=oauth2client.locked_file.LockedFile-class.html#file_handle,Method oauth2client.locked_file._Opener.file_handle()=oauth2client.locked_file._Opener-class.html#file_handle"><a title="oauth2client.locked_file.LockedFile.file_handle
+oauth2client.locked_file._Opener.file_handle" class="py-name" href="#" onclick="return doclink('link-32', 'file_handle', 'link-32');">file_handle</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L353"></a><tt class="py-lineno">353</tt> <tt class="py-line"> </tt>
+<a name="LockedFile.is_locked"></a><div id="LockedFile.is_locked-def"><a name="L354"></a><tt class="py-lineno">354</tt> <a class="py-toggle" href="#" id="LockedFile.is_locked-toggle" onclick="return toggle('LockedFile.is_locked');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.locked_file.LockedFile-class.html#is_locked">is_locked</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="LockedFile.is_locked-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="LockedFile.is_locked-expanded"><a name="L355"></a><tt class="py-lineno">355</tt> <tt class="py-line"> <tt class="py-docstring">"""Return whether we successfully locked the file."""</tt> </tt>
+<a name="L356"></a><tt class="py-lineno">356</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_opener</tt><tt class="py-op">.</tt><tt id="link-33" class="py-name" targets="Method oauth2client.locked_file.LockedFile.is_locked()=oauth2client.locked_file.LockedFile-class.html#is_locked,Method oauth2client.locked_file._Opener.is_locked()=oauth2client.locked_file._Opener-class.html#is_locked"><a title="oauth2client.locked_file.LockedFile.is_locked
+oauth2client.locked_file._Opener.is_locked" class="py-name" href="#" onclick="return doclink('link-33', 'is_locked', 'link-33');">is_locked</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L357"></a><tt class="py-lineno">357</tt> <tt class="py-line"> </tt>
+<a name="LockedFile.open_and_lock"></a><div id="LockedFile.open_and_lock-def"><a name="L358"></a><tt class="py-lineno">358</tt> <a class="py-toggle" href="#" id="LockedFile.open_and_lock-toggle" onclick="return toggle('LockedFile.open_and_lock');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.locked_file.LockedFile-class.html#open_and_lock">open_and_lock</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">timeout</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-param">delay</tt><tt class="py-op">=</tt><tt class="py-number">0.05</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="LockedFile.open_and_lock-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="LockedFile.open_and_lock-expanded"><a name="L359"></a><tt class="py-lineno">359</tt> <tt class="py-line"> <tt class="py-docstring">"""Open the file, trying to lock it.</tt> </tt>
+<a name="L360"></a><tt class="py-lineno">360</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L361"></a><tt class="py-lineno">361</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L362"></a><tt class="py-lineno">362</tt> <tt class="py-line"><tt class="py-docstring"> timeout: float, The number of seconds to try to acquire the lock.</tt> </tt>
+<a name="L363"></a><tt class="py-lineno">363</tt> <tt class="py-line"><tt class="py-docstring"> delay: float, The number of seconds to wait between retry attempts.</tt> </tt>
+<a name="L364"></a><tt class="py-lineno">364</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L365"></a><tt class="py-lineno">365</tt> <tt class="py-line"><tt class="py-docstring"> Raises:</tt> </tt>
+<a name="L366"></a><tt class="py-lineno">366</tt> <tt class="py-line"><tt class="py-docstring"> AlreadyLockedException: if the lock is already acquired.</tt> </tt>
+<a name="L367"></a><tt class="py-lineno">367</tt> <tt class="py-line"><tt class="py-docstring"> IOError: if the open fails.</tt> </tt>
+<a name="L368"></a><tt class="py-lineno">368</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L369"></a><tt class="py-lineno">369</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_opener</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name" targets="Method oauth2client.locked_file.LockedFile.open_and_lock()=oauth2client.locked_file.LockedFile-class.html#open_and_lock,Method oauth2client.locked_file._Opener.open_and_lock()=oauth2client.locked_file._Opener-class.html#open_and_lock,Method oauth2client.locked_file._PosixOpener.open_and_lock()=oauth2client.locked_file._PosixOpener-class.html#open_and_lock"><a title="oauth2client.locked_file.LockedFile.open_and_lock
oauth2client.locked_file._Opener.open_and_lock
oauth2client.locked_file._PosixOpener.open_and_lock" class="py-name" href="#" onclick="return doclink('link-34', 'open_and_lock', 'link-34');">open_and_lock</a></tt><tt class="py-op">(</tt><tt class="py-name">timeout</tt><tt class="py-op">,</tt> <tt class="py-name">delay</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L358"></a><tt class="py-lineno">358</tt> <tt class="py-line"> </tt>
-<a name="LockedFile.unlock_and_close"></a><div id="LockedFile.unlock_and_close-def"><a name="L359"></a><tt class="py-lineno">359</tt> <a class="py-toggle" href="#" id="LockedFile.unlock_and_close-toggle" onclick="return toggle('LockedFile.unlock_and_close');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.locked_file.LockedFile-class.html#unlock_and_close">unlock_and_close</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="LockedFile.unlock_and_close-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="LockedFile.unlock_and_close-expanded"><a name="L360"></a><tt class="py-lineno">360</tt> <tt class="py-line"> <tt class="py-docstring">"""Unlock and close a file."""</tt> </tt>
-<a name="L361"></a><tt class="py-lineno">361</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_opener</tt><tt class="py-op">.</tt><tt id="link-35" class="py-name" targets="Method oauth2client.locked_file.LockedFile.unlock_and_close()=oauth2client.locked_file.LockedFile-class.html#unlock_and_close,Method oauth2client.locked_file._Opener.unlock_and_close()=oauth2client.locked_file._Opener-class.html#unlock_and_close,Method oauth2client.locked_file._PosixOpener.unlock_and_close()=oauth2client.locked_file._PosixOpener-class.html#unlock_and_close"><a title="oauth2client.locked_file.LockedFile.unlock_and_close
+</div><a name="L370"></a><tt class="py-lineno">370</tt> <tt class="py-line"> </tt>
+<a name="LockedFile.unlock_and_close"></a><div id="LockedFile.unlock_and_close-def"><a name="L371"></a><tt class="py-lineno">371</tt> <a class="py-toggle" href="#" id="LockedFile.unlock_and_close-toggle" onclick="return toggle('LockedFile.unlock_and_close');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.locked_file.LockedFile-class.html#unlock_and_close">unlock_and_close</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="LockedFile.unlock_and_close-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="LockedFile.unlock_and_close-expanded"><a name="L372"></a><tt class="py-lineno">372</tt> <tt class="py-line"> <tt class="py-docstring">"""Unlock and close a file."""</tt> </tt>
+<a name="L373"></a><tt class="py-lineno">373</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_opener</tt><tt class="py-op">.</tt><tt id="link-35" class="py-name" targets="Method oauth2client.locked_file.LockedFile.unlock_and_close()=oauth2client.locked_file.LockedFile-class.html#unlock_and_close,Method oauth2client.locked_file._Opener.unlock_and_close()=oauth2client.locked_file._Opener-class.html#unlock_and_close,Method oauth2client.locked_file._PosixOpener.unlock_and_close()=oauth2client.locked_file._PosixOpener-class.html#unlock_and_close"><a title="oauth2client.locked_file.LockedFile.unlock_and_close
oauth2client.locked_file._Opener.unlock_and_close
oauth2client.locked_file._PosixOpener.unlock_and_close" class="py-name" href="#" onclick="return doclink('link-35', 'unlock_and_close', 'link-35');">unlock_and_close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L362"></a><tt class="py-lineno">362</tt> <tt class="py-line"> </tt><script type="text/javascript">
+</div></div><a name="L374"></a><tt class="py-lineno">374</tt> <tt class="py-line"> </tt><script type="text/javascript">
<!--
expandto(location.href);
// -->
@@ -486,7 +498,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:26 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:46 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.locked_file.AlreadyLockedException-class.html b/docs/epy/oauth2client.locked_file.AlreadyLockedException-class.html
index 1b6efdb..f5aa374 100644
--- a/docs/epy/oauth2client.locked_file.AlreadyLockedException-class.html
+++ b/docs/epy/oauth2client.locked_file.AlreadyLockedException-class.html
@@ -55,12 +55,26 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class AlreadyLockedException</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.locked_file-pysrc.html#AlreadyLockedException">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_alreadyloc" name="class_hierarchy_for_alreadyloc">
-<area shape="rect" id="node1" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
-<area shape="rect" id="node2" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
-<area shape="rect" id="node3" href="oauth2client.locked_file.AlreadyLockedException-class.html" title="AlreadyLockedException" alt="" coords="11,123,176,151"/>
+<center> <map id="uml_class_diagram_for_oauth2cl_42" name="uml_class_diagram_for_oauth2cl_42">
+<area shape="rect" id="node1" href="oauth2client.locked_file.AlreadyLockedException-class.html" title="Trying to lock a file that has already been locked by the LockedFile." alt="" coords="11,379,181,423"/>
+<area shape="rect" id="node207" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="32,316,159,335"/>
+<area shape="rect" id="node207" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="32,335,159,353"/>
+<area shape="rect" id="node2" href="javascript:void(0);" title="Common base class for all non-exit exceptions." alt="" coords="20,283,169,359"/>
+<area shape="rect" id="node208" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="17,31,175,49"/>
+<area shape="rect" id="node208" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="17,49,175,68"/>
+<area shape="rect" id="node208" href="javascript:void(0);" title="x.__delattr__('name') <==> del x.name" alt="" coords="17,71,175,89"/>
+<area shape="rect" id="node208" href="javascript:void(0);" title="x.__getattribute__('name') <==> x.name" alt="" coords="17,89,175,108"/>
+<area shape="rect" id="node208" href="javascript:void(0);" title="x[y]" alt="" coords="17,108,175,127"/>
+<area shape="rect" id="node208" href="javascript:void(0);" title="x[i:j]" alt="" coords="17,127,175,145"/>
+<area shape="rect" id="node208" href="javascript:void(0);" title="helper for pickle" alt="" coords="17,145,175,164"/>
+<area shape="rect" id="node208" href="javascript:void(0);" title="repr(x)" alt="" coords="17,164,175,183"/>
+<area shape="rect" id="node208" href="javascript:void(0);" title="x.__setattr__('name', value) <==> x.name = value" alt="" coords="17,183,175,201"/>
+<area shape="rect" id="node208" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="17,201,175,220"/>
+<area shape="rect" id="node208" href="javascript:void(0);" title="str(x)" alt="" coords="17,220,175,239"/>
+<area shape="rect" id="node208" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="17,239,175,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,6,187,263"/>
</map>
- <img src="class_hierarchy_for_alreadyloc.gif" alt='' usemap="#class_hierarchy_for_alreadyloc" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_oauth2cl_42.gif" alt='' usemap="#uml_class_diagram_for_oauth2cl_42" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -166,7 +180,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:25 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:46 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.locked_file.CredentialsFileSymbolicLinkError-class.html b/docs/epy/oauth2client.locked_file.CredentialsFileSymbolicLinkError-class.html
index 849f4dc..f5449e1 100644
--- a/docs/epy/oauth2client.locked_file.CredentialsFileSymbolicLinkError-class.html
+++ b/docs/epy/oauth2client.locked_file.CredentialsFileSymbolicLinkError-class.html
@@ -55,12 +55,26 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class CredentialsFileSymbolicLinkError</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.locked_file-pysrc.html#CredentialsFileSymbolicLinkError">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_credential_8" name="class_hierarchy_for_credential_8">
-<area shape="rect" id="node1" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="24,6,200,34"/>
-<area shape="rect" id="node2" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="39,65,185,93"/>
-<area shape="rect" id="node3" href="oauth2client.locked_file.CredentialsFileSymbolicLinkError-class.html" title="CredentialsFileSymbolicLinkError" alt="" coords="5,123,219,151"/>
+<center> <map id="uml_class_diagram_for_oauth2cl_43" name="uml_class_diagram_for_oauth2cl_43">
+<area shape="rect" id="node1" href="oauth2client.locked_file.CredentialsFileSymbolicLinkError-class.html" title="Credentials files must not be symbolic links." alt="" coords="5,379,224,423"/>
+<area shape="rect" id="node210" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="51,316,177,335"/>
+<area shape="rect" id="node210" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="51,335,177,353"/>
+<area shape="rect" id="node2" href="javascript:void(0);" title="Common base class for all non-exit exceptions." alt="" coords="39,283,188,359"/>
+<area shape="rect" id="node211" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="36,31,193,49"/>
+<area shape="rect" id="node211" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="36,49,193,68"/>
+<area shape="rect" id="node211" href="javascript:void(0);" title="x.__delattr__('name') <==> del x.name" alt="" coords="36,71,193,89"/>
+<area shape="rect" id="node211" href="javascript:void(0);" title="x.__getattribute__('name') <==> x.name" alt="" coords="36,89,193,108"/>
+<area shape="rect" id="node211" href="javascript:void(0);" title="x[y]" alt="" coords="36,108,193,127"/>
+<area shape="rect" id="node211" href="javascript:void(0);" title="x[i:j]" alt="" coords="36,127,193,145"/>
+<area shape="rect" id="node211" href="javascript:void(0);" title="helper for pickle" alt="" coords="36,145,193,164"/>
+<area shape="rect" id="node211" href="javascript:void(0);" title="repr(x)" alt="" coords="36,164,193,183"/>
+<area shape="rect" id="node211" href="javascript:void(0);" title="x.__setattr__('name', value) <==> x.name = value" alt="" coords="36,183,193,201"/>
+<area shape="rect" id="node211" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="36,201,193,220"/>
+<area shape="rect" id="node211" href="javascript:void(0);" title="str(x)" alt="" coords="36,220,193,239"/>
+<area shape="rect" id="node211" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="36,239,193,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="24,6,205,263"/>
</map>
- <img src="class_hierarchy_for_credential_8.gif" alt='' usemap="#class_hierarchy_for_credential_8" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_oauth2cl_43.gif" alt='' usemap="#uml_class_diagram_for_oauth2cl_43" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -166,7 +180,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:25 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:46 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.locked_file.LockedFile-class.html b/docs/epy/oauth2client.locked_file.LockedFile-class.html
index ba30f43..1d1d322 100644
--- a/docs/epy/oauth2client.locked_file.LockedFile-class.html
+++ b/docs/epy/oauth2client.locked_file.LockedFile-class.html
@@ -55,10 +55,16 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class LockedFile</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.locked_file-pysrc.html#LockedFile">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_lockedfile" name="class_hierarchy_for_lockedfile">
-<area shape="rect" id="node1" href="oauth2client.locked_file.LockedFile-class.html" title="LockedFile" alt="" coords="5,6,91,34"/>
+<center> <map id="uml_class_diagram_for_oauth2cl_44" name="uml_class_diagram_for_oauth2cl_44">
+<area shape="rect" id="node212" href="oauth2client.locked_file.LockedFile-class.html#__init__" title="Construct a LockedFile." alt="" coords="17,39,441,57"/>
+<area shape="rect" id="node212" href="oauth2client.locked_file.LockedFile-class.html#filename" title="Return the filename we were constructed with." alt="" coords="17,57,441,76"/>
+<area shape="rect" id="node212" href="oauth2client.locked_file.LockedFile-class.html#file_handle" title="Return the file_handle to the opened file." alt="" coords="17,76,441,95"/>
+<area shape="rect" id="node212" href="oauth2client.locked_file.LockedFile-class.html#is_locked" title="Return whether we successfully locked the file." alt="" coords="17,95,441,113"/>
+<area shape="rect" id="node212" href="oauth2client.locked_file.LockedFile-class.html#open_and_lock" title="Open the file, trying to lock it." alt="" coords="17,113,441,132"/>
+<area shape="rect" id="node212" href="oauth2client.locked_file.LockedFile-class.html#unlock_and_close" title="Unlock and close a file." alt="" coords="17,132,441,151"/>
+<area shape="rect" id="node1" href="oauth2client.locked_file.LockedFile-class.html" title="Represent a file that has exclusive access." alt="" coords="5,6,453,157"/>
</map>
- <img src="class_hierarchy_for_lockedfile.gif" alt='' usemap="#class_hierarchy_for_lockedfile" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_oauth2cl_44.gif" alt='' usemap="#uml_class_diagram_for_oauth2cl_44" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -350,7 +356,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:25 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:46 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.locked_file._Opener-class.html b/docs/epy/oauth2client.locked_file._Opener-class.html
index e587f42..1513b01 100644
--- a/docs/epy/oauth2client.locked_file._Opener-class.html
+++ b/docs/epy/oauth2client.locked_file._Opener-class.html
@@ -55,10 +55,16 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class _Opener</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.locked_file-pysrc.html#_Opener">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for__opener" name="class_hierarchy_for__opener">
-<area shape="rect" id="node1" href="oauth2client.locked_file._Opener-class.html" title="_Opener" alt="" coords="5,6,75,34"/>
+<center> <map id="uml_class_diagram_for_oauth2cl_45" name="uml_class_diagram_for_oauth2cl_45">
+<area shape="rect" id="node213" href="oauth2client.locked_file._Opener-class.html#__init__" title="Create an Opener." alt="" coords="17,39,288,57"/>
+<area shape="rect" id="node213" href="oauth2client.locked_file._Opener-class.html#is_locked" title="Was the file locked." alt="" coords="17,57,288,76"/>
+<area shape="rect" id="node213" href="oauth2client.locked_file._Opener-class.html#file_handle" title="The file handle to the file." alt="" coords="17,76,288,95"/>
+<area shape="rect" id="node213" href="oauth2client.locked_file._Opener-class.html#filename" title="The filename that is being locked." alt="" coords="17,95,288,113"/>
+<area shape="rect" id="node213" href="oauth2client.locked_file._Opener-class.html#open_and_lock" title="Open the file and lock it." alt="" coords="17,113,288,132"/>
+<area shape="rect" id="node213" href="oauth2client.locked_file._Opener-class.html#unlock_and_close" title="Unlock and close the file." alt="" coords="17,132,288,151"/>
+<area shape="rect" id="node1" href="oauth2client.locked_file._Opener-class.html" title="Base class for different locking primitives." alt="" coords="5,6,299,157"/>
</map>
- <img src="class_hierarchy_for__opener.gif" alt='' usemap="#class_hierarchy_for__opener" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_oauth2cl_45.gif" alt='' usemap="#uml_class_diagram_for_oauth2cl_45" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -361,7 +367,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:25 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:46 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.locked_file._PosixOpener-class.html b/docs/epy/oauth2client.locked_file._PosixOpener-class.html
index 0f68334..fa15b22 100644
--- a/docs/epy/oauth2client.locked_file._PosixOpener-class.html
+++ b/docs/epy/oauth2client.locked_file._PosixOpener-class.html
@@ -55,11 +55,17 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class _PosixOpener</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.locked_file-pysrc.html#_PosixOpener">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for__posixopen" name="class_hierarchy_for__posixopen">
-<area shape="rect" id="node1" href="oauth2client.locked_file._Opener-class.html" title="_Opener" alt="" coords="5,6,75,34"/>
-<area shape="rect" id="node2" href="oauth2client.locked_file._PosixOpener-class.html" title="_PosixOpener" alt="" coords="99,6,203,34"/>
+<center> <map id="uml_class_diagram_for_oauth2cl_46" name="uml_class_diagram_for_oauth2cl_46">
+<area shape="rect" id="node214" href="oauth2client.locked_file._PosixOpener-class.html#open_and_lock" title="Open the file and lock it." alt="" coords="47,172,260,191"/>
+<area shape="rect" id="node214" href="oauth2client.locked_file._PosixOpener-class.html#unlock_and_close" title="Unlock a file by removing the .lock file, and close the handle." alt="" coords="47,191,260,209"/>
+<area shape="rect" id="node1" href="oauth2client.locked_file._PosixOpener-class.html" title="Lock files using Posix advisory lock files." alt="" coords="35,139,272,215"/>
+<area shape="rect" id="node215" href="oauth2client.locked_file._Opener-class.html#__init__" title="Create an Opener." alt="" coords="17,39,288,57"/>
+<area shape="rect" id="node215" href="oauth2client.locked_file._Opener-class.html#is_locked" title="Was the file locked." alt="" coords="17,57,288,76"/>
+<area shape="rect" id="node215" href="oauth2client.locked_file._Opener-class.html#file_handle" title="The file handle to the file." alt="" coords="17,76,288,95"/>
+<area shape="rect" id="node215" href="oauth2client.locked_file._Opener-class.html#filename" title="The filename that is being locked." alt="" coords="17,95,288,113"/>
+<area shape="rect" id="node2" href="oauth2client.locked_file._Opener-class.html" title="Base class for different locking primitives." alt="" coords="5,6,299,119"/>
</map>
- <img src="class_hierarchy_for__posixopen.gif" alt='' usemap="#class_hierarchy_for__posixopen" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_oauth2cl_46.gif" alt='' usemap="#uml_class_diagram_for_oauth2cl_46" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -294,7 +300,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:25 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:46 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.multistore_file-module.html b/docs/epy/oauth2client.multistore_file-module.html
index 2256e64..0f5cb01 100644
--- a/docs/epy/oauth2client.multistore_file-module.html
+++ b/docs/epy/oauth2client.multistore_file-module.html
@@ -206,6 +206,42 @@
</td>
</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="oauth2client.multistore_file-module.html#get_all_credential_keys" class="summary-sig-name">get_all_credential_keys</a>(<span class="summary-sig-arg">filename</span>,
+ <span class="summary-sig-arg">warn_on_readonly</span>=<span class="summary-sig-default">True</span>)</span><br />
+ Gets all the registered credential keys in the given Multistore.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="oauth2client.multistore_file-pysrc.html#get_all_credential_keys">source code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="oauth2client.multistore_file-module.html#_get_multistore" class="summary-sig-name" onclick="show_private();">_get_multistore</a>(<span class="summary-sig-arg">filename</span>,
+ <span class="summary-sig-arg">warn_on_readonly</span>=<span class="summary-sig-default">True</span>)</span><br />
+ A helper method to initialize the multistore with proper locking.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="oauth2client.multistore_file-pysrc.html#_get_multistore">source code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
</table>
<!-- ==================== VARIABLES ==================== -->
<a name="section-Variables"></a>
@@ -387,6 +423,76 @@
</dl>
</td></tr></table>
</div>
+<a name="get_all_credential_keys"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">get_all_credential_keys</span>(<span class="sig-arg">filename</span>,
+ <span class="sig-arg">warn_on_readonly</span>=<span class="sig-default">True</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="oauth2client.multistore_file-pysrc.html#get_all_credential_keys">source code</a></span>
+ </td>
+ </tr></table>
+
+ <pre class="literalblock">
+Gets all the registered credential keys in the given Multistore.
+
+Args:
+ filename: The JSON file storing a set of credentials
+ warn_on_readonly: if True, log a warning if the store is readonly
+
+Returns:
+ A list of the credential keys present in the file. They are returned as
+ dictionaries that can be passed into get_credential_storage_custom_key to
+ get the actual credentials.
+
+</pre>
+ <dl class="fields">
+ <dt>Decorators:</dt>
+ <dd><ul class="nomargin-top">
+ <li><code>@util.positional(1)</code></li>
+ </ul></dd>
+ </dl>
+</td></tr></table>
+</div>
+<a name="_get_multistore"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_get_multistore</span>(<span class="sig-arg">filename</span>,
+ <span class="sig-arg">warn_on_readonly</span>=<span class="sig-default">True</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="oauth2client.multistore_file-pysrc.html#_get_multistore">source code</a></span>
+ </td>
+ </tr></table>
+
+ <pre class="literalblock">
+A helper method to initialize the multistore with proper locking.
+
+Args:
+ filename: The JSON file storing a set of credentials
+ warn_on_readonly: if True, log a warning if the store is readonly
+
+Returns:
+ A multistore object
+
+</pre>
+ <dl class="fields">
+ <dt>Decorators:</dt>
+ <dd><ul class="nomargin-top">
+ <li><code>@util.positional(1)</code></li>
+ </ul></dd>
+ </dl>
+</td></tr></table>
+</div>
<br />
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
@@ -411,7 +517,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:23 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:42 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.multistore_file-pysrc.html b/docs/epy/oauth2client.multistore_file-pysrc.html
index fa6b2b6..c1620bf 100644
--- a/docs/epy/oauth2client.multistore_file-pysrc.html
+++ b/docs/epy/oauth2client.multistore_file-pysrc.html
@@ -53,55 +53,67 @@
</table>
<h1 class="epydoc">Source Code for <a href="oauth2client.multistore_file-module.html">Module oauth2client.multistore_file</a></h1>
<pre class="py-src">
-<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright 2011 Google Inc. All Rights Reserved.</tt> </tt>
-<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"> </tt>
-<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-docstring">"""Multi-credential file store with lock support.</tt> </tt>
-<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-docstring">This module implements a JSON credential store where multiple</tt> </tt>
-<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-docstring">credentials can be stored in one file. That file supports locking</tt> </tt>
-<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-docstring">both in a single process and across processes.</tt> </tt>
-<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-docstring">The credential themselves are keyed off of:</tt> </tt>
-<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-docstring">* client_id</tt> </tt>
-<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-docstring">* user_agent</tt> </tt>
-<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-docstring">* scope</tt> </tt>
-<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"><tt class="py-docstring">The format of the stored data is like so:</tt> </tt>
-<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-docstring">{</tt> </tt>
-<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-docstring"> 'file_version': 1,</tt> </tt>
-<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-docstring"> 'data': [</tt> </tt>
-<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-docstring"> {</tt> </tt>
-<a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-docstring"> 'key': {</tt> </tt>
-<a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-docstring"> 'clientId': '<client id>',</tt> </tt>
-<a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-docstring"> 'userAgent': '<user agent>',</tt> </tt>
-<a name="L22"></a><tt class="py-lineno"> 22</tt> <tt class="py-line"><tt class="py-docstring"> 'scope': '<scope>'</tt> </tt>
-<a name="L23"></a><tt class="py-lineno"> 23</tt> <tt class="py-line"><tt class="py-docstring"> },</tt> </tt>
-<a name="L24"></a><tt class="py-lineno"> 24</tt> <tt class="py-line"><tt class="py-docstring"> 'credential': {</tt> </tt>
-<a name="L25"></a><tt class="py-lineno"> 25</tt> <tt class="py-line"><tt class="py-docstring"> # JSON serialized Credentials.</tt> </tt>
-<a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"><tt class="py-docstring"> }</tt> </tt>
-<a name="L27"></a><tt class="py-lineno"> 27</tt> <tt class="py-line"><tt class="py-docstring"> }</tt> </tt>
-<a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"><tt class="py-docstring"> ]</tt> </tt>
-<a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"><tt class="py-docstring">}</tt> </tt>
-<a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
-<a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"> </tt>
-<a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"><tt class="py-name">__author__</tt> <tt class="py-op">=</tt> <tt class="py-string">'jbeda@google.com (Joe Beda)'</tt> </tt>
-<a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"> </tt>
-<a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">base64</tt> </tt>
-<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">errno</tt> </tt>
-<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt> </tt>
-<a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">os</tt> </tt>
-<a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">threading</tt> </tt>
-<a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"> </tt>
-<a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-0" class="py-name" targets="Module oauth2client.anyjson=oauth2client.anyjson-module.html"><a title="oauth2client.anyjson" class="py-name" href="#" onclick="return doclink('link-0', 'anyjson', 'link-0');">anyjson</a></tt> <tt class="py-keyword">import</tt> <tt class="py-name">simplejson</tt> </tt>
-<a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-1" class="py-name" targets="Package oauth2client=oauth2client-module.html"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-1', 'oauth2client', 'link-1');">oauth2client</a></tt><tt class="py-op">.</tt><tt id="link-2" class="py-name" targets="Module oauth2client.client=oauth2client.client-module.html"><a title="oauth2client.client" class="py-name" href="#" onclick="return doclink('link-2', 'client', 'link-2');">client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-3" class="py-name" targets="Class oauth2client.client.Storage=oauth2client.client.Storage-class.html,Class oauth2client.django_orm.Storage=oauth2client.django_orm.Storage-class.html,Class oauth2client.file.Storage=oauth2client.file.Storage-class.html,Class oauth2client.keyring_storage.Storage=oauth2client.keyring_storage.Storage-class.html"><a title="oauth2client.client.Storage
+<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright 2011 Google Inc.</tt> </tt>
+<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"># Licensed under the Apache License, Version 2.0 (the "License");</tt> </tt>
+<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"># you may not use this file except in compliance with the License.</tt> </tt>
+<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"># You may obtain a copy of the License at</tt> </tt>
+<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"># http://www.apache.org/licenses/LICENSE-2.0</tt> </tt>
+<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"># Unless required by applicable law or agreed to in writing, software</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"># distributed under the License is distributed on an "AS IS" BASIS,</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"># WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"># See the License for the specific language governing permissions and</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"># limitations under the License.</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-docstring">"""Multi-credential file store with lock support.</tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"><tt class="py-docstring">This module implements a JSON credential store where multiple</tt> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"><tt class="py-docstring">credentials can be stored in one file. That file supports locking</tt> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-docstring">both in a single process and across processes.</tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-docstring">The credential themselves are keyed off of:</tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt> <tt class="py-line"><tt class="py-docstring">* client_id</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt> <tt class="py-line"><tt class="py-docstring">* user_agent</tt> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt> <tt class="py-line"><tt class="py-docstring">* scope</tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"><tt class="py-docstring">The format of the stored data is like so:</tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt> <tt class="py-line"><tt class="py-docstring">{</tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"><tt class="py-docstring"> 'file_version': 1,</tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"><tt class="py-docstring"> 'data': [</tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"><tt class="py-docstring"> {</tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"><tt class="py-docstring"> 'key': {</tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"><tt class="py-docstring"> 'clientId': '<client id>',</tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"><tt class="py-docstring"> 'userAgent': '<user agent>',</tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"><tt class="py-docstring"> 'scope': '<scope>'</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"><tt class="py-docstring"> },</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"><tt class="py-docstring"> 'credential': {</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"><tt class="py-docstring"> # JSON serialized Credentials.</tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"><tt class="py-docstring"> }</tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"><tt class="py-docstring"> }</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"><tt class="py-docstring"> ]</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"><tt class="py-docstring">}</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"><tt class="py-name">__author__</tt> <tt class="py-op">=</tt> <tt class="py-string">'jbeda@google.com (Joe Beda)'</tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">base64</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">errno</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">os</tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">threading</tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-0" class="py-name" targets="Module oauth2client.anyjson=oauth2client.anyjson-module.html"><a title="oauth2client.anyjson" class="py-name" href="#" onclick="return doclink('link-0', 'anyjson', 'link-0');">anyjson</a></tt> <tt class="py-keyword">import</tt> <tt class="py-name">simplejson</tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-1" class="py-name" targets="Package oauth2client=oauth2client-module.html"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-1', 'oauth2client', 'link-1');">oauth2client</a></tt><tt class="py-op">.</tt><tt id="link-2" class="py-name" targets="Module oauth2client.client=oauth2client.client-module.html"><a title="oauth2client.client" class="py-name" href="#" onclick="return doclink('link-2', 'client', 'link-2');">client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-3" class="py-name" targets="Class oauth2client.client.Storage=oauth2client.client.Storage-class.html,Class oauth2client.django_orm.Storage=oauth2client.django_orm.Storage-class.html,Class oauth2client.file.Storage=oauth2client.file.Storage-class.html,Class oauth2client.keyring_storage.Storage=oauth2client.keyring_storage.Storage-class.html"><a title="oauth2client.client.Storage
oauth2client.django_orm.Storage
oauth2client.file.Storage
oauth2client.keyring_storage.Storage" class="py-name" href="#" onclick="return doclink('link-3', 'Storage', 'link-3');">Storage</a></tt> <tt class="py-keyword">as</tt> <tt class="py-name">BaseStorage</tt> </tt>
-<a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-4" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-4', 'oauth2client', 'link-1');">oauth2client</a></tt><tt class="py-op">.</tt><tt id="link-5" class="py-name"><a title="oauth2client.client" class="py-name" href="#" onclick="return doclink('link-5', 'client', 'link-2');">client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-6" class="py-name" targets="Class oauth2client.client.Credentials=oauth2client.client.Credentials-class.html"><a title="oauth2client.client.Credentials" class="py-name" href="#" onclick="return doclink('link-6', 'Credentials', 'link-6');">Credentials</a></tt> </tt>
-<a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-7" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-7', 'oauth2client', 'link-1');">oauth2client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-8" class="py-name" targets="Module oauth2client.util=oauth2client.util-module.html"><a title="oauth2client.util" class="py-name" href="#" onclick="return doclink('link-8', 'util', 'link-8');">util</a></tt> </tt>
-<a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-9" class="py-name" targets="Module oauth2client.locked_file=oauth2client.locked_file-module.html"><a title="oauth2client.locked_file" class="py-name" href="#" onclick="return doclink('link-9', 'locked_file', 'link-9');">locked_file</a></tt> <tt class="py-keyword">import</tt> <tt id="link-10" class="py-name" targets="Class oauth2client.locked_file.LockedFile=oauth2client.locked_file.LockedFile-class.html"><a title="oauth2client.locked_file.LockedFile" class="py-name" href="#" onclick="return doclink('link-10', 'LockedFile', 'link-10');">LockedFile</a></tt> </tt>
-<a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"> </tt>
-<a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"><tt id="link-11" class="py-name" targets="Variable apiclient.discovery.logger=apiclient.discovery-module.html#logger,Variable oauth2client.appengine.logger=oauth2client.appengine-module.html#logger,Variable oauth2client.client.logger=oauth2client.client-module.html#logger,Variable oauth2client.crypt.logger=oauth2client.crypt-module.html#logger,Variable oauth2client.gce.logger=oauth2client.gce-module.html#logger,Variable oauth2client.locked_file.logger=oauth2client.locked_file-module.html#logger,Variable oauth2client.multistore_file.logger=oauth2client.multistore_file-module.html#logger,Variable oauth2client.util.logger=oauth2client.util-module.html#logger"><a title="apiclient.discovery.logger
+<a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-4" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-4', 'oauth2client', 'link-1');">oauth2client</a></tt><tt class="py-op">.</tt><tt id="link-5" class="py-name"><a title="oauth2client.client" class="py-name" href="#" onclick="return doclink('link-5', 'client', 'link-2');">client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-6" class="py-name" targets="Class oauth2client.client.Credentials=oauth2client.client.Credentials-class.html"><a title="oauth2client.client.Credentials" class="py-name" href="#" onclick="return doclink('link-6', 'Credentials', 'link-6');">Credentials</a></tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-7" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-7', 'oauth2client', 'link-1');">oauth2client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-8" class="py-name" targets="Module oauth2client.util=oauth2client.util-module.html"><a title="oauth2client.util" class="py-name" href="#" onclick="return doclink('link-8', 'util', 'link-8');">util</a></tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-9" class="py-name" targets="Module oauth2client.locked_file=oauth2client.locked_file-module.html"><a title="oauth2client.locked_file" class="py-name" href="#" onclick="return doclink('link-9', 'locked_file', 'link-9');">locked_file</a></tt> <tt class="py-keyword">import</tt> <tt id="link-10" class="py-name" targets="Class oauth2client.locked_file.LockedFile=oauth2client.locked_file.LockedFile-class.html"><a title="oauth2client.locked_file.LockedFile" class="py-name" href="#" onclick="return doclink('link-10', 'LockedFile', 'link-10');">LockedFile</a></tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"><tt id="link-11" class="py-name" targets="Variable apiclient.discovery.logger=apiclient.discovery-module.html#logger,Variable oauth2client.appengine.logger=oauth2client.appengine-module.html#logger,Variable oauth2client.client.logger=oauth2client.client-module.html#logger,Variable oauth2client.crypt.logger=oauth2client.crypt-module.html#logger,Variable oauth2client.gce.logger=oauth2client.gce-module.html#logger,Variable oauth2client.locked_file.logger=oauth2client.locked_file-module.html#logger,Variable oauth2client.multistore_file.logger=oauth2client.multistore_file-module.html#logger,Variable oauth2client.util.logger=oauth2client.util-module.html#logger"><a title="apiclient.discovery.logger
oauth2client.appengine.logger
oauth2client.client.logger
oauth2client.crypt.logger
@@ -109,439 +121,489 @@
oauth2client.locked_file.logger
oauth2client.multistore_file.logger
oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-11', 'logger', 'link-11');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-name">__name__</tt><tt class="py-op">)</tt> </tt>
-<a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"> </tt>
-<a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"><tt class="py-comment"># A dict from 'filename'->_MultiStore instances</tt> </tt>
-<a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"><tt id="link-12" class="py-name" targets="Variable oauth2client.multistore_file._multistores=oauth2client.multistore_file-module.html#_multistores"><a title="oauth2client.multistore_file._multistores" class="py-name" href="#" onclick="return doclink('link-12', '_multistores', 'link-12');">_multistores</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-<a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"><tt id="link-13" class="py-name" targets="Variable oauth2client.multistore_file._multistores_lock=oauth2client.multistore_file-module.html#_multistores_lock"><a title="oauth2client.multistore_file._multistores_lock" class="py-name" href="#" onclick="return doclink('link-13', '_multistores_lock', 'link-13');">_multistores_lock</a></tt> <tt class="py-op">=</tt> <tt class="py-name">threading</tt><tt class="py-op">.</tt><tt class="py-name">Lock</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="Error"></a><div id="Error-def"><a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"> </tt>
-<a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"> </tt>
-<a name="L53"></a><tt class="py-lineno"> 53</tt> <a class="py-toggle" href="#" id="Error-toggle" onclick="return toggle('Error');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.multistore_file.Error-class.html">Error</a><tt class="py-op">(</tt><tt class="py-base-class">Exception</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="Error-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Error-expanded"><a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"> <tt class="py-docstring">"""Base error for this module."""</tt> </tt>
-<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
-</div><a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"> </tt>
-<a name="NewerCredentialStoreError"></a><div id="NewerCredentialStoreError-def"><a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"> </tt>
-<a name="L58"></a><tt class="py-lineno"> 58</tt> <a class="py-toggle" href="#" id="NewerCredentialStoreError-toggle" onclick="return toggle('NewerCredentialStoreError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.multistore_file.NewerCredentialStoreError-class.html">NewerCredentialStoreError</a><tt class="py-op">(</tt><tt class="py-base-class">Error</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="NewerCredentialStoreError-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="NewerCredentialStoreError-expanded"><a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"> <tt class="py-docstring">"""The credential store is a newer version that supported."""</tt> </tt>
-<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
-</div><a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"> </tt>
-<a name="get_credential_storage"></a><div id="get_credential_storage-def"><a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"> </tt>
-<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"><tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-14" class="py-name" targets="Function oauth2client.util.positional()=oauth2client.util-module.html#positional"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-14', 'positional', 'link-14');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">4</tt><tt class="py-op">)</tt> </tt>
-<a name="L64"></a><tt class="py-lineno"> 64</tt> <a class="py-toggle" href="#" id="get_credential_storage-toggle" onclick="return toggle('get_credential_storage');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file-module.html#get_credential_storage">get_credential_storage</a><tt class="py-op">(</tt><tt class="py-param">filename</tt><tt class="py-op">,</tt> <tt class="py-param">client_id</tt><tt class="py-op">,</tt> <tt class="py-param">user_agent</tt><tt class="py-op">,</tt> <tt class="py-param">scope</tt><tt class="py-op">,</tt> </tt>
-<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"> <tt class="py-param">warn_on_readonly</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="get_credential_storage-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="get_credential_storage-expanded"><a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"> <tt class="py-docstring">"""Get a Storage instance for a credential.</tt> </tt>
-<a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"><tt class="py-docstring"> filename: The JSON file storing a set of credentials</tt> </tt>
-<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"><tt class="py-docstring"> client_id: The client_id for the credential</tt> </tt>
-<a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"><tt class="py-docstring"> user_agent: The user agent for the credential</tt> </tt>
-<a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"><tt class="py-docstring"> scope: string or iterable of strings, Scope(s) being requested</tt> </tt>
-<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"><tt class="py-docstring"> warn_on_readonly: if True, log a warning if the store is readonly</tt> </tt>
-<a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"><tt class="py-docstring"> An object derived from client.Storage for getting/setting the</tt> </tt>
-<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"><tt class="py-docstring"> credential.</tt> </tt>
-<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"> <tt class="py-comment"># Recreate the legacy key with these specific parameters</tt> </tt>
-<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"> <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'clientId'</tt><tt class="py-op">:</tt> <tt class="py-name">client_id</tt><tt class="py-op">,</tt> <tt class="py-string">'userAgent'</tt><tt class="py-op">:</tt> <tt class="py-name">user_agent</tt><tt class="py-op">,</tt> </tt>
-<a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"> <tt class="py-string">'scope'</tt><tt class="py-op">:</tt> <tt id="link-15" class="py-name"><a title="oauth2client.util" class="py-name" href="#" onclick="return doclink('link-15', 'util', 'link-8');">util</a></tt><tt class="py-op">.</tt><tt id="link-16" class="py-name" targets="Function oauth2client.util.scopes_to_string()=oauth2client.util-module.html#scopes_to_string"><a title="oauth2client.util.scopes_to_string" class="py-name" href="#" onclick="return doclink('link-16', 'scopes_to_string', 'link-16');">scopes_to_string</a></tt><tt class="py-op">(</tt><tt class="py-name">scope</tt><tt class="py-op">)</tt><tt class="py-op">}</tt> </tt>
-<a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-17" class="py-name" targets="Function oauth2client.multistore_file.get_credential_storage_custom_key()=oauth2client.multistore_file-module.html#get_credential_storage_custom_key"><a title="oauth2client.multistore_file.get_credential_storage_custom_key" class="py-name" href="#" onclick="return doclink('link-17', 'get_credential_storage_custom_key', 'link-17');">get_credential_storage_custom_key</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"> <tt id="link-18" class="py-name" targets="Method oauth2client.locked_file.LockedFile.filename()=oauth2client.locked_file.LockedFile-class.html#filename,Method oauth2client.locked_file._Opener.filename()=oauth2client.locked_file._Opener-class.html#filename"><a title="oauth2client.locked_file.LockedFile.filename
+<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"><tt class="py-comment"># A dict from 'filename'->_MultiStore instances</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"><tt id="link-12" class="py-name" targets="Variable oauth2client.multistore_file._multistores=oauth2client.multistore_file-module.html#_multistores"><a title="oauth2client.multistore_file._multistores" class="py-name" href="#" onclick="return doclink('link-12', '_multistores', 'link-12');">_multistores</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"><tt id="link-13" class="py-name" targets="Variable oauth2client.multistore_file._multistores_lock=oauth2client.multistore_file-module.html#_multistores_lock"><a title="oauth2client.multistore_file._multistores_lock" class="py-name" href="#" onclick="return doclink('link-13', '_multistores_lock', 'link-13');">_multistores_lock</a></tt> <tt class="py-op">=</tt> <tt class="py-name">threading</tt><tt class="py-op">.</tt><tt class="py-name">Lock</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="Error"></a><div id="Error-def"><a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt> <a class="py-toggle" href="#" id="Error-toggle" onclick="return toggle('Error');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.multistore_file.Error-class.html">Error</a><tt class="py-op">(</tt><tt class="py-base-class">Exception</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="Error-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="Error-expanded"><a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"> <tt class="py-docstring">"""Base error for this module."""</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"> </tt>
+<a name="NewerCredentialStoreError"></a><div id="NewerCredentialStoreError-def"><a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt> <a class="py-toggle" href="#" id="NewerCredentialStoreError-toggle" onclick="return toggle('NewerCredentialStoreError');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.multistore_file.NewerCredentialStoreError-class.html">NewerCredentialStoreError</a><tt class="py-op">(</tt><tt class="py-base-class">Error</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="NewerCredentialStoreError-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="NewerCredentialStoreError-expanded"><a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"> <tt class="py-docstring">"""The credential store is a newer version that supported."""</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"> </tt>
+<a name="get_credential_storage"></a><div id="get_credential_storage-def"><a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"><tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-14" class="py-name" targets="Function oauth2client.util.positional()=oauth2client.util-module.html#positional"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-14', 'positional', 'link-14');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">4</tt><tt class="py-op">)</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt> <a class="py-toggle" href="#" id="get_credential_storage-toggle" onclick="return toggle('get_credential_storage');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file-module.html#get_credential_storage">get_credential_storage</a><tt class="py-op">(</tt><tt class="py-param">filename</tt><tt class="py-op">,</tt> <tt class="py-param">client_id</tt><tt class="py-op">,</tt> <tt class="py-param">user_agent</tt><tt class="py-op">,</tt> <tt class="py-param">scope</tt><tt class="py-op">,</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"> <tt class="py-param">warn_on_readonly</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="get_credential_storage-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="get_credential_storage-expanded"><a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"> <tt class="py-docstring">"""Get a Storage instance for a credential.</tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"><tt class="py-docstring"> filename: The JSON file storing a set of credentials</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"><tt class="py-docstring"> client_id: The client_id for the credential</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"><tt class="py-docstring"> user_agent: The user agent for the credential</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"><tt class="py-docstring"> scope: string or iterable of strings, Scope(s) being requested</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"><tt class="py-docstring"> warn_on_readonly: if True, log a warning if the store is readonly</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"><tt class="py-docstring"> An object derived from client.Storage for getting/setting the</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"><tt class="py-docstring"> credential.</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"> <tt class="py-comment"># Recreate the legacy key with these specific parameters</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"> <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'clientId'</tt><tt class="py-op">:</tt> <tt class="py-name">client_id</tt><tt class="py-op">,</tt> <tt class="py-string">'userAgent'</tt><tt class="py-op">:</tt> <tt class="py-name">user_agent</tt><tt class="py-op">,</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"> <tt class="py-string">'scope'</tt><tt class="py-op">:</tt> <tt id="link-15" class="py-name"><a title="oauth2client.util" class="py-name" href="#" onclick="return doclink('link-15', 'util', 'link-8');">util</a></tt><tt class="py-op">.</tt><tt id="link-16" class="py-name" targets="Function oauth2client.util.scopes_to_string()=oauth2client.util-module.html#scopes_to_string"><a title="oauth2client.util.scopes_to_string" class="py-name" href="#" onclick="return doclink('link-16', 'scopes_to_string', 'link-16');">scopes_to_string</a></tt><tt class="py-op">(</tt><tt class="py-name">scope</tt><tt class="py-op">)</tt><tt class="py-op">}</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-17" class="py-name" targets="Function oauth2client.multistore_file.get_credential_storage_custom_key()=oauth2client.multistore_file-module.html#get_credential_storage_custom_key"><a title="oauth2client.multistore_file.get_credential_storage_custom_key" class="py-name" href="#" onclick="return doclink('link-17', 'get_credential_storage_custom_key', 'link-17');">get_credential_storage_custom_key</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"> <tt id="link-18" class="py-name" targets="Method oauth2client.locked_file.LockedFile.filename()=oauth2client.locked_file.LockedFile-class.html#filename,Method oauth2client.locked_file._Opener.filename()=oauth2client.locked_file._Opener-class.html#filename"><a title="oauth2client.locked_file.LockedFile.filename
oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-18', 'filename', 'link-18');">filename</a></tt><tt class="py-op">,</tt> <tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">warn_on_readonly</tt><tt class="py-op">=</tt><tt class="py-name">warn_on_readonly</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"> </tt>
-<a name="get_credential_storage_custom_string_key"></a><div id="get_credential_storage_custom_string_key-def"><a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"> </tt>
-<a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"><tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-19" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-19', 'positional', 'link-14');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
-<a name="L87"></a><tt class="py-lineno"> 87</tt> <a class="py-toggle" href="#" id="get_credential_storage_custom_string_key-toggle" onclick="return toggle('get_credential_storage_custom_string_key');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file-module.html#get_credential_storage_custom_string_key">get_credential_storage_custom_string_key</a><tt class="py-op">(</tt> </tt>
-<a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"> <tt class="py-param">filename</tt><tt class="py-op">,</tt> <tt class="py-param">key_string</tt><tt class="py-op">,</tt> <tt class="py-param">warn_on_readonly</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="get_credential_storage_custom_string_key-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="get_credential_storage_custom_string_key-expanded"><a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> <tt class="py-docstring">"""Get a Storage instance for a credential using a single string as a key.</tt> </tt>
-<a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"><tt class="py-docstring"> Allows you to provide a string as a custom key that will be used for</tt> </tt>
-<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"><tt class="py-docstring"> credential storage and retrieval.</tt> </tt>
-<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"><tt class="py-docstring"> filename: The JSON file storing a set of credentials</tt> </tt>
-<a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"><tt class="py-docstring"> key_string: A string to use as the key for storing this credential.</tt> </tt>
-<a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"><tt class="py-docstring"> warn_on_readonly: if True, log a warning if the store is readonly</tt> </tt>
-<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"><tt class="py-docstring"> An object derived from client.Storage for getting/setting the</tt> </tt>
-<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"><tt class="py-docstring"> credential.</tt> </tt>
-<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"> <tt class="py-comment"># Create a key dictionary that can be used</tt> </tt>
-<a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"> <tt class="py-name">key_dict</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'key'</tt><tt class="py-op">:</tt> <tt class="py-name">key_string</tt><tt class="py-op">}</tt> </tt>
-<a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-20" class="py-name"><a title="oauth2client.multistore_file.get_credential_storage_custom_key" class="py-name" href="#" onclick="return doclink('link-20', 'get_credential_storage_custom_key', 'link-17');">get_credential_storage_custom_key</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"> <tt id="link-21" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
+</div><a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"> </tt>
+<a name="get_credential_storage_custom_string_key"></a><div id="get_credential_storage_custom_string_key-def"><a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"><tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-19" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-19', 'positional', 'link-14');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt> <a class="py-toggle" href="#" id="get_credential_storage_custom_string_key-toggle" onclick="return toggle('get_credential_storage_custom_string_key');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file-module.html#get_credential_storage_custom_string_key">get_credential_storage_custom_string_key</a><tt class="py-op">(</tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"> <tt class="py-param">filename</tt><tt class="py-op">,</tt> <tt class="py-param">key_string</tt><tt class="py-op">,</tt> <tt class="py-param">warn_on_readonly</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="get_credential_storage_custom_string_key-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="get_credential_storage_custom_string_key-expanded"><a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"> <tt class="py-docstring">"""Get a Storage instance for a credential using a single string as a key.</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"><tt class="py-docstring"> Allows you to provide a string as a custom key that will be used for</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"><tt class="py-docstring"> credential storage and retrieval.</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"><tt class="py-docstring"> filename: The JSON file storing a set of credentials</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"><tt class="py-docstring"> key_string: A string to use as the key for storing this credential.</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"><tt class="py-docstring"> warn_on_readonly: if True, log a warning if the store is readonly</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"><tt class="py-docstring"> An object derived from client.Storage for getting/setting the</tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"><tt class="py-docstring"> credential.</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> <tt class="py-comment"># Create a key dictionary that can be used</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"> <tt class="py-name">key_dict</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'key'</tt><tt class="py-op">:</tt> <tt class="py-name">key_string</tt><tt class="py-op">}</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-20" class="py-name"><a title="oauth2client.multistore_file.get_credential_storage_custom_key" class="py-name" href="#" onclick="return doclink('link-20', 'get_credential_storage_custom_key', 'link-17');">get_credential_storage_custom_key</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"> <tt id="link-21" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-21', 'filename', 'link-18');">filename</a></tt><tt class="py-op">,</tt> <tt class="py-name">key_dict</tt><tt class="py-op">,</tt> <tt class="py-name">warn_on_readonly</tt><tt class="py-op">=</tt><tt class="py-name">warn_on_readonly</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"> </tt>
-<a name="get_credential_storage_custom_key"></a><div id="get_credential_storage_custom_key-def"><a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"> </tt>
-<a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"><tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-22" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-22', 'positional', 'link-14');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
-<a name="L110"></a><tt class="py-lineno">110</tt> <a class="py-toggle" href="#" id="get_credential_storage_custom_key-toggle" onclick="return toggle('get_credential_storage_custom_key');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file-module.html#get_credential_storage_custom_key">get_credential_storage_custom_key</a><tt class="py-op">(</tt> </tt>
-<a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"> <tt class="py-param">filename</tt><tt class="py-op">,</tt> <tt class="py-param">key_dict</tt><tt class="py-op">,</tt> <tt class="py-param">warn_on_readonly</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="get_credential_storage_custom_key-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="get_credential_storage_custom_key-expanded"><a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"> <tt class="py-docstring">"""Get a Storage instance for a credential using a dictionary as a key.</tt> </tt>
-<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"><tt class="py-docstring"> Allows you to provide a dictionary as a custom key that will be used for</tt> </tt>
-<a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"><tt class="py-docstring"> credential storage and retrieval.</tt> </tt>
-<a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"><tt class="py-docstring"> filename: The JSON file storing a set of credentials</tt> </tt>
-<a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"><tt class="py-docstring"> key_dict: A dictionary to use as the key for storing this credential. There</tt> </tt>
-<a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"><tt class="py-docstring"> is no ordering of the keys in the dictionary. Logically equivalent</tt> </tt>
-<a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"><tt class="py-docstring"> dictionaries will produce equivalent storage keys.</tt> </tt>
-<a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"><tt class="py-docstring"> warn_on_readonly: if True, log a warning if the store is readonly</tt> </tt>
-<a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"><tt class="py-docstring"> An object derived from client.Storage for getting/setting the</tt> </tt>
-<a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"><tt class="py-docstring"> credential.</tt> </tt>
-<a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"> <tt id="link-23" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
-oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-23', 'filename', 'link-18');">filename</a></tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">expanduser</tt><tt class="py-op">(</tt><tt id="link-24" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
-oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-24', 'filename', 'link-18');">filename</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"> <tt id="link-25" class="py-name"><a title="oauth2client.multistore_file._multistores_lock" class="py-name" href="#" onclick="return doclink('link-25', '_multistores_lock', 'link-13');">_multistores_lock</a></tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"> <tt class="py-name">multistore</tt> <tt class="py-op">=</tt> <tt id="link-26" class="py-name"><a title="oauth2client.multistore_file._multistores" class="py-name" href="#" onclick="return doclink('link-26', '_multistores', 'link-12');">_multistores</a></tt><tt class="py-op">.</tt><tt class="py-name">setdefault</tt><tt class="py-op">(</tt> </tt>
-<a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"> <tt id="link-27" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
-oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-27', 'filename', 'link-18');">filename</a></tt><tt class="py-op">,</tt> <tt id="link-28" class="py-name" targets="Class oauth2client.multistore_file._MultiStore=oauth2client.multistore_file._MultiStore-class.html"><a title="oauth2client.multistore_file._MultiStore" class="py-name" href="#" onclick="return doclink('link-28', '_MultiStore', 'link-28');">_MultiStore</a></tt><tt class="py-op">(</tt><tt id="link-29" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
-oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-29', 'filename', 'link-18');">filename</a></tt><tt class="py-op">,</tt> <tt class="py-name">warn_on_readonly</tt><tt class="py-op">=</tt><tt class="py-name">warn_on_readonly</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt>
-<a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"> <tt id="link-30" class="py-name"><a title="oauth2client.multistore_file._multistores_lock" class="py-name" href="#" onclick="return doclink('link-30', '_multistores_lock', 'link-13');">_multistores_lock</a></tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"> <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt id="link-31" class="py-name"><a title="oauth2client.util" class="py-name" href="#" onclick="return doclink('link-31', 'util', 'link-8');">util</a></tt><tt class="py-op">.</tt><tt id="link-32" class="py-name" targets="Function oauth2client.util.dict_to_tuple_key()=oauth2client.util-module.html#dict_to_tuple_key"><a title="oauth2client.util.dict_to_tuple_key" class="py-name" href="#" onclick="return doclink('link-32', 'dict_to_tuple_key', 'link-32');">dict_to_tuple_key</a></tt><tt class="py-op">(</tt><tt class="py-name">key_dict</tt><tt class="py-op">)</tt> </tt>
-<a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">multistore</tt><tt class="py-op">.</tt><tt id="link-33" class="py-name" targets="Method oauth2client.multistore_file._MultiStore._get_storage()=oauth2client.multistore_file._MultiStore-class.html#_get_storage"><a title="oauth2client.multistore_file._MultiStore._get_storage" class="py-name" href="#" onclick="return doclink('link-33', '_get_storage', 'link-33');">_get_storage</a></tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"> </tt>
-<a name="_MultiStore"></a><div id="_MultiStore-def"><a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"> </tt>
-<a name="L139"></a><tt class="py-lineno">139</tt> <a class="py-toggle" href="#" id="_MultiStore-toggle" onclick="return toggle('_MultiStore');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html">_MultiStore</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_MultiStore-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_MultiStore-expanded"><a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"> <tt class="py-docstring">"""A file backed store for multiple credentials."""</tt> </tt>
-<a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"> </tt>
-<a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-34', 'positional', 'link-14');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
-<a name="_MultiStore.__init__"></a><div id="_MultiStore.__init__-def"><a name="L143"></a><tt class="py-lineno">143</tt> <a class="py-toggle" href="#" id="_MultiStore.__init__-toggle" onclick="return toggle('_MultiStore.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">filename</tt><tt class="py-op">,</tt> <tt class="py-param">warn_on_readonly</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_MultiStore.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore.__init__-expanded"><a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"> <tt class="py-docstring">"""Initialize the class.</tt> </tt>
-<a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"><tt class="py-docstring"> This will create the file if necessary.</tt> </tt>
-<a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_file</tt> <tt class="py-op">=</tt> <tt id="link-35" class="py-name"><a title="oauth2client.locked_file.LockedFile" class="py-name" href="#" onclick="return doclink('link-35', 'LockedFile', 'link-10');">LockedFile</a></tt><tt class="py-op">(</tt><tt id="link-36" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
-oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-36', 'filename', 'link-18');">filename</a></tt><tt class="py-op">,</tt> <tt class="py-string">'r+b'</tt><tt class="py-op">,</tt> <tt class="py-string">'rb'</tt><tt class="py-op">)</tt> </tt>
-<a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_thread_lock</tt> <tt class="py-op">=</tt> <tt class="py-name">threading</tt><tt class="py-op">.</tt><tt class="py-name">Lock</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_read_only</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
-<a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_warn_on_readonly</tt> <tt class="py-op">=</tt> <tt class="py-name">warn_on_readonly</tt> </tt>
-<a name="L152"></a><tt class="py-lineno">152</tt> <tt class="py-line"> </tt>
-<a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-37" class="py-name" targets="Method oauth2client.file.Storage._create_file_if_needed()=oauth2client.file.Storage-class.html#_create_file_if_needed,Method oauth2client.multistore_file._MultiStore._create_file_if_needed()=oauth2client.multistore_file._MultiStore-class.html#_create_file_if_needed"><a title="oauth2client.file.Storage._create_file_if_needed
-oauth2client.multistore_file._MultiStore._create_file_if_needed" class="py-name" href="#" onclick="return doclink('link-37', '_create_file_if_needed', 'link-37');">_create_file_if_needed</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"> </tt>
-<a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"> <tt class="py-comment"># Cache of deserialized store. This is only valid after the</tt> </tt>
-<a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"> <tt class="py-comment"># _MultiStore is locked or _refresh_data_cache is called. This is</tt> </tt>
-<a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"> <tt class="py-comment"># of the form of:</tt> </tt>
-<a name="L158"></a><tt class="py-lineno">158</tt> <tt class="py-line"> <tt class="py-comment">#</tt> </tt>
-<a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"> <tt class="py-comment"># ((key, value), (key, value)...) -> OAuth2Credential</tt> </tt>
-<a name="L160"></a><tt class="py-lineno">160</tt> <tt class="py-line"> <tt class="py-comment">#</tt> </tt>
-<a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"> <tt class="py-comment"># If this is None, then the store hasn't been read yet.</tt> </tt>
-<a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-</div><a name="L163"></a><tt class="py-lineno">163</tt> <tt class="py-line"> </tt>
-<a name="_MultiStore._Storage"></a><div id="_MultiStore._Storage-def"><a name="L164"></a><tt class="py-lineno">164</tt> <a class="py-toggle" href="#" id="_MultiStore._Storage-toggle" onclick="return toggle('_MultiStore._Storage');">-</a><tt class="py-line"> <tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore._Storage-class.html">_Storage</a><tt class="py-op">(</tt><tt class="py-base-class">BaseStorage</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_MultiStore._Storage-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore._Storage-expanded"><a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"> <tt class="py-docstring">"""A Storage object that knows how to read/write a single credential."""</tt> </tt>
-<a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"> </tt>
-<a name="_MultiStore._Storage.__init__"></a><div id="_MultiStore._Storage.__init__-def"><a name="L167"></a><tt class="py-lineno">167</tt> <a class="py-toggle" href="#" id="_MultiStore._Storage.__init__-toggle" onclick="return toggle('_MultiStore._Storage.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore._Storage-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">multistore</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_MultiStore._Storage.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="_MultiStore._Storage.__init__-expanded"><a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_multistore</tt> <tt class="py-op">=</tt> <tt class="py-name">multistore</tt> </tt>
-<a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key</tt> <tt class="py-op">=</tt> <tt class="py-name">key</tt> </tt>
-</div><a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"> </tt>
-<a name="_MultiStore._Storage.acquire_lock"></a><div id="_MultiStore._Storage.acquire_lock-def"><a name="L171"></a><tt class="py-lineno">171</tt> <a class="py-toggle" href="#" id="_MultiStore._Storage.acquire_lock-toggle" onclick="return toggle('_MultiStore._Storage.acquire_lock');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore._Storage-class.html#acquire_lock">acquire_lock</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_MultiStore._Storage.acquire_lock-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="_MultiStore._Storage.acquire_lock-expanded"><a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"> <tt class="py-docstring">"""Acquires any lock necessary to access this Storage.</tt> </tt>
+</div><a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"> </tt>
+<a name="get_credential_storage_custom_key"></a><div id="get_credential_storage_custom_key-def"><a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"><tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-22" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-22', 'positional', 'link-14');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt> <a class="py-toggle" href="#" id="get_credential_storage_custom_key-toggle" onclick="return toggle('get_credential_storage_custom_key');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file-module.html#get_credential_storage_custom_key">get_credential_storage_custom_key</a><tt class="py-op">(</tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"> <tt class="py-param">filename</tt><tt class="py-op">,</tt> <tt class="py-param">key_dict</tt><tt class="py-op">,</tt> <tt class="py-param">warn_on_readonly</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="get_credential_storage_custom_key-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="get_credential_storage_custom_key-expanded"><a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"> <tt class="py-docstring">"""Get a Storage instance for a credential using a dictionary as a key.</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"><tt class="py-docstring"> Allows you to provide a dictionary as a custom key that will be used for</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"><tt class="py-docstring"> credential storage and retrieval.</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"><tt class="py-docstring"> filename: The JSON file storing a set of credentials</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"><tt class="py-docstring"> key_dict: A dictionary to use as the key for storing this credential. There</tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"><tt class="py-docstring"> is no ordering of the keys in the dictionary. Logically equivalent</tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"><tt class="py-docstring"> dictionaries will produce equivalent storage keys.</tt> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"><tt class="py-docstring"> warn_on_readonly: if True, log a warning if the store is readonly</tt> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"><tt class="py-docstring"> An object derived from client.Storage for getting/setting the</tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"><tt class="py-docstring"> credential.</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"> <tt class="py-name">multistore</tt> <tt class="py-op">=</tt> <tt id="link-23" class="py-name" targets="Function oauth2client.multistore_file._get_multistore()=oauth2client.multistore_file-module.html#_get_multistore"><a title="oauth2client.multistore_file._get_multistore" class="py-name" href="#" onclick="return doclink('link-23', '_get_multistore', 'link-23');">_get_multistore</a></tt><tt class="py-op">(</tt><tt id="link-24" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
+oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-24', 'filename', 'link-18');">filename</a></tt><tt class="py-op">,</tt> <tt class="py-name">warn_on_readonly</tt><tt class="py-op">=</tt><tt class="py-name">warn_on_readonly</tt><tt class="py-op">)</tt> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"> <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt id="link-25" class="py-name"><a title="oauth2client.util" class="py-name" href="#" onclick="return doclink('link-25', 'util', 'link-8');">util</a></tt><tt class="py-op">.</tt><tt id="link-26" class="py-name" targets="Function oauth2client.util.dict_to_tuple_key()=oauth2client.util-module.html#dict_to_tuple_key"><a title="oauth2client.util.dict_to_tuple_key" class="py-name" href="#" onclick="return doclink('link-26', 'dict_to_tuple_key', 'link-26');">dict_to_tuple_key</a></tt><tt class="py-op">(</tt><tt class="py-name">key_dict</tt><tt class="py-op">)</tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">multistore</tt><tt class="py-op">.</tt><tt id="link-27" class="py-name" targets="Method oauth2client.multistore_file._MultiStore._get_storage()=oauth2client.multistore_file._MultiStore-class.html#_get_storage"><a title="oauth2client.multistore_file._MultiStore._get_storage" class="py-name" href="#" onclick="return doclink('link-27', '_get_storage', 'link-27');">_get_storage</a></tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"> </tt>
+<a name="get_all_credential_keys"></a><div id="get_all_credential_keys-def"><a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"><tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-28" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-28', 'positional', 'link-14');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt> <a class="py-toggle" href="#" id="get_all_credential_keys-toggle" onclick="return toggle('get_all_credential_keys');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file-module.html#get_all_credential_keys">get_all_credential_keys</a><tt class="py-op">(</tt><tt class="py-param">filename</tt><tt class="py-op">,</tt> <tt class="py-param">warn_on_readonly</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="get_all_credential_keys-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="get_all_credential_keys-expanded"><a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"> <tt class="py-docstring">"""Gets all the registered credential keys in the given Multistore.</tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"><tt class="py-docstring"> filename: The JSON file storing a set of credentials</tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"><tt class="py-docstring"> warn_on_readonly: if True, log a warning if the store is readonly</tt> </tt>
+<a name="L152"></a><tt class="py-lineno">152</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"><tt class="py-docstring"> A list of the credential keys present in the file. They are returned as</tt> </tt>
+<a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"><tt class="py-docstring"> dictionaries that can be passed into get_credential_storage_custom_key to</tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"><tt class="py-docstring"> get the actual credentials.</tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt> <tt class="py-line"> <tt class="py-name">multistore</tt> <tt class="py-op">=</tt> <tt id="link-29" class="py-name"><a title="oauth2client.multistore_file._get_multistore" class="py-name" href="#" onclick="return doclink('link-29', '_get_multistore', 'link-23');">_get_multistore</a></tt><tt class="py-op">(</tt><tt id="link-30" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
+oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-30', 'filename', 'link-18');">filename</a></tt><tt class="py-op">,</tt> <tt class="py-name">warn_on_readonly</tt><tt class="py-op">=</tt><tt class="py-name">warn_on_readonly</tt><tt class="py-op">)</tt> </tt>
+<a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"> <tt class="py-name">multistore</tt><tt class="py-op">.</tt><tt id="link-31" class="py-name" targets="Method oauth2client.multistore_file._MultiStore._lock()=oauth2client.multistore_file._MultiStore-class.html#_lock"><a title="oauth2client.multistore_file._MultiStore._lock" class="py-name" href="#" onclick="return doclink('link-31', '_lock', 'link-31');">_lock</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">multistore</tt><tt class="py-op">.</tt><tt id="link-32" class="py-name" targets="Method oauth2client.multistore_file._MultiStore._get_all_credential_keys()=oauth2client.multistore_file._MultiStore-class.html#_get_all_credential_keys"><a title="oauth2client.multistore_file._MultiStore._get_all_credential_keys" class="py-name" href="#" onclick="return doclink('link-32', '_get_all_credential_keys', 'link-32');">_get_all_credential_keys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt>
+<a name="L163"></a><tt class="py-lineno">163</tt> <tt class="py-line"> <tt class="py-name">multistore</tt><tt class="py-op">.</tt><tt id="link-33" class="py-name" targets="Method oauth2client.multistore_file._MultiStore._unlock()=oauth2client.multistore_file._MultiStore-class.html#_unlock"><a title="oauth2client.multistore_file._MultiStore._unlock" class="py-name" href="#" onclick="return doclink('link-33', '_unlock', 'link-33');">_unlock</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"> </tt>
+<a name="_get_multistore"></a><div id="_get_multistore-def"><a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"> </tt>
+<a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"><tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-34', 'positional', 'link-14');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L167"></a><tt class="py-lineno">167</tt> <a class="py-toggle" href="#" id="_get_multistore-toggle" onclick="return toggle('_get_multistore');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file-module.html#_get_multistore">_get_multistore</a><tt class="py-op">(</tt><tt class="py-param">filename</tt><tt class="py-op">,</tt> <tt class="py-param">warn_on_readonly</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_get_multistore-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_get_multistore-expanded"><a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"> <tt class="py-docstring">"""A helper method to initialize the multistore with proper locking.</tt> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"><tt class="py-docstring"> filename: The JSON file storing a set of credentials</tt> </tt>
+<a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"><tt class="py-docstring"> warn_on_readonly: if True, log a warning if the store is readonly</tt> </tt>
<a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"><tt class="py-docstring"> This lock is not reentrant.</tt> </tt>
-<a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_multistore</tt><tt class="py-op">.</tt><tt id="link-38" class="py-name" targets="Method oauth2client.multistore_file._MultiStore._lock()=oauth2client.multistore_file._MultiStore-class.html#_lock"><a title="oauth2client.multistore_file._MultiStore._lock" class="py-name" href="#" onclick="return doclink('link-38', '_lock', 'link-38');">_lock</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"> </tt>
-<a name="_MultiStore._Storage.release_lock"></a><div id="_MultiStore._Storage.release_lock-def"><a name="L178"></a><tt class="py-lineno">178</tt> <a class="py-toggle" href="#" id="_MultiStore._Storage.release_lock-toggle" onclick="return toggle('_MultiStore._Storage.release_lock');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore._Storage-class.html#release_lock">release_lock</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_MultiStore._Storage.release_lock-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="_MultiStore._Storage.release_lock-expanded"><a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"> <tt class="py-docstring">"""Release the Storage lock.</tt> </tt>
-<a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"><tt class="py-docstring"> Trying to release a lock that isn't held will result in a</tt> </tt>
-<a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"><tt class="py-docstring"> RuntimeError.</tt> </tt>
-<a name="L183"></a><tt class="py-lineno">183</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_multistore</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name" targets="Method oauth2client.multistore_file._MultiStore._unlock()=oauth2client.multistore_file._MultiStore-class.html#_unlock"><a title="oauth2client.multistore_file._MultiStore._unlock" class="py-name" href="#" onclick="return doclink('link-39', '_unlock', 'link-39');">_unlock</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"><tt class="py-docstring"> A multistore object</tt> </tt>
+<a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"> <tt id="link-35" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
+oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-35', 'filename', 'link-18');">filename</a></tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">expanduser</tt><tt class="py-op">(</tt><tt id="link-36" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
+oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-36', 'filename', 'link-18');">filename</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"> <tt id="link-37" class="py-name"><a title="oauth2client.multistore_file._multistores_lock" class="py-name" href="#" onclick="return doclink('link-37', '_multistores_lock', 'link-13');">_multistores_lock</a></tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"> <tt class="py-name">multistore</tt> <tt class="py-op">=</tt> <tt id="link-38" class="py-name"><a title="oauth2client.multistore_file._multistores" class="py-name" href="#" onclick="return doclink('link-38', '_multistores', 'link-12');">_multistores</a></tt><tt class="py-op">.</tt><tt class="py-name">setdefault</tt><tt class="py-op">(</tt> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"> <tt id="link-39" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
+oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-39', 'filename', 'link-18');">filename</a></tt><tt class="py-op">,</tt> <tt id="link-40" class="py-name" targets="Class oauth2client.multistore_file._MultiStore=oauth2client.multistore_file._MultiStore-class.html"><a title="oauth2client.multistore_file._MultiStore" class="py-name" href="#" onclick="return doclink('link-40', '_MultiStore', 'link-40');">_MultiStore</a></tt><tt class="py-op">(</tt><tt id="link-41" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
+oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-41', 'filename', 'link-18');">filename</a></tt><tt class="py-op">,</tt> <tt class="py-name">warn_on_readonly</tt><tt class="py-op">=</tt><tt class="py-name">warn_on_readonly</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt>
+<a name="L183"></a><tt class="py-lineno">183</tt> <tt class="py-line"> <tt id="link-42" class="py-name"><a title="oauth2client.multistore_file._multistores_lock" class="py-name" href="#" onclick="return doclink('link-42', '_multistores_lock', 'link-13');">_multistores_lock</a></tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">multistore</tt> </tt>
</div><a name="L185"></a><tt class="py-lineno">185</tt> <tt class="py-line"> </tt>
-<a name="_MultiStore._Storage.locked_get"></a><div id="_MultiStore._Storage.locked_get-def"><a name="L186"></a><tt class="py-lineno">186</tt> <a class="py-toggle" href="#" id="_MultiStore._Storage.locked_get-toggle" onclick="return toggle('_MultiStore._Storage.locked_get');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore._Storage-class.html#locked_get">locked_get</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_MultiStore._Storage.locked_get-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="_MultiStore._Storage.locked_get-expanded"><a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"> <tt class="py-docstring">"""Retrieve credential.</tt> </tt>
-<a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L189"></a><tt class="py-lineno">189</tt> <tt class="py-line"><tt class="py-docstring"> The Storage lock must be held when this is called.</tt> </tt>
-<a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L191"></a><tt class="py-lineno">191</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"><tt class="py-docstring"> oauth2client.client.Credentials</tt> </tt>
-<a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L194"></a><tt class="py-lineno">194</tt> <tt class="py-line"> <tt class="py-name">credential</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_multistore</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name" targets="Method oauth2client.multistore_file._MultiStore._get_credential()=oauth2client.multistore_file._MultiStore-class.html#_get_credential"><a title="oauth2client.multistore_file._MultiStore._get_credential" class="py-name" href="#" onclick="return doclink('link-40', '_get_credential', 'link-40');">_get_credential</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key</tt><tt class="py-op">)</tt> </tt>
-<a name="L195"></a><tt class="py-lineno">195</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">credential</tt><tt class="py-op">:</tt> </tt>
-<a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"> <tt class="py-name">credential</tt><tt class="py-op">.</tt><tt id="link-41" class="py-name" targets="Method oauth2client.client.OAuth2Credentials.set_store()=oauth2client.client.OAuth2Credentials-class.html#set_store"><a title="oauth2client.client.OAuth2Credentials.set_store" class="py-name" href="#" onclick="return doclink('link-41', 'set_store', 'link-41');">set_store</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
-<a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">credential</tt> </tt>
-</div><a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"> </tt>
-<a name="_MultiStore._Storage.locked_put"></a><div id="_MultiStore._Storage.locked_put-def"><a name="L199"></a><tt class="py-lineno">199</tt> <a class="py-toggle" href="#" id="_MultiStore._Storage.locked_put-toggle" onclick="return toggle('_MultiStore._Storage.locked_put');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore._Storage-class.html#locked_put">locked_put</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">credentials</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_MultiStore._Storage.locked_put-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="_MultiStore._Storage.locked_put-expanded"><a name="L200"></a><tt class="py-lineno">200</tt> <tt class="py-line"> <tt class="py-docstring">"""Write a credential.</tt> </tt>
-<a name="L201"></a><tt class="py-lineno">201</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L202"></a><tt class="py-lineno">202</tt> <tt class="py-line"><tt class="py-docstring"> The Storage lock must be held when this is called.</tt> </tt>
-<a name="L203"></a><tt class="py-lineno">203</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L204"></a><tt class="py-lineno">204</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L205"></a><tt class="py-lineno">205</tt> <tt class="py-line"><tt class="py-docstring"> credentials: Credentials, the credentials to store.</tt> </tt>
-<a name="L206"></a><tt class="py-lineno">206</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L207"></a><tt class="py-lineno">207</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_multistore</tt><tt class="py-op">.</tt><tt id="link-42" class="py-name" targets="Method oauth2client.multistore_file._MultiStore._update_credential()=oauth2client.multistore_file._MultiStore-class.html#_update_credential"><a title="oauth2client.multistore_file._MultiStore._update_credential" class="py-name" href="#" onclick="return doclink('link-42', '_update_credential', 'link-42');">_update_credential</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key</tt><tt class="py-op">,</tt> <tt id="link-43" class="py-name" targets="Variable oauth2client.appengine.CredentialsModel.credentials=oauth2client.appengine.CredentialsModel-class.html#credentials,Variable oauth2client.appengine.CredentialsNDBModel.credentials=oauth2client.appengine.CredentialsNDBModel-class.html#credentials"><a title="oauth2client.appengine.CredentialsModel.credentials
-oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-43', 'credentials', 'link-43');">credentials</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L208"></a><tt class="py-lineno">208</tt> <tt class="py-line"> </tt>
-<a name="_MultiStore._Storage.locked_delete"></a><div id="_MultiStore._Storage.locked_delete-def"><a name="L209"></a><tt class="py-lineno">209</tt> <a class="py-toggle" href="#" id="_MultiStore._Storage.locked_delete-toggle" onclick="return toggle('_MultiStore._Storage.locked_delete');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore._Storage-class.html#locked_delete">locked_delete</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_MultiStore._Storage.locked_delete-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="_MultiStore._Storage.locked_delete-expanded"><a name="L210"></a><tt class="py-lineno">210</tt> <tt class="py-line"> <tt class="py-docstring">"""Delete a credential.</tt> </tt>
-<a name="L211"></a><tt class="py-lineno">211</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L212"></a><tt class="py-lineno">212</tt> <tt class="py-line"><tt class="py-docstring"> The Storage lock must be held when this is called.</tt> </tt>
-<a name="L213"></a><tt class="py-lineno">213</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L214"></a><tt class="py-lineno">214</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L215"></a><tt class="py-lineno">215</tt> <tt class="py-line"><tt class="py-docstring"> credentials: Credentials, the credentials to store.</tt> </tt>
-<a name="L216"></a><tt class="py-lineno">216</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L217"></a><tt class="py-lineno">217</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_multistore</tt><tt class="py-op">.</tt><tt id="link-44" class="py-name" targets="Method oauth2client.multistore_file._MultiStore._delete_credential()=oauth2client.multistore_file._MultiStore-class.html#_delete_credential"><a title="oauth2client.multistore_file._MultiStore._delete_credential" class="py-name" href="#" onclick="return doclink('link-44', '_delete_credential', 'link-44');">_delete_credential</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L218"></a><tt class="py-lineno">218</tt> <tt class="py-line"> </tt>
-<a name="_MultiStore._create_file_if_needed"></a><div id="_MultiStore._create_file_if_needed-def"><a name="L219"></a><tt class="py-lineno">219</tt> <a class="py-toggle" href="#" id="_MultiStore._create_file_if_needed-toggle" onclick="return toggle('_MultiStore._create_file_if_needed');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html#_create_file_if_needed">_create_file_if_needed</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_MultiStore._create_file_if_needed-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore._create_file_if_needed-expanded"><a name="L220"></a><tt class="py-lineno">220</tt> <tt class="py-line"> <tt class="py-docstring">"""Create an empty file if necessary.</tt> </tt>
+<a name="_MultiStore"></a><div id="_MultiStore-def"><a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt> <a class="py-toggle" href="#" id="_MultiStore-toggle" onclick="return toggle('_MultiStore');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html">_MultiStore</a><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_MultiStore-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_MultiStore-expanded"><a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"> <tt class="py-docstring">"""A file backed store for multiple credentials."""</tt> </tt>
+<a name="L189"></a><tt class="py-lineno">189</tt> <tt class="py-line"> </tt>
+<a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"> <tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-43" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-43', 'positional', 'link-14');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="_MultiStore.__init__"></a><div id="_MultiStore.__init__-def"><a name="L191"></a><tt class="py-lineno">191</tt> <a class="py-toggle" href="#" id="_MultiStore.__init__-toggle" onclick="return toggle('_MultiStore.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">filename</tt><tt class="py-op">,</tt> <tt class="py-param">warn_on_readonly</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_MultiStore.__init__-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore.__init__-expanded"><a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"> <tt class="py-docstring">"""Initialize the class.</tt> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L194"></a><tt class="py-lineno">194</tt> <tt class="py-line"><tt class="py-docstring"> This will create the file if necessary.</tt> </tt>
+<a name="L195"></a><tt class="py-lineno">195</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_file</tt> <tt class="py-op">=</tt> <tt id="link-44" class="py-name"><a title="oauth2client.locked_file.LockedFile" class="py-name" href="#" onclick="return doclink('link-44', 'LockedFile', 'link-10');">LockedFile</a></tt><tt class="py-op">(</tt><tt id="link-45" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
+oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-45', 'filename', 'link-18');">filename</a></tt><tt class="py-op">,</tt> <tt class="py-string">'r+b'</tt><tt class="py-op">,</tt> <tt class="py-string">'rb'</tt><tt class="py-op">)</tt> </tt>
+<a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_thread_lock</tt> <tt class="py-op">=</tt> <tt class="py-name">threading</tt><tt class="py-op">.</tt><tt class="py-name">Lock</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_read_only</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L199"></a><tt class="py-lineno">199</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_warn_on_readonly</tt> <tt class="py-op">=</tt> <tt class="py-name">warn_on_readonly</tt> </tt>
+<a name="L200"></a><tt class="py-lineno">200</tt> <tt class="py-line"> </tt>
+<a name="L201"></a><tt class="py-lineno">201</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-46" class="py-name" targets="Method oauth2client.file.Storage._create_file_if_needed()=oauth2client.file.Storage-class.html#_create_file_if_needed,Method oauth2client.multistore_file._MultiStore._create_file_if_needed()=oauth2client.multistore_file._MultiStore-class.html#_create_file_if_needed"><a title="oauth2client.file.Storage._create_file_if_needed
+oauth2client.multistore_file._MultiStore._create_file_if_needed" class="py-name" href="#" onclick="return doclink('link-46', '_create_file_if_needed', 'link-46');">_create_file_if_needed</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L202"></a><tt class="py-lineno">202</tt> <tt class="py-line"> </tt>
+<a name="L203"></a><tt class="py-lineno">203</tt> <tt class="py-line"> <tt class="py-comment"># Cache of deserialized store. This is only valid after the</tt> </tt>
+<a name="L204"></a><tt class="py-lineno">204</tt> <tt class="py-line"> <tt class="py-comment"># _MultiStore is locked or _refresh_data_cache is called. This is</tt> </tt>
+<a name="L205"></a><tt class="py-lineno">205</tt> <tt class="py-line"> <tt class="py-comment"># of the form of:</tt> </tt>
+<a name="L206"></a><tt class="py-lineno">206</tt> <tt class="py-line"> <tt class="py-comment">#</tt> </tt>
+<a name="L207"></a><tt class="py-lineno">207</tt> <tt class="py-line"> <tt class="py-comment"># ((key, value), (key, value)...) -> OAuth2Credential</tt> </tt>
+<a name="L208"></a><tt class="py-lineno">208</tt> <tt class="py-line"> <tt class="py-comment">#</tt> </tt>
+<a name="L209"></a><tt class="py-lineno">209</tt> <tt class="py-line"> <tt class="py-comment"># If this is None, then the store hasn't been read yet.</tt> </tt>
+<a name="L210"></a><tt class="py-lineno">210</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L211"></a><tt class="py-lineno">211</tt> <tt class="py-line"> </tt>
+<a name="_MultiStore._Storage"></a><div id="_MultiStore._Storage-def"><a name="L212"></a><tt class="py-lineno">212</tt> <a class="py-toggle" href="#" id="_MultiStore._Storage-toggle" onclick="return toggle('_MultiStore._Storage');">-</a><tt class="py-line"> <tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore._Storage-class.html">_Storage</a><tt class="py-op">(</tt><tt class="py-base-class">BaseStorage</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_MultiStore._Storage-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore._Storage-expanded"><a name="L213"></a><tt class="py-lineno">213</tt> <tt class="py-line"> <tt class="py-docstring">"""A Storage object that knows how to read/write a single credential."""</tt> </tt>
+<a name="L214"></a><tt class="py-lineno">214</tt> <tt class="py-line"> </tt>
+<a name="_MultiStore._Storage.__init__"></a><div id="_MultiStore._Storage.__init__-def"><a name="L215"></a><tt class="py-lineno">215</tt> <a class="py-toggle" href="#" id="_MultiStore._Storage.__init__-toggle" onclick="return toggle('_MultiStore._Storage.__init__');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore._Storage-class.html#__init__">__init__</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">multistore</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_MultiStore._Storage.__init__-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="_MultiStore._Storage.__init__-expanded"><a name="L216"></a><tt class="py-lineno">216</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_multistore</tt> <tt class="py-op">=</tt> <tt class="py-name">multistore</tt> </tt>
+<a name="L217"></a><tt class="py-lineno">217</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key</tt> <tt class="py-op">=</tt> <tt class="py-name">key</tt> </tt>
+</div><a name="L218"></a><tt class="py-lineno">218</tt> <tt class="py-line"> </tt>
+<a name="_MultiStore._Storage.acquire_lock"></a><div id="_MultiStore._Storage.acquire_lock-def"><a name="L219"></a><tt class="py-lineno">219</tt> <a class="py-toggle" href="#" id="_MultiStore._Storage.acquire_lock-toggle" onclick="return toggle('_MultiStore._Storage.acquire_lock');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore._Storage-class.html#acquire_lock">acquire_lock</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_MultiStore._Storage.acquire_lock-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="_MultiStore._Storage.acquire_lock-expanded"><a name="L220"></a><tt class="py-lineno">220</tt> <tt class="py-line"> <tt class="py-docstring">"""Acquires any lock necessary to access this Storage.</tt> </tt>
<a name="L221"></a><tt class="py-lineno">221</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L222"></a><tt class="py-lineno">222</tt> <tt class="py-line"><tt class="py-docstring"> This method will not initialize the file. Instead it implements a</tt> </tt>
-<a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"><tt class="py-docstring"> simple version of "touch" to ensure the file has been created.</tt> </tt>
-<a name="L224"></a><tt class="py-lineno">224</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L225"></a><tt class="py-lineno">225</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">exists</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_file</tt><tt class="py-op">.</tt><tt id="link-45" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
-oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-45', 'filename', 'link-18');">filename</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L226"></a><tt class="py-lineno">226</tt> <tt class="py-line"> <tt class="py-name">old_umask</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">umask</tt><tt class="py-op">(</tt><tt class="py-number">0177</tt><tt class="py-op">)</tt> </tt>
-<a name="L227"></a><tt class="py-lineno">227</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L228"></a><tt class="py-lineno">228</tt> <tt class="py-line"> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_file</tt><tt class="py-op">.</tt><tt id="link-46" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
-oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-46', 'filename', 'link-18');">filename</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">'a+b'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L229"></a><tt class="py-lineno">229</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt>
-<a name="L230"></a><tt class="py-lineno">230</tt> <tt class="py-line"> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">umask</tt><tt class="py-op">(</tt><tt class="py-name">old_umask</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L231"></a><tt class="py-lineno">231</tt> <tt class="py-line"> </tt>
-<a name="_MultiStore._lock"></a><div id="_MultiStore._lock-def"><a name="L232"></a><tt class="py-lineno">232</tt> <a class="py-toggle" href="#" id="_MultiStore._lock-toggle" onclick="return toggle('_MultiStore._lock');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html#_lock">_lock</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_MultiStore._lock-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore._lock-expanded"><a name="L233"></a><tt class="py-lineno">233</tt> <tt class="py-line"> <tt class="py-docstring">"""Lock the entire multistore."""</tt> </tt>
-<a name="L234"></a><tt class="py-lineno">234</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_thread_lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L235"></a><tt class="py-lineno">235</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_file</tt><tt class="py-op">.</tt><tt id="link-47" class="py-name" targets="Method oauth2client.locked_file.LockedFile.open_and_lock()=oauth2client.locked_file.LockedFile-class.html#open_and_lock,Method oauth2client.locked_file._Opener.open_and_lock()=oauth2client.locked_file._Opener-class.html#open_and_lock,Method oauth2client.locked_file._PosixOpener.open_and_lock()=oauth2client.locked_file._PosixOpener-class.html#open_and_lock"><a title="oauth2client.locked_file.LockedFile.open_and_lock
+<a name="L222"></a><tt class="py-lineno">222</tt> <tt class="py-line"><tt class="py-docstring"> This lock is not reentrant.</tt> </tt>
+<a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L224"></a><tt class="py-lineno">224</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_multistore</tt><tt class="py-op">.</tt><tt id="link-47" class="py-name"><a title="oauth2client.multistore_file._MultiStore._lock" class="py-name" href="#" onclick="return doclink('link-47', '_lock', 'link-31');">_lock</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L225"></a><tt class="py-lineno">225</tt> <tt class="py-line"> </tt>
+<a name="_MultiStore._Storage.release_lock"></a><div id="_MultiStore._Storage.release_lock-def"><a name="L226"></a><tt class="py-lineno">226</tt> <a class="py-toggle" href="#" id="_MultiStore._Storage.release_lock-toggle" onclick="return toggle('_MultiStore._Storage.release_lock');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore._Storage-class.html#release_lock">release_lock</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_MultiStore._Storage.release_lock-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="_MultiStore._Storage.release_lock-expanded"><a name="L227"></a><tt class="py-lineno">227</tt> <tt class="py-line"> <tt class="py-docstring">"""Release the Storage lock.</tt> </tt>
+<a name="L228"></a><tt class="py-lineno">228</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L229"></a><tt class="py-lineno">229</tt> <tt class="py-line"><tt class="py-docstring"> Trying to release a lock that isn't held will result in a</tt> </tt>
+<a name="L230"></a><tt class="py-lineno">230</tt> <tt class="py-line"><tt class="py-docstring"> RuntimeError.</tt> </tt>
+<a name="L231"></a><tt class="py-lineno">231</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L232"></a><tt class="py-lineno">232</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_multistore</tt><tt class="py-op">.</tt><tt id="link-48" class="py-name"><a title="oauth2client.multistore_file._MultiStore._unlock" class="py-name" href="#" onclick="return doclink('link-48', '_unlock', 'link-33');">_unlock</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L233"></a><tt class="py-lineno">233</tt> <tt class="py-line"> </tt>
+<a name="_MultiStore._Storage.locked_get"></a><div id="_MultiStore._Storage.locked_get-def"><a name="L234"></a><tt class="py-lineno">234</tt> <a class="py-toggle" href="#" id="_MultiStore._Storage.locked_get-toggle" onclick="return toggle('_MultiStore._Storage.locked_get');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore._Storage-class.html#locked_get">locked_get</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_MultiStore._Storage.locked_get-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="_MultiStore._Storage.locked_get-expanded"><a name="L235"></a><tt class="py-lineno">235</tt> <tt class="py-line"> <tt class="py-docstring">"""Retrieve credential.</tt> </tt>
+<a name="L236"></a><tt class="py-lineno">236</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L237"></a><tt class="py-lineno">237</tt> <tt class="py-line"><tt class="py-docstring"> The Storage lock must be held when this is called.</tt> </tt>
+<a name="L238"></a><tt class="py-lineno">238</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L239"></a><tt class="py-lineno">239</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L240"></a><tt class="py-lineno">240</tt> <tt class="py-line"><tt class="py-docstring"> oauth2client.client.Credentials</tt> </tt>
+<a name="L241"></a><tt class="py-lineno">241</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L242"></a><tt class="py-lineno">242</tt> <tt class="py-line"> <tt class="py-name">credential</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_multistore</tt><tt class="py-op">.</tt><tt id="link-49" class="py-name" targets="Method oauth2client.multistore_file._MultiStore._get_credential()=oauth2client.multistore_file._MultiStore-class.html#_get_credential"><a title="oauth2client.multistore_file._MultiStore._get_credential" class="py-name" href="#" onclick="return doclink('link-49', '_get_credential', 'link-49');">_get_credential</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key</tt><tt class="py-op">)</tt> </tt>
+<a name="L243"></a><tt class="py-lineno">243</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">credential</tt><tt class="py-op">:</tt> </tt>
+<a name="L244"></a><tt class="py-lineno">244</tt> <tt class="py-line"> <tt class="py-name">credential</tt><tt class="py-op">.</tt><tt id="link-50" class="py-name" targets="Method oauth2client.client.OAuth2Credentials.set_store()=oauth2client.client.OAuth2Credentials-class.html#set_store"><a title="oauth2client.client.OAuth2Credentials.set_store" class="py-name" href="#" onclick="return doclink('link-50', 'set_store', 'link-50');">set_store</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">)</tt> </tt>
+<a name="L245"></a><tt class="py-lineno">245</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">credential</tt> </tt>
+</div><a name="L246"></a><tt class="py-lineno">246</tt> <tt class="py-line"> </tt>
+<a name="_MultiStore._Storage.locked_put"></a><div id="_MultiStore._Storage.locked_put-def"><a name="L247"></a><tt class="py-lineno">247</tt> <a class="py-toggle" href="#" id="_MultiStore._Storage.locked_put-toggle" onclick="return toggle('_MultiStore._Storage.locked_put');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore._Storage-class.html#locked_put">locked_put</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">credentials</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_MultiStore._Storage.locked_put-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="_MultiStore._Storage.locked_put-expanded"><a name="L248"></a><tt class="py-lineno">248</tt> <tt class="py-line"> <tt class="py-docstring">"""Write a credential.</tt> </tt>
+<a name="L249"></a><tt class="py-lineno">249</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L250"></a><tt class="py-lineno">250</tt> <tt class="py-line"><tt class="py-docstring"> The Storage lock must be held when this is called.</tt> </tt>
+<a name="L251"></a><tt class="py-lineno">251</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L252"></a><tt class="py-lineno">252</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L253"></a><tt class="py-lineno">253</tt> <tt class="py-line"><tt class="py-docstring"> credentials: Credentials, the credentials to store.</tt> </tt>
+<a name="L254"></a><tt class="py-lineno">254</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L255"></a><tt class="py-lineno">255</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_multistore</tt><tt class="py-op">.</tt><tt id="link-51" class="py-name" targets="Method oauth2client.multistore_file._MultiStore._update_credential()=oauth2client.multistore_file._MultiStore-class.html#_update_credential"><a title="oauth2client.multistore_file._MultiStore._update_credential" class="py-name" href="#" onclick="return doclink('link-51', '_update_credential', 'link-51');">_update_credential</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key</tt><tt class="py-op">,</tt> <tt id="link-52" class="py-name" targets="Variable oauth2client.appengine.CredentialsModel.credentials=oauth2client.appengine.CredentialsModel-class.html#credentials,Variable oauth2client.appengine.CredentialsNDBModel.credentials=oauth2client.appengine.CredentialsNDBModel-class.html#credentials,Variable oauth2client.appengine.OAuth2Decorator.credentials=oauth2client.appengine.OAuth2Decorator-class.html#credentials"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-52', 'credentials', 'link-52');">credentials</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L256"></a><tt class="py-lineno">256</tt> <tt class="py-line"> </tt>
+<a name="_MultiStore._Storage.locked_delete"></a><div id="_MultiStore._Storage.locked_delete-def"><a name="L257"></a><tt class="py-lineno">257</tt> <a class="py-toggle" href="#" id="_MultiStore._Storage.locked_delete-toggle" onclick="return toggle('_MultiStore._Storage.locked_delete');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore._Storage-class.html#locked_delete">locked_delete</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_MultiStore._Storage.locked_delete-collapsed" style="display:none;" pad="+++" indent="++++++++++"></div><div id="_MultiStore._Storage.locked_delete-expanded"><a name="L258"></a><tt class="py-lineno">258</tt> <tt class="py-line"> <tt class="py-docstring">"""Delete a credential.</tt> </tt>
+<a name="L259"></a><tt class="py-lineno">259</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L260"></a><tt class="py-lineno">260</tt> <tt class="py-line"><tt class="py-docstring"> The Storage lock must be held when this is called.</tt> </tt>
+<a name="L261"></a><tt class="py-lineno">261</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L262"></a><tt class="py-lineno">262</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L263"></a><tt class="py-lineno">263</tt> <tt class="py-line"><tt class="py-docstring"> credentials: Credentials, the credentials to store.</tt> </tt>
+<a name="L264"></a><tt class="py-lineno">264</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L265"></a><tt class="py-lineno">265</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_multistore</tt><tt class="py-op">.</tt><tt id="link-53" class="py-name" targets="Method oauth2client.multistore_file._MultiStore._delete_credential()=oauth2client.multistore_file._MultiStore-class.html#_delete_credential"><a title="oauth2client.multistore_file._MultiStore._delete_credential" class="py-name" href="#" onclick="return doclink('link-53', '_delete_credential', 'link-53');">_delete_credential</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_key</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L266"></a><tt class="py-lineno">266</tt> <tt class="py-line"> </tt>
+<a name="_MultiStore._create_file_if_needed"></a><div id="_MultiStore._create_file_if_needed-def"><a name="L267"></a><tt class="py-lineno">267</tt> <a class="py-toggle" href="#" id="_MultiStore._create_file_if_needed-toggle" onclick="return toggle('_MultiStore._create_file_if_needed');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html#_create_file_if_needed">_create_file_if_needed</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_MultiStore._create_file_if_needed-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore._create_file_if_needed-expanded"><a name="L268"></a><tt class="py-lineno">268</tt> <tt class="py-line"> <tt class="py-docstring">"""Create an empty file if necessary.</tt> </tt>
+<a name="L269"></a><tt class="py-lineno">269</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L270"></a><tt class="py-lineno">270</tt> <tt class="py-line"><tt class="py-docstring"> This method will not initialize the file. Instead it implements a</tt> </tt>
+<a name="L271"></a><tt class="py-lineno">271</tt> <tt class="py-line"><tt class="py-docstring"> simple version of "touch" to ensure the file has been created.</tt> </tt>
+<a name="L272"></a><tt class="py-lineno">272</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L273"></a><tt class="py-lineno">273</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">exists</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_file</tt><tt class="py-op">.</tt><tt id="link-54" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
+oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-54', 'filename', 'link-18');">filename</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L274"></a><tt class="py-lineno">274</tt> <tt class="py-line"> <tt class="py-name">old_umask</tt> <tt class="py-op">=</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">umask</tt><tt class="py-op">(</tt><tt class="py-number">0177</tt><tt class="py-op">)</tt> </tt>
+<a name="L275"></a><tt class="py-lineno">275</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L276"></a><tt class="py-lineno">276</tt> <tt class="py-line"> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_file</tt><tt class="py-op">.</tt><tt id="link-55" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
+oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-55', 'filename', 'link-18');">filename</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">'a+b'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">close</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L277"></a><tt class="py-lineno">277</tt> <tt class="py-line"> <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt>
+<a name="L278"></a><tt class="py-lineno">278</tt> <tt class="py-line"> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">umask</tt><tt class="py-op">(</tt><tt class="py-name">old_umask</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L279"></a><tt class="py-lineno">279</tt> <tt class="py-line"> </tt>
+<a name="_MultiStore._lock"></a><div id="_MultiStore._lock-def"><a name="L280"></a><tt class="py-lineno">280</tt> <a class="py-toggle" href="#" id="_MultiStore._lock-toggle" onclick="return toggle('_MultiStore._lock');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html#_lock">_lock</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_MultiStore._lock-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore._lock-expanded"><a name="L281"></a><tt class="py-lineno">281</tt> <tt class="py-line"> <tt class="py-docstring">"""Lock the entire multistore."""</tt> </tt>
+<a name="L282"></a><tt class="py-lineno">282</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_thread_lock</tt><tt class="py-op">.</tt><tt class="py-name">acquire</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L283"></a><tt class="py-lineno">283</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_file</tt><tt class="py-op">.</tt><tt id="link-56" class="py-name" targets="Method oauth2client.locked_file.LockedFile.open_and_lock()=oauth2client.locked_file.LockedFile-class.html#open_and_lock,Method oauth2client.locked_file._Opener.open_and_lock()=oauth2client.locked_file._Opener-class.html#open_and_lock,Method oauth2client.locked_file._PosixOpener.open_and_lock()=oauth2client.locked_file._PosixOpener-class.html#open_and_lock"><a title="oauth2client.locked_file.LockedFile.open_and_lock
oauth2client.locked_file._Opener.open_and_lock
-oauth2client.locked_file._PosixOpener.open_and_lock" class="py-name" href="#" onclick="return doclink('link-47', 'open_and_lock', 'link-47');">open_and_lock</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L236"></a><tt class="py-lineno">236</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_file</tt><tt class="py-op">.</tt><tt id="link-48" class="py-name" targets="Method oauth2client.locked_file.LockedFile.is_locked()=oauth2client.locked_file.LockedFile-class.html#is_locked,Method oauth2client.locked_file._Opener.is_locked()=oauth2client.locked_file._Opener-class.html#is_locked"><a title="oauth2client.locked_file.LockedFile.is_locked
-oauth2client.locked_file._Opener.is_locked" class="py-name" href="#" onclick="return doclink('link-48', 'is_locked', 'link-48');">is_locked</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L237"></a><tt class="py-lineno">237</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_read_only</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
-<a name="L238"></a><tt class="py-lineno">238</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_warn_on_readonly</tt><tt class="py-op">:</tt> </tt>
-<a name="L239"></a><tt class="py-lineno">239</tt> <tt class="py-line"> <tt id="link-49" class="py-name"><a title="apiclient.discovery.logger
+oauth2client.locked_file._PosixOpener.open_and_lock" class="py-name" href="#" onclick="return doclink('link-56', 'open_and_lock', 'link-56');">open_and_lock</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L284"></a><tt class="py-lineno">284</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_file</tt><tt class="py-op">.</tt><tt id="link-57" class="py-name" targets="Method oauth2client.locked_file.LockedFile.is_locked()=oauth2client.locked_file.LockedFile-class.html#is_locked,Method oauth2client.locked_file._Opener.is_locked()=oauth2client.locked_file._Opener-class.html#is_locked"><a title="oauth2client.locked_file.LockedFile.is_locked
+oauth2client.locked_file._Opener.is_locked" class="py-name" href="#" onclick="return doclink('link-57', 'is_locked', 'link-57');">is_locked</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L285"></a><tt class="py-lineno">285</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_read_only</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L286"></a><tt class="py-lineno">286</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_warn_on_readonly</tt><tt class="py-op">:</tt> </tt>
+<a name="L287"></a><tt class="py-lineno">287</tt> <tt class="py-line"> <tt id="link-58" class="py-name"><a title="apiclient.discovery.logger
oauth2client.appengine.logger
oauth2client.client.logger
oauth2client.crypt.logger
oauth2client.gce.logger
oauth2client.locked_file.logger
oauth2client.multistore_file.logger
-oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-49', 'logger', 'link-11');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">'The credentials file (%s) is not writable. Opening in '</tt> </tt>
-<a name="L240"></a><tt class="py-lineno">240</tt> <tt class="py-line"> <tt class="py-string">'read-only mode. Any refreshed credentials will only be '</tt> </tt>
-<a name="L241"></a><tt class="py-lineno">241</tt> <tt class="py-line"> <tt class="py-string">'valid for this run.'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_file</tt><tt class="py-op">.</tt><tt id="link-50" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
-oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-50', 'filename', 'link-18');">filename</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L242"></a><tt class="py-lineno">242</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">getsize</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_file</tt><tt class="py-op">.</tt><tt id="link-51" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
-oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-51', 'filename', 'link-18');">filename</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
-<a name="L243"></a><tt class="py-lineno">243</tt> <tt class="py-line"> <tt id="link-52" class="py-name"><a title="apiclient.discovery.logger
+oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-58', 'logger', 'link-11');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">'The credentials file (%s) is not writable. Opening in '</tt> </tt>
+<a name="L288"></a><tt class="py-lineno">288</tt> <tt class="py-line"> <tt class="py-string">'read-only mode. Any refreshed credentials will only be '</tt> </tt>
+<a name="L289"></a><tt class="py-lineno">289</tt> <tt class="py-line"> <tt class="py-string">'valid for this run.'</tt> <tt class="py-op">%</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_file</tt><tt class="py-op">.</tt><tt id="link-59" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
+oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-59', 'filename', 'link-18');">filename</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L290"></a><tt class="py-lineno">290</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">os</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">getsize</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_file</tt><tt class="py-op">.</tt><tt id="link-60" class="py-name"><a title="oauth2client.locked_file.LockedFile.filename
+oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-60', 'filename', 'link-18');">filename</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">0</tt><tt class="py-op">:</tt> </tt>
+<a name="L291"></a><tt class="py-lineno">291</tt> <tt class="py-line"> <tt id="link-61" class="py-name"><a title="apiclient.discovery.logger
oauth2client.appengine.logger
oauth2client.client.logger
oauth2client.crypt.logger
oauth2client.gce.logger
oauth2client.locked_file.logger
oauth2client.multistore_file.logger
-oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-52', 'logger', 'link-11');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">'Initializing empty multistore file'</tt><tt class="py-op">)</tt> </tt>
-<a name="L244"></a><tt class="py-lineno">244</tt> <tt class="py-line"> <tt class="py-comment"># The multistore is empty so write out an empty file.</tt> </tt>
-<a name="L245"></a><tt class="py-lineno">245</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-<a name="L246"></a><tt class="py-lineno">246</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-53" class="py-name" targets="Method oauth2client.multistore_file._MultiStore._write()=oauth2client.multistore_file._MultiStore-class.html#_write"><a title="oauth2client.multistore_file._MultiStore._write" class="py-name" href="#" onclick="return doclink('link-53', '_write', 'link-53');">_write</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L247"></a><tt class="py-lineno">247</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_read_only</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L248"></a><tt class="py-lineno">248</tt> <tt class="py-line"> <tt class="py-comment"># Only refresh the data if we are read/write or we haven't</tt> </tt>
-<a name="L249"></a><tt class="py-lineno">249</tt> <tt class="py-line"> <tt class="py-comment"># cached the data yet. If we are readonly, we assume is isn't</tt> </tt>
-<a name="L250"></a><tt class="py-lineno">250</tt> <tt class="py-line"> <tt class="py-comment"># changing out from under us and that we only have to read it</tt> </tt>
-<a name="L251"></a><tt class="py-lineno">251</tt> <tt class="py-line"> <tt class="py-comment"># once. This prevents us from whacking any new access keys that</tt> </tt>
-<a name="L252"></a><tt class="py-lineno">252</tt> <tt class="py-line"> <tt class="py-comment"># we have cached in memory but were unable to write out.</tt> </tt>
-<a name="L253"></a><tt class="py-lineno">253</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-54" class="py-name" targets="Method oauth2client.multistore_file._MultiStore._refresh_data_cache()=oauth2client.multistore_file._MultiStore-class.html#_refresh_data_cache"><a title="oauth2client.multistore_file._MultiStore._refresh_data_cache" class="py-name" href="#" onclick="return doclink('link-54', '_refresh_data_cache', 'link-54');">_refresh_data_cache</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L254"></a><tt class="py-lineno">254</tt> <tt class="py-line"> </tt>
-<a name="_MultiStore._unlock"></a><div id="_MultiStore._unlock-def"><a name="L255"></a><tt class="py-lineno">255</tt> <a class="py-toggle" href="#" id="_MultiStore._unlock-toggle" onclick="return toggle('_MultiStore._unlock');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html#_unlock">_unlock</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_MultiStore._unlock-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore._unlock-expanded"><a name="L256"></a><tt class="py-lineno">256</tt> <tt class="py-line"> <tt class="py-docstring">"""Release the lock on the multistore."""</tt> </tt>
-<a name="L257"></a><tt class="py-lineno">257</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_file</tt><tt class="py-op">.</tt><tt id="link-55" class="py-name" targets="Method oauth2client.locked_file.LockedFile.unlock_and_close()=oauth2client.locked_file.LockedFile-class.html#unlock_and_close,Method oauth2client.locked_file._Opener.unlock_and_close()=oauth2client.locked_file._Opener-class.html#unlock_and_close,Method oauth2client.locked_file._PosixOpener.unlock_and_close()=oauth2client.locked_file._PosixOpener-class.html#unlock_and_close"><a title="oauth2client.locked_file.LockedFile.unlock_and_close
+oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-61', 'logger', 'link-11');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">'Initializing empty multistore file'</tt><tt class="py-op">)</tt> </tt>
+<a name="L292"></a><tt class="py-lineno">292</tt> <tt class="py-line"> <tt class="py-comment"># The multistore is empty so write out an empty file.</tt> </tt>
+<a name="L293"></a><tt class="py-lineno">293</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L294"></a><tt class="py-lineno">294</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-62" class="py-name" targets="Method oauth2client.multistore_file._MultiStore._write()=oauth2client.multistore_file._MultiStore-class.html#_write"><a title="oauth2client.multistore_file._MultiStore._write" class="py-name" href="#" onclick="return doclink('link-62', '_write', 'link-62');">_write</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L295"></a><tt class="py-lineno">295</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-keyword">not</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_read_only</tt> <tt class="py-keyword">or</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L296"></a><tt class="py-lineno">296</tt> <tt class="py-line"> <tt class="py-comment"># Only refresh the data if we are read/write or we haven't</tt> </tt>
+<a name="L297"></a><tt class="py-lineno">297</tt> <tt class="py-line"> <tt class="py-comment"># cached the data yet. If we are readonly, we assume is isn't</tt> </tt>
+<a name="L298"></a><tt class="py-lineno">298</tt> <tt class="py-line"> <tt class="py-comment"># changing out from under us and that we only have to read it</tt> </tt>
+<a name="L299"></a><tt class="py-lineno">299</tt> <tt class="py-line"> <tt class="py-comment"># once. This prevents us from whacking any new access keys that</tt> </tt>
+<a name="L300"></a><tt class="py-lineno">300</tt> <tt class="py-line"> <tt class="py-comment"># we have cached in memory but were unable to write out.</tt> </tt>
+<a name="L301"></a><tt class="py-lineno">301</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-63" class="py-name" targets="Method oauth2client.multistore_file._MultiStore._refresh_data_cache()=oauth2client.multistore_file._MultiStore-class.html#_refresh_data_cache"><a title="oauth2client.multistore_file._MultiStore._refresh_data_cache" class="py-name" href="#" onclick="return doclink('link-63', '_refresh_data_cache', 'link-63');">_refresh_data_cache</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L302"></a><tt class="py-lineno">302</tt> <tt class="py-line"> </tt>
+<a name="_MultiStore._unlock"></a><div id="_MultiStore._unlock-def"><a name="L303"></a><tt class="py-lineno">303</tt> <a class="py-toggle" href="#" id="_MultiStore._unlock-toggle" onclick="return toggle('_MultiStore._unlock');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html#_unlock">_unlock</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_MultiStore._unlock-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore._unlock-expanded"><a name="L304"></a><tt class="py-lineno">304</tt> <tt class="py-line"> <tt class="py-docstring">"""Release the lock on the multistore."""</tt> </tt>
+<a name="L305"></a><tt class="py-lineno">305</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_file</tt><tt class="py-op">.</tt><tt id="link-64" class="py-name" targets="Method oauth2client.locked_file.LockedFile.unlock_and_close()=oauth2client.locked_file.LockedFile-class.html#unlock_and_close,Method oauth2client.locked_file._Opener.unlock_and_close()=oauth2client.locked_file._Opener-class.html#unlock_and_close,Method oauth2client.locked_file._PosixOpener.unlock_and_close()=oauth2client.locked_file._PosixOpener-class.html#unlock_and_close"><a title="oauth2client.locked_file.LockedFile.unlock_and_close
oauth2client.locked_file._Opener.unlock_and_close
-oauth2client.locked_file._PosixOpener.unlock_and_close" class="py-name" href="#" onclick="return doclink('link-55', 'unlock_and_close', 'link-55');">unlock_and_close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L258"></a><tt class="py-lineno">258</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_thread_lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L259"></a><tt class="py-lineno">259</tt> <tt class="py-line"> </tt>
-<a name="_MultiStore._locked_json_read"></a><div id="_MultiStore._locked_json_read-def"><a name="L260"></a><tt class="py-lineno">260</tt> <a class="py-toggle" href="#" id="_MultiStore._locked_json_read-toggle" onclick="return toggle('_MultiStore._locked_json_read');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html#_locked_json_read">_locked_json_read</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_MultiStore._locked_json_read-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore._locked_json_read-expanded"><a name="L261"></a><tt class="py-lineno">261</tt> <tt class="py-line"> <tt class="py-docstring">"""Get the raw content of the multistore file.</tt> </tt>
-<a name="L262"></a><tt class="py-lineno">262</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L263"></a><tt class="py-lineno">263</tt> <tt class="py-line"><tt class="py-docstring"> The multistore must be locked when this is called.</tt> </tt>
-<a name="L264"></a><tt class="py-lineno">264</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L265"></a><tt class="py-lineno">265</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L266"></a><tt class="py-lineno">266</tt> <tt class="py-line"><tt class="py-docstring"> The contents of the multistore decoded as JSON.</tt> </tt>
-<a name="L267"></a><tt class="py-lineno">267</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L268"></a><tt class="py-lineno">268</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_thread_lock</tt><tt class="py-op">.</tt><tt class="py-name">locked</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L269"></a><tt class="py-lineno">269</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_file</tt><tt class="py-op">.</tt><tt id="link-56" class="py-name" targets="Method oauth2client.locked_file.LockedFile.file_handle()=oauth2client.locked_file.LockedFile-class.html#file_handle,Method oauth2client.locked_file._Opener.file_handle()=oauth2client.locked_file._Opener-class.html#file_handle"><a title="oauth2client.locked_file.LockedFile.file_handle
-oauth2client.locked_file._Opener.file_handle" class="py-name" href="#" onclick="return doclink('link-56', 'file_handle', 'link-56');">file_handle</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">seek</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
-<a name="L270"></a><tt class="py-lineno">270</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-57" class="py-name" targets="Function oauth2client.clientsecrets.load()=oauth2client.clientsecrets-module.html#load"><a title="oauth2client.clientsecrets.load" class="py-name" href="#" onclick="return doclink('link-57', 'load', 'link-57');">load</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_file</tt><tt class="py-op">.</tt><tt id="link-58" class="py-name"><a title="oauth2client.locked_file.LockedFile.file_handle
-oauth2client.locked_file._Opener.file_handle" class="py-name" href="#" onclick="return doclink('link-58', 'file_handle', 'link-56');">file_handle</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L271"></a><tt class="py-lineno">271</tt> <tt class="py-line"> </tt>
-<a name="_MultiStore._locked_json_write"></a><div id="_MultiStore._locked_json_write-def"><a name="L272"></a><tt class="py-lineno">272</tt> <a class="py-toggle" href="#" id="_MultiStore._locked_json_write-toggle" onclick="return toggle('_MultiStore._locked_json_write');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html#_locked_json_write">_locked_json_write</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_MultiStore._locked_json_write-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore._locked_json_write-expanded"><a name="L273"></a><tt class="py-lineno">273</tt> <tt class="py-line"> <tt class="py-docstring">"""Write a JSON serializable data structure to the multistore.</tt> </tt>
-<a name="L274"></a><tt class="py-lineno">274</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L275"></a><tt class="py-lineno">275</tt> <tt class="py-line"><tt class="py-docstring"> The multistore must be locked when this is called.</tt> </tt>
-<a name="L276"></a><tt class="py-lineno">276</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L277"></a><tt class="py-lineno">277</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L278"></a><tt class="py-lineno">278</tt> <tt class="py-line"><tt class="py-docstring"> data: The data to be serialized and written.</tt> </tt>
-<a name="L279"></a><tt class="py-lineno">279</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L280"></a><tt class="py-lineno">280</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_thread_lock</tt><tt class="py-op">.</tt><tt class="py-name">locked</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L281"></a><tt class="py-lineno">281</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_read_only</tt><tt class="py-op">:</tt> </tt>
-<a name="L282"></a><tt class="py-lineno">282</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
-<a name="L283"></a><tt class="py-lineno">283</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_file</tt><tt class="py-op">.</tt><tt id="link-59" class="py-name"><a title="oauth2client.locked_file.LockedFile.file_handle
-oauth2client.locked_file._Opener.file_handle" class="py-name" href="#" onclick="return doclink('link-59', 'file_handle', 'link-56');">file_handle</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">seek</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
-<a name="L284"></a><tt class="py-lineno">284</tt> <tt class="py-line"> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt class="py-name">dump</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_file</tt><tt class="py-op">.</tt><tt id="link-60" class="py-name"><a title="oauth2client.locked_file.LockedFile.file_handle
-oauth2client.locked_file._Opener.file_handle" class="py-name" href="#" onclick="return doclink('link-60', 'file_handle', 'link-56');">file_handle</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">sort_keys</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> <tt id="link-61" class="py-name" targets="Method apiclient.schema._SchemaToStruct.indent()=apiclient.schema._SchemaToStruct-class.html#indent"><a title="apiclient.schema._SchemaToStruct.indent" class="py-name" href="#" onclick="return doclink('link-61', 'indent', 'link-61');">indent</a></tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
-<a name="L285"></a><tt class="py-lineno">285</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_file</tt><tt class="py-op">.</tt><tt id="link-62" class="py-name"><a title="oauth2client.locked_file.LockedFile.file_handle
-oauth2client.locked_file._Opener.file_handle" class="py-name" href="#" onclick="return doclink('link-62', 'file_handle', 'link-56');">file_handle</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">truncate</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L286"></a><tt class="py-lineno">286</tt> <tt class="py-line"> </tt>
-<a name="_MultiStore._refresh_data_cache"></a><div id="_MultiStore._refresh_data_cache-def"><a name="L287"></a><tt class="py-lineno">287</tt> <a class="py-toggle" href="#" id="_MultiStore._refresh_data_cache-toggle" onclick="return toggle('_MultiStore._refresh_data_cache');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html#_refresh_data_cache">_refresh_data_cache</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_MultiStore._refresh_data_cache-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore._refresh_data_cache-expanded"><a name="L288"></a><tt class="py-lineno">288</tt> <tt class="py-line"> <tt class="py-docstring">"""Refresh the contents of the multistore.</tt> </tt>
-<a name="L289"></a><tt class="py-lineno">289</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L290"></a><tt class="py-lineno">290</tt> <tt class="py-line"><tt class="py-docstring"> The multistore must be locked when this is called.</tt> </tt>
-<a name="L291"></a><tt class="py-lineno">291</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L292"></a><tt class="py-lineno">292</tt> <tt class="py-line"><tt class="py-docstring"> Raises:</tt> </tt>
-<a name="L293"></a><tt class="py-lineno">293</tt> <tt class="py-line"><tt class="py-docstring"> NewerCredentialStoreError: Raised when a newer client has written the</tt> </tt>
-<a name="L294"></a><tt class="py-lineno">294</tt> <tt class="py-line"><tt class="py-docstring"> store.</tt> </tt>
-<a name="L295"></a><tt class="py-lineno">295</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L296"></a><tt class="py-lineno">296</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-<a name="L297"></a><tt class="py-lineno">297</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L298"></a><tt class="py-lineno">298</tt> <tt class="py-line"> <tt class="py-name">raw_data</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-63" class="py-name" targets="Method oauth2client.multistore_file._MultiStore._locked_json_read()=oauth2client.multistore_file._MultiStore-class.html#_locked_json_read"><a title="oauth2client.multistore_file._MultiStore._locked_json_read" class="py-name" href="#" onclick="return doclink('link-63', '_locked_json_read', 'link-63');">_locked_json_read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L299"></a><tt class="py-lineno">299</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">:</tt> </tt>
-<a name="L300"></a><tt class="py-lineno">300</tt> <tt class="py-line"> <tt id="link-64" class="py-name"><a title="apiclient.discovery.logger
+oauth2client.locked_file._PosixOpener.unlock_and_close" class="py-name" href="#" onclick="return doclink('link-64', 'unlock_and_close', 'link-64');">unlock_and_close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L306"></a><tt class="py-lineno">306</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_thread_lock</tt><tt class="py-op">.</tt><tt class="py-name">release</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L307"></a><tt class="py-lineno">307</tt> <tt class="py-line"> </tt>
+<a name="_MultiStore._locked_json_read"></a><div id="_MultiStore._locked_json_read-def"><a name="L308"></a><tt class="py-lineno">308</tt> <a class="py-toggle" href="#" id="_MultiStore._locked_json_read-toggle" onclick="return toggle('_MultiStore._locked_json_read');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html#_locked_json_read">_locked_json_read</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_MultiStore._locked_json_read-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore._locked_json_read-expanded"><a name="L309"></a><tt class="py-lineno">309</tt> <tt class="py-line"> <tt class="py-docstring">"""Get the raw content of the multistore file.</tt> </tt>
+<a name="L310"></a><tt class="py-lineno">310</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L311"></a><tt class="py-lineno">311</tt> <tt class="py-line"><tt class="py-docstring"> The multistore must be locked when this is called.</tt> </tt>
+<a name="L312"></a><tt class="py-lineno">312</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L313"></a><tt class="py-lineno">313</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L314"></a><tt class="py-lineno">314</tt> <tt class="py-line"><tt class="py-docstring"> The contents of the multistore decoded as JSON.</tt> </tt>
+<a name="L315"></a><tt class="py-lineno">315</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L316"></a><tt class="py-lineno">316</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_thread_lock</tt><tt class="py-op">.</tt><tt class="py-name">locked</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L317"></a><tt class="py-lineno">317</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_file</tt><tt class="py-op">.</tt><tt id="link-65" class="py-name" targets="Method oauth2client.locked_file.LockedFile.file_handle()=oauth2client.locked_file.LockedFile-class.html#file_handle,Method oauth2client.locked_file._Opener.file_handle()=oauth2client.locked_file._Opener-class.html#file_handle"><a title="oauth2client.locked_file.LockedFile.file_handle
+oauth2client.locked_file._Opener.file_handle" class="py-name" href="#" onclick="return doclink('link-65', 'file_handle', 'link-65');">file_handle</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">seek</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L318"></a><tt class="py-lineno">318</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-66" class="py-name" targets="Function oauth2client.clientsecrets.load()=oauth2client.clientsecrets-module.html#load"><a title="oauth2client.clientsecrets.load" class="py-name" href="#" onclick="return doclink('link-66', 'load', 'link-66');">load</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_file</tt><tt class="py-op">.</tt><tt id="link-67" class="py-name"><a title="oauth2client.locked_file.LockedFile.file_handle
+oauth2client.locked_file._Opener.file_handle" class="py-name" href="#" onclick="return doclink('link-67', 'file_handle', 'link-65');">file_handle</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L319"></a><tt class="py-lineno">319</tt> <tt class="py-line"> </tt>
+<a name="_MultiStore._locked_json_write"></a><div id="_MultiStore._locked_json_write-def"><a name="L320"></a><tt class="py-lineno">320</tt> <a class="py-toggle" href="#" id="_MultiStore._locked_json_write-toggle" onclick="return toggle('_MultiStore._locked_json_write');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html#_locked_json_write">_locked_json_write</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_MultiStore._locked_json_write-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore._locked_json_write-expanded"><a name="L321"></a><tt class="py-lineno">321</tt> <tt class="py-line"> <tt class="py-docstring">"""Write a JSON serializable data structure to the multistore.</tt> </tt>
+<a name="L322"></a><tt class="py-lineno">322</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L323"></a><tt class="py-lineno">323</tt> <tt class="py-line"><tt class="py-docstring"> The multistore must be locked when this is called.</tt> </tt>
+<a name="L324"></a><tt class="py-lineno">324</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L325"></a><tt class="py-lineno">325</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L326"></a><tt class="py-lineno">326</tt> <tt class="py-line"><tt class="py-docstring"> data: The data to be serialized and written.</tt> </tt>
+<a name="L327"></a><tt class="py-lineno">327</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L328"></a><tt class="py-lineno">328</tt> <tt class="py-line"> <tt class="py-keyword">assert</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_thread_lock</tt><tt class="py-op">.</tt><tt class="py-name">locked</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L329"></a><tt class="py-lineno">329</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_read_only</tt><tt class="py-op">:</tt> </tt>
+<a name="L330"></a><tt class="py-lineno">330</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L331"></a><tt class="py-lineno">331</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_file</tt><tt class="py-op">.</tt><tt id="link-68" class="py-name"><a title="oauth2client.locked_file.LockedFile.file_handle
+oauth2client.locked_file._Opener.file_handle" class="py-name" href="#" onclick="return doclink('link-68', 'file_handle', 'link-65');">file_handle</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">seek</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L332"></a><tt class="py-lineno">332</tt> <tt class="py-line"> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt class="py-name">dump</tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_file</tt><tt class="py-op">.</tt><tt id="link-69" class="py-name"><a title="oauth2client.locked_file.LockedFile.file_handle
+oauth2client.locked_file._Opener.file_handle" class="py-name" href="#" onclick="return doclink('link-69', 'file_handle', 'link-65');">file_handle</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">sort_keys</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> <tt id="link-70" class="py-name" targets="Method apiclient.schema._SchemaToStruct.indent()=apiclient.schema._SchemaToStruct-class.html#indent"><a title="apiclient.schema._SchemaToStruct.indent" class="py-name" href="#" onclick="return doclink('link-70', 'indent', 'link-70');">indent</a></tt><tt class="py-op">=</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="L333"></a><tt class="py-lineno">333</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_file</tt><tt class="py-op">.</tt><tt id="link-71" class="py-name"><a title="oauth2client.locked_file.LockedFile.file_handle
+oauth2client.locked_file._Opener.file_handle" class="py-name" href="#" onclick="return doclink('link-71', 'file_handle', 'link-65');">file_handle</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">truncate</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L334"></a><tt class="py-lineno">334</tt> <tt class="py-line"> </tt>
+<a name="_MultiStore._refresh_data_cache"></a><div id="_MultiStore._refresh_data_cache-def"><a name="L335"></a><tt class="py-lineno">335</tt> <a class="py-toggle" href="#" id="_MultiStore._refresh_data_cache-toggle" onclick="return toggle('_MultiStore._refresh_data_cache');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html#_refresh_data_cache">_refresh_data_cache</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_MultiStore._refresh_data_cache-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore._refresh_data_cache-expanded"><a name="L336"></a><tt class="py-lineno">336</tt> <tt class="py-line"> <tt class="py-docstring">"""Refresh the contents of the multistore.</tt> </tt>
+<a name="L337"></a><tt class="py-lineno">337</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L338"></a><tt class="py-lineno">338</tt> <tt class="py-line"><tt class="py-docstring"> The multistore must be locked when this is called.</tt> </tt>
+<a name="L339"></a><tt class="py-lineno">339</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L340"></a><tt class="py-lineno">340</tt> <tt class="py-line"><tt class="py-docstring"> Raises:</tt> </tt>
+<a name="L341"></a><tt class="py-lineno">341</tt> <tt class="py-line"><tt class="py-docstring"> NewerCredentialStoreError: Raised when a newer client has written the</tt> </tt>
+<a name="L342"></a><tt class="py-lineno">342</tt> <tt class="py-line"><tt class="py-docstring"> store.</tt> </tt>
+<a name="L343"></a><tt class="py-lineno">343</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L344"></a><tt class="py-lineno">344</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+<a name="L345"></a><tt class="py-lineno">345</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L346"></a><tt class="py-lineno">346</tt> <tt class="py-line"> <tt class="py-name">raw_data</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-72" class="py-name" targets="Method oauth2client.multistore_file._MultiStore._locked_json_read()=oauth2client.multistore_file._MultiStore-class.html#_locked_json_read"><a title="oauth2client.multistore_file._MultiStore._locked_json_read" class="py-name" href="#" onclick="return doclink('link-72', '_locked_json_read', 'link-72');">_locked_json_read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L347"></a><tt class="py-lineno">347</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">:</tt> </tt>
+<a name="L348"></a><tt class="py-lineno">348</tt> <tt class="py-line"> <tt id="link-73" class="py-name"><a title="apiclient.discovery.logger
oauth2client.appengine.logger
oauth2client.client.logger
oauth2client.crypt.logger
oauth2client.gce.logger
oauth2client.locked_file.logger
oauth2client.multistore_file.logger
-oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-64', 'logger', 'link-11');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">'Credential data store could not be loaded. '</tt> </tt>
-<a name="L301"></a><tt class="py-lineno">301</tt> <tt class="py-line"> <tt class="py-string">'Will ignore and overwrite.'</tt><tt class="py-op">)</tt> </tt>
-<a name="L302"></a><tt class="py-lineno">302</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
-<a name="L303"></a><tt class="py-lineno">303</tt> <tt class="py-line"> </tt>
-<a name="L304"></a><tt class="py-lineno">304</tt> <tt class="py-line"> <tt class="py-name">version</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
-<a name="L305"></a><tt class="py-lineno">305</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L306"></a><tt class="py-lineno">306</tt> <tt class="py-line"> <tt class="py-name">version</tt> <tt class="py-op">=</tt> <tt class="py-name">raw_data</tt><tt class="py-op">[</tt><tt class="py-string">'file_version'</tt><tt class="py-op">]</tt> </tt>
-<a name="L307"></a><tt class="py-lineno">307</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">:</tt> </tt>
-<a name="L308"></a><tt class="py-lineno">308</tt> <tt class="py-line"> <tt id="link-65" class="py-name"><a title="apiclient.discovery.logger
+oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-73', 'logger', 'link-11');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">'Credential data store could not be loaded. '</tt> </tt>
+<a name="L349"></a><tt class="py-lineno">349</tt> <tt class="py-line"> <tt class="py-string">'Will ignore and overwrite.'</tt><tt class="py-op">)</tt> </tt>
+<a name="L350"></a><tt class="py-lineno">350</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L351"></a><tt class="py-lineno">351</tt> <tt class="py-line"> </tt>
+<a name="L352"></a><tt class="py-lineno">352</tt> <tt class="py-line"> <tt class="py-name">version</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L353"></a><tt class="py-lineno">353</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L354"></a><tt class="py-lineno">354</tt> <tt class="py-line"> <tt class="py-name">version</tt> <tt class="py-op">=</tt> <tt class="py-name">raw_data</tt><tt class="py-op">[</tt><tt class="py-string">'file_version'</tt><tt class="py-op">]</tt> </tt>
+<a name="L355"></a><tt class="py-lineno">355</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">:</tt> </tt>
+<a name="L356"></a><tt class="py-lineno">356</tt> <tt class="py-line"> <tt id="link-74" class="py-name"><a title="apiclient.discovery.logger
oauth2client.appengine.logger
oauth2client.client.logger
oauth2client.crypt.logger
oauth2client.gce.logger
oauth2client.locked_file.logger
oauth2client.multistore_file.logger
-oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-65', 'logger', 'link-11');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">'Missing version for credential data store. It may be '</tt> </tt>
-<a name="L309"></a><tt class="py-lineno">309</tt> <tt class="py-line"> <tt class="py-string">'corrupt or an old version. Overwriting.'</tt><tt class="py-op">)</tt> </tt>
-<a name="L310"></a><tt class="py-lineno">310</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">version</tt> <tt class="py-op">></tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
-<a name="L311"></a><tt class="py-lineno">311</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-66" class="py-name" targets="Class oauth2client.multistore_file.NewerCredentialStoreError=oauth2client.multistore_file.NewerCredentialStoreError-class.html"><a title="oauth2client.multistore_file.NewerCredentialStoreError" class="py-name" href="#" onclick="return doclink('link-66', 'NewerCredentialStoreError', 'link-66');">NewerCredentialStoreError</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L312"></a><tt class="py-lineno">312</tt> <tt class="py-line"> <tt class="py-string">'Credential file has file_version of %d. '</tt> </tt>
-<a name="L313"></a><tt class="py-lineno">313</tt> <tt class="py-line"> <tt class="py-string">'Only file_version of 1 is supported.'</tt> <tt class="py-op">%</tt> <tt class="py-name">version</tt><tt class="py-op">)</tt> </tt>
-<a name="L314"></a><tt class="py-lineno">314</tt> <tt class="py-line"> </tt>
-<a name="L315"></a><tt class="py-lineno">315</tt> <tt class="py-line"> <tt id="link-67" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
-oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-67', 'credentials', 'link-43');">credentials</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L316"></a><tt class="py-lineno">316</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L317"></a><tt class="py-lineno">317</tt> <tt class="py-line"> <tt id="link-68" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
-oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-68', 'credentials', 'link-43');">credentials</a></tt> <tt class="py-op">=</tt> <tt class="py-name">raw_data</tt><tt class="py-op">[</tt><tt class="py-string">'data'</tt><tt class="py-op">]</tt> </tt>
-<a name="L318"></a><tt class="py-lineno">318</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-op">(</tt><tt class="py-name">TypeError</tt><tt class="py-op">,</tt> <tt class="py-name">KeyError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L319"></a><tt class="py-lineno">319</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
-<a name="L320"></a><tt class="py-lineno">320</tt> <tt class="py-line"> </tt>
-<a name="L321"></a><tt class="py-lineno">321</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">cred_entry</tt> <tt class="py-keyword">in</tt> <tt id="link-69" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
-oauth2client.appengine.CredentialsNDBModel.credentials" class="py-name" href="#" onclick="return doclink('link-69', 'credentials', 'link-43');">credentials</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L322"></a><tt class="py-lineno">322</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L323"></a><tt class="py-lineno">323</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">credential</tt><tt class="py-op">)</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-70" class="py-name" targets="Method oauth2client.multistore_file._MultiStore._decode_credential_from_json()=oauth2client.multistore_file._MultiStore-class.html#_decode_credential_from_json"><a title="oauth2client.multistore_file._MultiStore._decode_credential_from_json" class="py-name" href="#" onclick="return doclink('link-70', '_decode_credential_from_json', 'link-70');">_decode_credential_from_json</a></tt><tt class="py-op">(</tt><tt class="py-name">cred_entry</tt><tt class="py-op">)</tt> </tt>
-<a name="L324"></a><tt class="py-lineno">324</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">credential</tt> </tt>
-<a name="L325"></a><tt class="py-lineno">325</tt> <tt class="py-line"> <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
-<a name="L326"></a><tt class="py-lineno">326</tt> <tt class="py-line"> <tt class="py-comment"># If something goes wrong loading a credential, just ignore it</tt> </tt>
-<a name="L327"></a><tt class="py-lineno">327</tt> <tt class="py-line"> <tt id="link-71" class="py-name"><a title="apiclient.discovery.logger
+oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-74', 'logger', 'link-11');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">'Missing version for credential data store. It may be '</tt> </tt>
+<a name="L357"></a><tt class="py-lineno">357</tt> <tt class="py-line"> <tt class="py-string">'corrupt or an old version. Overwriting.'</tt><tt class="py-op">)</tt> </tt>
+<a name="L358"></a><tt class="py-lineno">358</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">version</tt> <tt class="py-op">></tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L359"></a><tt class="py-lineno">359</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt id="link-75" class="py-name" targets="Class oauth2client.multistore_file.NewerCredentialStoreError=oauth2client.multistore_file.NewerCredentialStoreError-class.html"><a title="oauth2client.multistore_file.NewerCredentialStoreError" class="py-name" href="#" onclick="return doclink('link-75', 'NewerCredentialStoreError', 'link-75');">NewerCredentialStoreError</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L360"></a><tt class="py-lineno">360</tt> <tt class="py-line"> <tt class="py-string">'Credential file has file_version of %d. '</tt> </tt>
+<a name="L361"></a><tt class="py-lineno">361</tt> <tt class="py-line"> <tt class="py-string">'Only file_version of 1 is supported.'</tt> <tt class="py-op">%</tt> <tt class="py-name">version</tt><tt class="py-op">)</tt> </tt>
+<a name="L362"></a><tt class="py-lineno">362</tt> <tt class="py-line"> </tt>
+<a name="L363"></a><tt class="py-lineno">363</tt> <tt class="py-line"> <tt id="link-76" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-76', 'credentials', 'link-52');">credentials</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L364"></a><tt class="py-lineno">364</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L365"></a><tt class="py-lineno">365</tt> <tt class="py-line"> <tt id="link-77" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-77', 'credentials', 'link-52');">credentials</a></tt> <tt class="py-op">=</tt> <tt class="py-name">raw_data</tt><tt class="py-op">[</tt><tt class="py-string">'data'</tt><tt class="py-op">]</tt> </tt>
+<a name="L366"></a><tt class="py-lineno">366</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-op">(</tt><tt class="py-name">TypeError</tt><tt class="py-op">,</tt> <tt class="py-name">KeyError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L367"></a><tt class="py-lineno">367</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+<a name="L368"></a><tt class="py-lineno">368</tt> <tt class="py-line"> </tt>
+<a name="L369"></a><tt class="py-lineno">369</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">cred_entry</tt> <tt class="py-keyword">in</tt> <tt id="link-78" class="py-name"><a title="oauth2client.appengine.CredentialsModel.credentials
+oauth2client.appengine.CredentialsNDBModel.credentials
+oauth2client.appengine.OAuth2Decorator.credentials" class="py-name" href="#" onclick="return doclink('link-78', 'credentials', 'link-52');">credentials</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L370"></a><tt class="py-lineno">370</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L371"></a><tt class="py-lineno">371</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">credential</tt><tt class="py-op">)</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-79" class="py-name" targets="Method oauth2client.multistore_file._MultiStore._decode_credential_from_json()=oauth2client.multistore_file._MultiStore-class.html#_decode_credential_from_json"><a title="oauth2client.multistore_file._MultiStore._decode_credential_from_json" class="py-name" href="#" onclick="return doclink('link-79', '_decode_credential_from_json', 'link-79');">_decode_credential_from_json</a></tt><tt class="py-op">(</tt><tt class="py-name">cred_entry</tt><tt class="py-op">)</tt> </tt>
+<a name="L372"></a><tt class="py-lineno">372</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">credential</tt> </tt>
+<a name="L373"></a><tt class="py-lineno">373</tt> <tt class="py-line"> <tt class="py-keyword">except</tt><tt class="py-op">:</tt> </tt>
+<a name="L374"></a><tt class="py-lineno">374</tt> <tt class="py-line"> <tt class="py-comment"># If something goes wrong loading a credential, just ignore it</tt> </tt>
+<a name="L375"></a><tt class="py-lineno">375</tt> <tt class="py-line"> <tt id="link-80" class="py-name"><a title="apiclient.discovery.logger
oauth2client.appengine.logger
oauth2client.client.logger
oauth2client.crypt.logger
oauth2client.gce.logger
oauth2client.locked_file.logger
oauth2client.multistore_file.logger
-oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-71', 'logger', 'link-11');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Error decoding credential, skipping'</tt><tt class="py-op">,</tt> <tt class="py-name">exc_info</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L328"></a><tt class="py-lineno">328</tt> <tt class="py-line"> </tt>
-<a name="_MultiStore._decode_credential_from_json"></a><div id="_MultiStore._decode_credential_from_json-def"><a name="L329"></a><tt class="py-lineno">329</tt> <a class="py-toggle" href="#" id="_MultiStore._decode_credential_from_json-toggle" onclick="return toggle('_MultiStore._decode_credential_from_json');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html#_decode_credential_from_json">_decode_credential_from_json</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">cred_entry</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_MultiStore._decode_credential_from_json-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore._decode_credential_from_json-expanded"><a name="L330"></a><tt class="py-lineno">330</tt> <tt class="py-line"> <tt class="py-docstring">"""Load a credential from our JSON serialization.</tt> </tt>
-<a name="L331"></a><tt class="py-lineno">331</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L332"></a><tt class="py-lineno">332</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L333"></a><tt class="py-lineno">333</tt> <tt class="py-line"><tt class="py-docstring"> cred_entry: A dict entry from the data member of our format</tt> </tt>
-<a name="L334"></a><tt class="py-lineno">334</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L335"></a><tt class="py-lineno">335</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L336"></a><tt class="py-lineno">336</tt> <tt class="py-line"><tt class="py-docstring"> (key, cred) where the key is the key tuple and the cred is the</tt> </tt>
-<a name="L337"></a><tt class="py-lineno">337</tt> <tt class="py-line"><tt class="py-docstring"> OAuth2Credential object.</tt> </tt>
-<a name="L338"></a><tt class="py-lineno">338</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L339"></a><tt class="py-lineno">339</tt> <tt class="py-line"> <tt class="py-name">raw_key</tt> <tt class="py-op">=</tt> <tt class="py-name">cred_entry</tt><tt class="py-op">[</tt><tt class="py-string">'key'</tt><tt class="py-op">]</tt> </tt>
-<a name="L340"></a><tt class="py-lineno">340</tt> <tt class="py-line"> <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt id="link-72" class="py-name"><a title="oauth2client.util" class="py-name" href="#" onclick="return doclink('link-72', 'util', 'link-8');">util</a></tt><tt class="py-op">.</tt><tt id="link-73" class="py-name"><a title="oauth2client.util.dict_to_tuple_key" class="py-name" href="#" onclick="return doclink('link-73', 'dict_to_tuple_key', 'link-32');">dict_to_tuple_key</a></tt><tt class="py-op">(</tt><tt class="py-name">raw_key</tt><tt class="py-op">)</tt> </tt>
-<a name="L341"></a><tt class="py-lineno">341</tt> <tt class="py-line"> <tt class="py-name">credential</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L342"></a><tt class="py-lineno">342</tt> <tt class="py-line"> <tt class="py-name">credential</tt> <tt class="py-op">=</tt> <tt id="link-74" class="py-name"><a title="oauth2client.client.Credentials" class="py-name" href="#" onclick="return doclink('link-74', 'Credentials', 'link-6');">Credentials</a></tt><tt class="py-op">.</tt><tt id="link-75" class="py-name" targets="Class Method apiclient.http.MediaUpload.new_from_json()=apiclient.http.MediaUpload-class.html#new_from_json,Class Method oauth2client.client.Credentials.new_from_json()=oauth2client.client.Credentials-class.html#new_from_json"><a title="apiclient.http.MediaUpload.new_from_json
-oauth2client.client.Credentials.new_from_json" class="py-name" href="#" onclick="return doclink('link-75', 'new_from_json', 'link-75');">new_from_json</a></tt><tt class="py-op">(</tt><tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt class="py-name">dumps</tt><tt class="py-op">(</tt><tt class="py-name">cred_entry</tt><tt class="py-op">[</tt><tt class="py-string">'credential'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L343"></a><tt class="py-lineno">343</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">credential</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L344"></a><tt class="py-lineno">344</tt> <tt class="py-line"> </tt>
-<a name="_MultiStore._write"></a><div id="_MultiStore._write-def"><a name="L345"></a><tt class="py-lineno">345</tt> <a class="py-toggle" href="#" id="_MultiStore._write-toggle" onclick="return toggle('_MultiStore._write');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html#_write">_write</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_MultiStore._write-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore._write-expanded"><a name="L346"></a><tt class="py-lineno">346</tt> <tt class="py-line"> <tt class="py-docstring">"""Write the cached data back out.</tt> </tt>
-<a name="L347"></a><tt class="py-lineno">347</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L348"></a><tt class="py-lineno">348</tt> <tt class="py-line"><tt class="py-docstring"> The multistore must be locked.</tt> </tt>
-<a name="L349"></a><tt class="py-lineno">349</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L350"></a><tt class="py-lineno">350</tt> <tt class="py-line"> <tt class="py-name">raw_data</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'file_version'</tt><tt class="py-op">:</tt> <tt class="py-number">1</tt><tt class="py-op">}</tt> </tt>
-<a name="L351"></a><tt class="py-lineno">351</tt> <tt class="py-line"> <tt class="py-name">raw_creds</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L352"></a><tt class="py-lineno">352</tt> <tt class="py-line"> <tt class="py-name">raw_data</tt><tt class="py-op">[</tt><tt class="py-string">'data'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">raw_creds</tt> </tt>
-<a name="L353"></a><tt class="py-lineno">353</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">cred_key</tt><tt class="py-op">,</tt> <tt class="py-name">cred</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">.</tt><tt id="link-76" class="py-name" targets="Method apiclient.push.Headers.items()=apiclient.push.Headers-class.html#items"><a title="apiclient.push.Headers.items" class="py-name" href="#" onclick="return doclink('link-76', 'items', 'link-76');">items</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L354"></a><tt class="py-lineno">354</tt> <tt class="py-line"> <tt class="py-name">raw_key</tt> <tt class="py-op">=</tt> <tt class="py-name">dict</tt><tt class="py-op">(</tt><tt class="py-name">cred_key</tt><tt class="py-op">)</tt> </tt>
-<a name="L355"></a><tt class="py-lineno">355</tt> <tt class="py-line"> <tt class="py-name">raw_cred</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-77" class="py-name" targets="Function oauth2client.clientsecrets.loads()=oauth2client.clientsecrets-module.html#loads"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-77', 'loads', 'link-77');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">cred</tt><tt class="py-op">.</tt><tt id="link-78" class="py-name" targets="Method apiclient.http.HttpRequest.to_json()=apiclient.http.HttpRequest-class.html#to_json,Method apiclient.http.MediaFileUpload.to_json()=apiclient.http.MediaFileUpload-class.html#to_json,Method apiclient.http.MediaIoBaseUpload.to_json()=apiclient.http.MediaIoBaseUpload-class.html#to_json,Method apiclient.http.MediaUpload.to_json()=apiclient.http.MediaUpload-class.html#to_json,Method oauth2client.client.Credentials.to_json()=oauth2client.client.Credentials-class.html#to_json,Method oauth2client.client.OAuth2Credentials.to_json()=oauth2client.client.OAuth2Credentials-class.html#to_json"><a title="apiclient.http.HttpRequest.to_json
+oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-80', 'logger', 'link-11');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">info</tt><tt class="py-op">(</tt><tt class="py-string">'Error decoding credential, skipping'</tt><tt class="py-op">,</tt> <tt class="py-name">exc_info</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L376"></a><tt class="py-lineno">376</tt> <tt class="py-line"> </tt>
+<a name="_MultiStore._decode_credential_from_json"></a><div id="_MultiStore._decode_credential_from_json-def"><a name="L377"></a><tt class="py-lineno">377</tt> <a class="py-toggle" href="#" id="_MultiStore._decode_credential_from_json-toggle" onclick="return toggle('_MultiStore._decode_credential_from_json');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html#_decode_credential_from_json">_decode_credential_from_json</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">cred_entry</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_MultiStore._decode_credential_from_json-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore._decode_credential_from_json-expanded"><a name="L378"></a><tt class="py-lineno">378</tt> <tt class="py-line"> <tt class="py-docstring">"""Load a credential from our JSON serialization.</tt> </tt>
+<a name="L379"></a><tt class="py-lineno">379</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L380"></a><tt class="py-lineno">380</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L381"></a><tt class="py-lineno">381</tt> <tt class="py-line"><tt class="py-docstring"> cred_entry: A dict entry from the data member of our format</tt> </tt>
+<a name="L382"></a><tt class="py-lineno">382</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L383"></a><tt class="py-lineno">383</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L384"></a><tt class="py-lineno">384</tt> <tt class="py-line"><tt class="py-docstring"> (key, cred) where the key is the key tuple and the cred is the</tt> </tt>
+<a name="L385"></a><tt class="py-lineno">385</tt> <tt class="py-line"><tt class="py-docstring"> OAuth2Credential object.</tt> </tt>
+<a name="L386"></a><tt class="py-lineno">386</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L387"></a><tt class="py-lineno">387</tt> <tt class="py-line"> <tt class="py-name">raw_key</tt> <tt class="py-op">=</tt> <tt class="py-name">cred_entry</tt><tt class="py-op">[</tt><tt class="py-string">'key'</tt><tt class="py-op">]</tt> </tt>
+<a name="L388"></a><tt class="py-lineno">388</tt> <tt class="py-line"> <tt class="py-name">key</tt> <tt class="py-op">=</tt> <tt id="link-81" class="py-name"><a title="oauth2client.util" class="py-name" href="#" onclick="return doclink('link-81', 'util', 'link-8');">util</a></tt><tt class="py-op">.</tt><tt id="link-82" class="py-name"><a title="oauth2client.util.dict_to_tuple_key" class="py-name" href="#" onclick="return doclink('link-82', 'dict_to_tuple_key', 'link-26');">dict_to_tuple_key</a></tt><tt class="py-op">(</tt><tt class="py-name">raw_key</tt><tt class="py-op">)</tt> </tt>
+<a name="L389"></a><tt class="py-lineno">389</tt> <tt class="py-line"> <tt class="py-name">credential</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L390"></a><tt class="py-lineno">390</tt> <tt class="py-line"> <tt class="py-name">credential</tt> <tt class="py-op">=</tt> <tt id="link-83" class="py-name"><a title="oauth2client.client.Credentials" class="py-name" href="#" onclick="return doclink('link-83', 'Credentials', 'link-6');">Credentials</a></tt><tt class="py-op">.</tt><tt id="link-84" class="py-name" targets="Class Method apiclient.http.MediaUpload.new_from_json()=apiclient.http.MediaUpload-class.html#new_from_json,Class Method oauth2client.client.Credentials.new_from_json()=oauth2client.client.Credentials-class.html#new_from_json"><a title="apiclient.http.MediaUpload.new_from_json
+oauth2client.client.Credentials.new_from_json" class="py-name" href="#" onclick="return doclink('link-84', 'new_from_json', 'link-84');">new_from_json</a></tt><tt class="py-op">(</tt><tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt class="py-name">dumps</tt><tt class="py-op">(</tt><tt class="py-name">cred_entry</tt><tt class="py-op">[</tt><tt class="py-string">'credential'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L391"></a><tt class="py-lineno">391</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">credential</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L392"></a><tt class="py-lineno">392</tt> <tt class="py-line"> </tt>
+<a name="_MultiStore._write"></a><div id="_MultiStore._write-def"><a name="L393"></a><tt class="py-lineno">393</tt> <a class="py-toggle" href="#" id="_MultiStore._write-toggle" onclick="return toggle('_MultiStore._write');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html#_write">_write</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_MultiStore._write-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore._write-expanded"><a name="L394"></a><tt class="py-lineno">394</tt> <tt class="py-line"> <tt class="py-docstring">"""Write the cached data back out.</tt> </tt>
+<a name="L395"></a><tt class="py-lineno">395</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L396"></a><tt class="py-lineno">396</tt> <tt class="py-line"><tt class="py-docstring"> The multistore must be locked.</tt> </tt>
+<a name="L397"></a><tt class="py-lineno">397</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L398"></a><tt class="py-lineno">398</tt> <tt class="py-line"> <tt class="py-name">raw_data</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'file_version'</tt><tt class="py-op">:</tt> <tt class="py-number">1</tt><tt class="py-op">}</tt> </tt>
+<a name="L399"></a><tt class="py-lineno">399</tt> <tt class="py-line"> <tt class="py-name">raw_creds</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L400"></a><tt class="py-lineno">400</tt> <tt class="py-line"> <tt class="py-name">raw_data</tt><tt class="py-op">[</tt><tt class="py-string">'data'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">raw_creds</tt> </tt>
+<a name="L401"></a><tt class="py-lineno">401</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">cred_key</tt><tt class="py-op">,</tt> <tt class="py-name">cred</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">.</tt><tt class="py-name">items</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L402"></a><tt class="py-lineno">402</tt> <tt class="py-line"> <tt class="py-name">raw_key</tt> <tt class="py-op">=</tt> <tt class="py-name">dict</tt><tt class="py-op">(</tt><tt class="py-name">cred_key</tt><tt class="py-op">)</tt> </tt>
+<a name="L403"></a><tt class="py-lineno">403</tt> <tt class="py-line"> <tt class="py-name">raw_cred</tt> <tt class="py-op">=</tt> <tt class="py-name">simplejson</tt><tt class="py-op">.</tt><tt id="link-85" class="py-name" targets="Function oauth2client.clientsecrets.loads()=oauth2client.clientsecrets-module.html#loads"><a title="oauth2client.clientsecrets.loads" class="py-name" href="#" onclick="return doclink('link-85', 'loads', 'link-85');">loads</a></tt><tt class="py-op">(</tt><tt class="py-name">cred</tt><tt class="py-op">.</tt><tt id="link-86" class="py-name" targets="Method apiclient.http.HttpRequest.to_json()=apiclient.http.HttpRequest-class.html#to_json,Method apiclient.http.MediaFileUpload.to_json()=apiclient.http.MediaFileUpload-class.html#to_json,Method apiclient.http.MediaIoBaseUpload.to_json()=apiclient.http.MediaIoBaseUpload-class.html#to_json,Method apiclient.http.MediaUpload.to_json()=apiclient.http.MediaUpload-class.html#to_json,Method oauth2client.client.Credentials.to_json()=oauth2client.client.Credentials-class.html#to_json,Method oauth2client.client.OAuth2Credentials.to_json()=oauth2client.client.OAuth2Credentials-class.html#to_json"><a title="apiclient.http.HttpRequest.to_json
apiclient.http.MediaFileUpload.to_json
apiclient.http.MediaIoBaseUpload.to_json
apiclient.http.MediaUpload.to_json
oauth2client.client.Credentials.to_json
-oauth2client.client.OAuth2Credentials.to_json" class="py-name" href="#" onclick="return doclink('link-78', 'to_json', 'link-78');">to_json</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L356"></a><tt class="py-lineno">356</tt> <tt class="py-line"> <tt class="py-name">raw_creds</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-op">{</tt><tt class="py-string">'key'</tt><tt class="py-op">:</tt> <tt class="py-name">raw_key</tt><tt class="py-op">,</tt> <tt class="py-string">'credential'</tt><tt class="py-op">:</tt> <tt class="py-name">raw_cred</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
-<a name="L357"></a><tt class="py-lineno">357</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-79" class="py-name" targets="Method oauth2client.multistore_file._MultiStore._locked_json_write()=oauth2client.multistore_file._MultiStore-class.html#_locked_json_write"><a title="oauth2client.multistore_file._MultiStore._locked_json_write" class="py-name" href="#" onclick="return doclink('link-79', '_locked_json_write', 'link-79');">_locked_json_write</a></tt><tt class="py-op">(</tt><tt class="py-name">raw_data</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L358"></a><tt class="py-lineno">358</tt> <tt class="py-line"> </tt>
-<a name="_MultiStore._get_credential"></a><div id="_MultiStore._get_credential-def"><a name="L359"></a><tt class="py-lineno">359</tt> <a class="py-toggle" href="#" id="_MultiStore._get_credential-toggle" onclick="return toggle('_MultiStore._get_credential');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html#_get_credential">_get_credential</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_MultiStore._get_credential-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore._get_credential-expanded"><a name="L360"></a><tt class="py-lineno">360</tt> <tt class="py-line"> <tt class="py-docstring">"""Get a credential from the multistore.</tt> </tt>
-<a name="L361"></a><tt class="py-lineno">361</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L362"></a><tt class="py-lineno">362</tt> <tt class="py-line"><tt class="py-docstring"> The multistore must be locked.</tt> </tt>
-<a name="L363"></a><tt class="py-lineno">363</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L364"></a><tt class="py-lineno">364</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L365"></a><tt class="py-lineno">365</tt> <tt class="py-line"><tt class="py-docstring"> key: The key used to retrieve the credential</tt> </tt>
-<a name="L366"></a><tt class="py-lineno">366</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L367"></a><tt class="py-lineno">367</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L368"></a><tt class="py-lineno">368</tt> <tt class="py-line"><tt class="py-docstring"> The credential specified or None if not present</tt> </tt>
-<a name="L369"></a><tt class="py-lineno">369</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L370"></a><tt class="py-lineno">370</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">.</tt><tt id="link-80" class="py-name" targets="Method apiclient.schema.Schemas.get()=apiclient.schema.Schemas-class.html#get,Method oauth2client.client.MemoryCache.get()=oauth2client.client.MemoryCache-class.html#get,Method oauth2client.client.Storage.get()=oauth2client.client.Storage-class.html#get"><a title="apiclient.schema.Schemas.get
+oauth2client.client.OAuth2Credentials.to_json" class="py-name" href="#" onclick="return doclink('link-86', 'to_json', 'link-86');">to_json</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L404"></a><tt class="py-lineno">404</tt> <tt class="py-line"> <tt class="py-name">raw_creds</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-op">{</tt><tt class="py-string">'key'</tt><tt class="py-op">:</tt> <tt class="py-name">raw_key</tt><tt class="py-op">,</tt> <tt class="py-string">'credential'</tt><tt class="py-op">:</tt> <tt class="py-name">raw_cred</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L405"></a><tt class="py-lineno">405</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-87" class="py-name" targets="Method oauth2client.multistore_file._MultiStore._locked_json_write()=oauth2client.multistore_file._MultiStore-class.html#_locked_json_write"><a title="oauth2client.multistore_file._MultiStore._locked_json_write" class="py-name" href="#" onclick="return doclink('link-87', '_locked_json_write', 'link-87');">_locked_json_write</a></tt><tt class="py-op">(</tt><tt class="py-name">raw_data</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L406"></a><tt class="py-lineno">406</tt> <tt class="py-line"> </tt>
+<a name="_MultiStore._get_all_credential_keys"></a><div id="_MultiStore._get_all_credential_keys-def"><a name="L407"></a><tt class="py-lineno">407</tt> <a class="py-toggle" href="#" id="_MultiStore._get_all_credential_keys-toggle" onclick="return toggle('_MultiStore._get_all_credential_keys');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html#_get_all_credential_keys">_get_all_credential_keys</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_MultiStore._get_all_credential_keys-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore._get_all_credential_keys-expanded"><a name="L408"></a><tt class="py-lineno">408</tt> <tt class="py-line"> <tt class="py-docstring">"""Gets all the registered credential keys in the multistore.</tt> </tt>
+<a name="L409"></a><tt class="py-lineno">409</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L410"></a><tt class="py-lineno">410</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L411"></a><tt class="py-lineno">411</tt> <tt class="py-line"><tt class="py-docstring"> A list of dictionaries corresponding to all the keys currently registered</tt> </tt>
+<a name="L412"></a><tt class="py-lineno">412</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L413"></a><tt class="py-lineno">413</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-op">[</tt><tt class="py-name">dict</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">.</tt><tt class="py-name">keys</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L414"></a><tt class="py-lineno">414</tt> <tt class="py-line"> </tt>
+<a name="_MultiStore._get_credential"></a><div id="_MultiStore._get_credential-def"><a name="L415"></a><tt class="py-lineno">415</tt> <a class="py-toggle" href="#" id="_MultiStore._get_credential-toggle" onclick="return toggle('_MultiStore._get_credential');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html#_get_credential">_get_credential</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_MultiStore._get_credential-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore._get_credential-expanded"><a name="L416"></a><tt class="py-lineno">416</tt> <tt class="py-line"> <tt class="py-docstring">"""Get a credential from the multistore.</tt> </tt>
+<a name="L417"></a><tt class="py-lineno">417</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L418"></a><tt class="py-lineno">418</tt> <tt class="py-line"><tt class="py-docstring"> The multistore must be locked.</tt> </tt>
+<a name="L419"></a><tt class="py-lineno">419</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L420"></a><tt class="py-lineno">420</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L421"></a><tt class="py-lineno">421</tt> <tt class="py-line"><tt class="py-docstring"> key: The key used to retrieve the credential</tt> </tt>
+<a name="L422"></a><tt class="py-lineno">422</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L423"></a><tt class="py-lineno">423</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L424"></a><tt class="py-lineno">424</tt> <tt class="py-line"><tt class="py-docstring"> The credential specified or None if not present</tt> </tt>
+<a name="L425"></a><tt class="py-lineno">425</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L426"></a><tt class="py-lineno">426</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">.</tt><tt id="link-88" class="py-name" targets="Method apiclient.schema.Schemas.get()=apiclient.schema.Schemas-class.html#get,Method oauth2client.client.MemoryCache.get()=oauth2client.client.MemoryCache-class.html#get,Method oauth2client.client.Storage.get()=oauth2client.client.Storage-class.html#get"><a title="apiclient.schema.Schemas.get
oauth2client.client.MemoryCache.get
-oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-80', 'get', 'link-80');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L371"></a><tt class="py-lineno">371</tt> <tt class="py-line"> </tt>
-<a name="_MultiStore._update_credential"></a><div id="_MultiStore._update_credential-def"><a name="L372"></a><tt class="py-lineno">372</tt> <a class="py-toggle" href="#" id="_MultiStore._update_credential-toggle" onclick="return toggle('_MultiStore._update_credential');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html#_update_credential">_update_credential</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">,</tt> <tt class="py-param">cred</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_MultiStore._update_credential-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore._update_credential-expanded"><a name="L373"></a><tt class="py-lineno">373</tt> <tt class="py-line"> <tt class="py-docstring">"""Update a credential and write the multistore.</tt> </tt>
-<a name="L374"></a><tt class="py-lineno">374</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L375"></a><tt class="py-lineno">375</tt> <tt class="py-line"><tt class="py-docstring"> This must be called when the multistore is locked.</tt> </tt>
-<a name="L376"></a><tt class="py-lineno">376</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L377"></a><tt class="py-lineno">377</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L378"></a><tt class="py-lineno">378</tt> <tt class="py-line"><tt class="py-docstring"> key: The key used to retrieve the credential</tt> </tt>
-<a name="L379"></a><tt class="py-lineno">379</tt> <tt class="py-line"><tt class="py-docstring"> cred: The OAuth2Credential to update/set</tt> </tt>
-<a name="L380"></a><tt class="py-lineno">380</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L381"></a><tt class="py-lineno">381</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">cred</tt> </tt>
-<a name="L382"></a><tt class="py-lineno">382</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-81" class="py-name"><a title="oauth2client.multistore_file._MultiStore._write" class="py-name" href="#" onclick="return doclink('link-81', '_write', 'link-53');">_write</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L383"></a><tt class="py-lineno">383</tt> <tt class="py-line"> </tt>
-<a name="_MultiStore._delete_credential"></a><div id="_MultiStore._delete_credential-def"><a name="L384"></a><tt class="py-lineno">384</tt> <a class="py-toggle" href="#" id="_MultiStore._delete_credential-toggle" onclick="return toggle('_MultiStore._delete_credential');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html#_delete_credential">_delete_credential</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_MultiStore._delete_credential-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore._delete_credential-expanded"><a name="L385"></a><tt class="py-lineno">385</tt> <tt class="py-line"> <tt class="py-docstring">"""Delete a credential and write the multistore.</tt> </tt>
-<a name="L386"></a><tt class="py-lineno">386</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L387"></a><tt class="py-lineno">387</tt> <tt class="py-line"><tt class="py-docstring"> This must be called when the multistore is locked.</tt> </tt>
-<a name="L388"></a><tt class="py-lineno">388</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L389"></a><tt class="py-lineno">389</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L390"></a><tt class="py-lineno">390</tt> <tt class="py-line"><tt class="py-docstring"> key: The key used to retrieve the credential</tt> </tt>
-<a name="L391"></a><tt class="py-lineno">391</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L392"></a><tt class="py-lineno">392</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L393"></a><tt class="py-lineno">393</tt> <tt class="py-line"> <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> </tt>
-<a name="L394"></a><tt class="py-lineno">394</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">KeyError</tt><tt class="py-op">:</tt> </tt>
-<a name="L395"></a><tt class="py-lineno">395</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
-<a name="L396"></a><tt class="py-lineno">396</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-82" class="py-name"><a title="oauth2client.multistore_file._MultiStore._write" class="py-name" href="#" onclick="return doclink('link-82', '_write', 'link-53');">_write</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L397"></a><tt class="py-lineno">397</tt> <tt class="py-line"> </tt>
-<a name="_MultiStore._get_storage"></a><div id="_MultiStore._get_storage-def"><a name="L398"></a><tt class="py-lineno">398</tt> <a class="py-toggle" href="#" id="_MultiStore._get_storage-toggle" onclick="return toggle('_MultiStore._get_storage');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html#_get_storage">_get_storage</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_MultiStore._get_storage-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore._get_storage-expanded"><a name="L399"></a><tt class="py-lineno">399</tt> <tt class="py-line"> <tt class="py-docstring">"""Get a Storage object to get/set a credential.</tt> </tt>
-<a name="L400"></a><tt class="py-lineno">400</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L401"></a><tt class="py-lineno">401</tt> <tt class="py-line"><tt class="py-docstring"> This Storage is a 'view' into the multistore.</tt> </tt>
-<a name="L402"></a><tt class="py-lineno">402</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L403"></a><tt class="py-lineno">403</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L404"></a><tt class="py-lineno">404</tt> <tt class="py-line"><tt class="py-docstring"> key: The key used to retrieve the credential</tt> </tt>
-<a name="L405"></a><tt class="py-lineno">405</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L406"></a><tt class="py-lineno">406</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L407"></a><tt class="py-lineno">407</tt> <tt class="py-line"><tt class="py-docstring"> A Storage object that can be used to get/set this cred</tt> </tt>
-<a name="L408"></a><tt class="py-lineno">408</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L409"></a><tt class="py-lineno">409</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-83" class="py-name" targets="Class oauth2client.multistore_file._MultiStore._Storage=oauth2client.multistore_file._MultiStore._Storage-class.html"><a title="oauth2client.multistore_file._MultiStore._Storage" class="py-name" href="#" onclick="return doclink('link-83', '_Storage', 'link-83');">_Storage</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">key</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L410"></a><tt class="py-lineno">410</tt> <tt class="py-line"> </tt><script type="text/javascript">
+oauth2client.client.Storage.get" class="py-name" href="#" onclick="return doclink('link-88', 'get', 'link-88');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L427"></a><tt class="py-lineno">427</tt> <tt class="py-line"> </tt>
+<a name="_MultiStore._update_credential"></a><div id="_MultiStore._update_credential-def"><a name="L428"></a><tt class="py-lineno">428</tt> <a class="py-toggle" href="#" id="_MultiStore._update_credential-toggle" onclick="return toggle('_MultiStore._update_credential');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html#_update_credential">_update_credential</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">,</tt> <tt class="py-param">cred</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_MultiStore._update_credential-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore._update_credential-expanded"><a name="L429"></a><tt class="py-lineno">429</tt> <tt class="py-line"> <tt class="py-docstring">"""Update a credential and write the multistore.</tt> </tt>
+<a name="L430"></a><tt class="py-lineno">430</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L431"></a><tt class="py-lineno">431</tt> <tt class="py-line"><tt class="py-docstring"> This must be called when the multistore is locked.</tt> </tt>
+<a name="L432"></a><tt class="py-lineno">432</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L433"></a><tt class="py-lineno">433</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L434"></a><tt class="py-lineno">434</tt> <tt class="py-line"><tt class="py-docstring"> key: The key used to retrieve the credential</tt> </tt>
+<a name="L435"></a><tt class="py-lineno">435</tt> <tt class="py-line"><tt class="py-docstring"> cred: The OAuth2Credential to update/set</tt> </tt>
+<a name="L436"></a><tt class="py-lineno">436</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L437"></a><tt class="py-lineno">437</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">cred</tt> </tt>
+<a name="L438"></a><tt class="py-lineno">438</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-89" class="py-name"><a title="oauth2client.multistore_file._MultiStore._write" class="py-name" href="#" onclick="return doclink('link-89', '_write', 'link-62');">_write</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L439"></a><tt class="py-lineno">439</tt> <tt class="py-line"> </tt>
+<a name="_MultiStore._delete_credential"></a><div id="_MultiStore._delete_credential-def"><a name="L440"></a><tt class="py-lineno">440</tt> <a class="py-toggle" href="#" id="_MultiStore._delete_credential-toggle" onclick="return toggle('_MultiStore._delete_credential');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html#_delete_credential">_delete_credential</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_MultiStore._delete_credential-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore._delete_credential-expanded"><a name="L441"></a><tt class="py-lineno">441</tt> <tt class="py-line"> <tt class="py-docstring">"""Delete a credential and write the multistore.</tt> </tt>
+<a name="L442"></a><tt class="py-lineno">442</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L443"></a><tt class="py-lineno">443</tt> <tt class="py-line"><tt class="py-docstring"> This must be called when the multistore is locked.</tt> </tt>
+<a name="L444"></a><tt class="py-lineno">444</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L445"></a><tt class="py-lineno">445</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L446"></a><tt class="py-lineno">446</tt> <tt class="py-line"><tt class="py-docstring"> key: The key used to retrieve the credential</tt> </tt>
+<a name="L447"></a><tt class="py-lineno">447</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L448"></a><tt class="py-lineno">448</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L449"></a><tt class="py-lineno">449</tt> <tt class="py-line"> <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> </tt>
+<a name="L450"></a><tt class="py-lineno">450</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">KeyError</tt><tt class="py-op">:</tt> </tt>
+<a name="L451"></a><tt class="py-lineno">451</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+<a name="L452"></a><tt class="py-lineno">452</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-90" class="py-name"><a title="oauth2client.multistore_file._MultiStore._write" class="py-name" href="#" onclick="return doclink('link-90', '_write', 'link-62');">_write</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L453"></a><tt class="py-lineno">453</tt> <tt class="py-line"> </tt>
+<a name="_MultiStore._get_storage"></a><div id="_MultiStore._get_storage-def"><a name="L454"></a><tt class="py-lineno">454</tt> <a class="py-toggle" href="#" id="_MultiStore._get_storage-toggle" onclick="return toggle('_MultiStore._get_storage');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.multistore_file._MultiStore-class.html#_get_storage">_get_storage</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">key</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_MultiStore._get_storage-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="_MultiStore._get_storage-expanded"><a name="L455"></a><tt class="py-lineno">455</tt> <tt class="py-line"> <tt class="py-docstring">"""Get a Storage object to get/set a credential.</tt> </tt>
+<a name="L456"></a><tt class="py-lineno">456</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L457"></a><tt class="py-lineno">457</tt> <tt class="py-line"><tt class="py-docstring"> This Storage is a 'view' into the multistore.</tt> </tt>
+<a name="L458"></a><tt class="py-lineno">458</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L459"></a><tt class="py-lineno">459</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L460"></a><tt class="py-lineno">460</tt> <tt class="py-line"><tt class="py-docstring"> key: The key used to retrieve the credential</tt> </tt>
+<a name="L461"></a><tt class="py-lineno">461</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L462"></a><tt class="py-lineno">462</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L463"></a><tt class="py-lineno">463</tt> <tt class="py-line"><tt class="py-docstring"> A Storage object that can be used to get/set this cred</tt> </tt>
+<a name="L464"></a><tt class="py-lineno">464</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L465"></a><tt class="py-lineno">465</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-91" class="py-name" targets="Class oauth2client.multistore_file._MultiStore._Storage=oauth2client.multistore_file._MultiStore._Storage-class.html"><a title="oauth2client.multistore_file._MultiStore._Storage" class="py-name" href="#" onclick="return doclink('link-91', '_Storage', 'link-91');">_Storage</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">key</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L466"></a><tt class="py-lineno">466</tt> <tt class="py-line"> </tt><script type="text/javascript">
<!--
expandto(location.href);
// -->
@@ -571,7 +633,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:26 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:47 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.multistore_file.Error-class.html b/docs/epy/oauth2client.multistore_file.Error-class.html
index 43924d5..01a29a8 100644
--- a/docs/epy/oauth2client.multistore_file.Error-class.html
+++ b/docs/epy/oauth2client.multistore_file.Error-class.html
@@ -55,12 +55,26 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class Error</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.multistore_file-pysrc.html#Error">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_error_4" name="class_hierarchy_for_error_4">
-<area shape="rect" id="node1" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
-<area shape="rect" id="node2" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
-<area shape="rect" id="node3" href="oauth2client.multistore_file.Error-class.html" title="Error" alt="" coords="68,123,119,151"/>
+<center> <map id="uml_class_diagram_for_oauth2cl_47" name="uml_class_diagram_for_oauth2cl_47">
+<area shape="rect" id="node1" href="oauth2client.multistore_file.Error-class.html" title="Base error for this module." alt="" coords="68,379,121,423"/>
+<area shape="rect" id="node217" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="32,316,159,335"/>
+<area shape="rect" id="node217" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="32,335,159,353"/>
+<area shape="rect" id="node2" href="javascript:void(0);" title="Common base class for all non-exit exceptions." alt="" coords="20,283,169,359"/>
+<area shape="rect" id="node218" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="17,31,175,49"/>
+<area shape="rect" id="node218" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="17,49,175,68"/>
+<area shape="rect" id="node218" href="javascript:void(0);" title="x.__delattr__('name') <==> del x.name" alt="" coords="17,71,175,89"/>
+<area shape="rect" id="node218" href="javascript:void(0);" title="x.__getattribute__('name') <==> x.name" alt="" coords="17,89,175,108"/>
+<area shape="rect" id="node218" href="javascript:void(0);" title="x[y]" alt="" coords="17,108,175,127"/>
+<area shape="rect" id="node218" href="javascript:void(0);" title="x[i:j]" alt="" coords="17,127,175,145"/>
+<area shape="rect" id="node218" href="javascript:void(0);" title="helper for pickle" alt="" coords="17,145,175,164"/>
+<area shape="rect" id="node218" href="javascript:void(0);" title="repr(x)" alt="" coords="17,164,175,183"/>
+<area shape="rect" id="node218" href="javascript:void(0);" title="x.__setattr__('name', value) <==> x.name = value" alt="" coords="17,183,175,201"/>
+<area shape="rect" id="node218" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="17,201,175,220"/>
+<area shape="rect" id="node218" href="javascript:void(0);" title="str(x)" alt="" coords="17,220,175,239"/>
+<area shape="rect" id="node218" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="17,239,175,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="5,6,187,263"/>
</map>
- <img src="class_hierarchy_for_error_4.gif" alt='' usemap="#class_hierarchy_for_error_4" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_oauth2cl_47.gif" alt='' usemap="#uml_class_diagram_for_oauth2cl_47" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -166,7 +180,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:25 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:46 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.multistore_file.NewerCredentialStoreError-class.html b/docs/epy/oauth2client.multistore_file.NewerCredentialStoreError-class.html
index fb1e0e7..09bd03b 100644
--- a/docs/epy/oauth2client.multistore_file.NewerCredentialStoreError-class.html
+++ b/docs/epy/oauth2client.multistore_file.NewerCredentialStoreError-class.html
@@ -55,13 +55,27 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class NewerCredentialStoreError</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.multistore_file-pysrc.html#NewerCredentialStoreError">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_newercrede" name="class_hierarchy_for_newercrede">
-<area shape="rect" id="node1" href="javascript:void(0);" title="exceptions.BaseException" alt="" coords="5,6,181,34"/>
-<area shape="rect" id="node2" href="javascript:void(0);" title="exceptions.Exception" alt="" coords="20,65,167,93"/>
-<area shape="rect" id="node3" href="oauth2client.multistore_file.Error-class.html" title="Error" alt="" coords="68,123,119,151"/>
-<area shape="rect" id="node4" href="oauth2client.multistore_file.NewerCredentialStoreError-class.html" title="NewerCredentialStoreError" alt="" coords="205,6,384,34"/>
+<center> <map id="uml_class_diagram_for_oauth2cl_48" name="uml_class_diagram_for_oauth2cl_48">
+<area shape="rect" id="node1" href="oauth2client.multistore_file.NewerCredentialStoreError-class.html" title="The credential store is a newer version that supported." alt="" coords="5,443,187,487"/>
+<area shape="rect" id="node2" href="oauth2client.multistore_file.Error-class.html" title="Base error for this module." alt="" coords="69,379,123,423"/>
+<area shape="rect" id="node222" href="javascript:void(0);" title="exceptions.BaseException.args" alt="" coords="19,31,176,49"/>
+<area shape="rect" id="node222" href="javascript:void(0);" title="exceptions.BaseException.message" alt="" coords="19,49,176,68"/>
+<area shape="rect" id="node222" href="javascript:void(0);" title="x.__delattr__('name') <==> del x.name" alt="" coords="19,71,176,89"/>
+<area shape="rect" id="node222" href="javascript:void(0);" title="x.__getattribute__('name') <==> x.name" alt="" coords="19,89,176,108"/>
+<area shape="rect" id="node222" href="javascript:void(0);" title="x[y]" alt="" coords="19,108,176,127"/>
+<area shape="rect" id="node222" href="javascript:void(0);" title="x[i:j]" alt="" coords="19,127,176,145"/>
+<area shape="rect" id="node222" href="javascript:void(0);" title="helper for pickle" alt="" coords="19,145,176,164"/>
+<area shape="rect" id="node222" href="javascript:void(0);" title="repr(x)" alt="" coords="19,164,176,183"/>
+<area shape="rect" id="node222" href="javascript:void(0);" title="x.__setattr__('name', value) <==> x.name = value" alt="" coords="19,183,176,201"/>
+<area shape="rect" id="node222" href="javascript:void(0);" title="exceptions.BaseException.__setstate__" alt="" coords="19,201,176,220"/>
+<area shape="rect" id="node222" href="javascript:void(0);" title="str(x)" alt="" coords="19,220,176,239"/>
+<area shape="rect" id="node222" href="javascript:void(0);" title="exceptions.BaseException.__unicode__" alt="" coords="19,239,176,257"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Common base class for all exceptions" alt="" coords="7,6,188,263"/>
+<area shape="rect" id="node221" href="javascript:void(0);" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="33,316,160,335"/>
+<area shape="rect" id="node221" href="javascript:void(0);" title="exceptions.Exception.__new__" alt="" coords="33,335,160,353"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Common base class for all non-exit exceptions." alt="" coords="21,283,171,359"/>
</map>
- <img src="class_hierarchy_for_newercrede.gif" alt='' usemap="#class_hierarchy_for_newercrede" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_oauth2cl_48.gif" alt='' usemap="#uml_class_diagram_for_oauth2cl_48" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -167,7 +181,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:25 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:46 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.multistore_file._MultiStore-class.html b/docs/epy/oauth2client.multistore_file._MultiStore-class.html
index 5d01ab5..9fd6054 100644
--- a/docs/epy/oauth2client.multistore_file._MultiStore-class.html
+++ b/docs/epy/oauth2client.multistore_file._MultiStore-class.html
@@ -55,10 +55,11 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class _MultiStore</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.multistore_file-pysrc.html#_MultiStore">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for__multistor" name="class_hierarchy_for__multistor">
-<area shape="rect" id="node1" href="oauth2client.multistore_file._MultiStore-class.html" title="_MultiStore" alt="" coords="5,6,93,34"/>
+<center> <map id="uml_class_diagram_for_oauth2cl_49" name="uml_class_diagram_for_oauth2cl_49">
+<area shape="rect" id="node223" href="oauth2client.multistore_file._MultiStore-class.html#__init__" title="Initialize the class." alt="" coords="17,39,303,57"/>
+<area shape="rect" id="node1" href="oauth2client.multistore_file._MultiStore-class.html" title="A file backed store for multiple credentials." alt="" coords="5,6,315,63"/>
</map>
- <img src="class_hierarchy_for__multistor.gif" alt='' usemap="#class_hierarchy_for__multistor" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_oauth2cl_49.gif" alt='' usemap="#uml_class_diagram_for_oauth2cl_49" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -273,6 +274,23 @@
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
+ <td><span class="summary-sig"><a href="oauth2client.multistore_file._MultiStore-class.html#_get_all_credential_keys" class="summary-sig-name" onclick="show_private();">_get_all_credential_keys</a>(<span class="summary-sig-arg">self</span>)</span><br />
+ Gets all the registered credential keys in the multistore.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="oauth2client.multistore_file-pysrc.html#_MultiStore._get_all_credential_keys">source code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
<td><span class="summary-sig"><a href="oauth2client.multistore_file._MultiStore-class.html#_get_credential" class="summary-sig-name" onclick="show_private();">_get_credential</a>(<span class="summary-sig-arg">self</span>,
<span class="summary-sig-arg">key</span>)</span><br />
Get a credential from the multistore.</td>
@@ -598,6 +616,31 @@
</dl>
</td></tr></table>
</div>
+<a name="_get_all_credential_keys"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">_get_all_credential_keys</span>(<span class="sig-arg">self</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="oauth2client.multistore_file-pysrc.html#_MultiStore._get_all_credential_keys">source code</a></span>
+ </td>
+ </tr></table>
+
+ <pre class="literalblock">
+Gets all the registered credential keys in the multistore.
+
+Returns:
+ A list of dictionaries corresponding to all the keys currently registered
+
+</pre>
+ <dl class="fields">
+ </dl>
+</td></tr></table>
+</div>
<a name="_get_credential"></a>
<div class="private">
<table class="details" border="1" cellpadding="3"
@@ -742,7 +785,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:25 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:46 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.multistore_file._MultiStore._Storage-class.html b/docs/epy/oauth2client.multistore_file._MultiStore._Storage-class.html
index 5ecf3fa..8b970f1 100644
--- a/docs/epy/oauth2client.multistore_file._MultiStore._Storage-class.html
+++ b/docs/epy/oauth2client.multistore_file._MultiStore._Storage-class.html
@@ -56,11 +56,20 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class _Storage</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.multistore_file-pysrc.html#_MultiStore._Storage">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for__storage" name="class_hierarchy_for__storage">
-<area shape="rect" id="node1" href="oauth2client.client.Storage-class.html" title="client.Storage" alt="" coords="5,6,107,34"/>
-<area shape="rect" id="node2" href="oauth2client.multistore_file._MultiStore._Storage-class.html" title="_Storage" alt="" coords="131,6,205,34"/>
+<center> <map id="uml_class_diagram_for_oauth2cl_50" name="uml_class_diagram_for_oauth2cl_50">
+<area shape="rect" id="node224" href="oauth2client.multistore_file._MultiStore._Storage-class.html#__init__" title="x.__init__(...) initializes x; see help(type(x)) for signature" alt="" coords="17,153,193,172"/>
+<area shape="rect" id="node224" href="oauth2client.multistore_file._MultiStore._Storage-class.html#acquire_lock" title="Acquires any lock necessary to access this Storage." alt="" coords="17,172,193,191"/>
+<area shape="rect" id="node224" href="oauth2client.multistore_file._MultiStore._Storage-class.html#release_lock" title="Release the Storage lock." alt="" coords="17,191,193,209"/>
+<area shape="rect" id="node224" href="oauth2client.multistore_file._MultiStore._Storage-class.html#locked_get" title="Retrieve credential." alt="" coords="17,209,193,228"/>
+<area shape="rect" id="node224" href="oauth2client.multistore_file._MultiStore._Storage-class.html#locked_put" title="Write a credential." alt="" coords="17,228,193,247"/>
+<area shape="rect" id="node224" href="oauth2client.multistore_file._MultiStore._Storage-class.html#locked_delete" title="Delete a credential." alt="" coords="17,247,193,265"/>
+<area shape="rect" id="node1" href="oauth2client.multistore_file._MultiStore._Storage-class.html" title="A Storage object that knows how to read/write a single credential." alt="" coords="5,121,205,271"/>
+<area shape="rect" id="node225" href="oauth2client.client.Storage-class.html#get" title="Retrieve credential." alt="" coords="43,39,168,57"/>
+<area shape="rect" id="node225" href="oauth2client.client.Storage-class.html#put" title="Write a credential." alt="" coords="43,57,168,76"/>
+<area shape="rect" id="node225" href="oauth2client.client.Storage-class.html#delete" title="Delete credential." alt="" coords="43,76,168,95"/>
+<area shape="rect" id="node2" href="oauth2client.client.Storage-class.html" title="Base class for all Storage objects." alt="" coords="31,6,180,101"/>
</map>
- <img src="class_hierarchy_for__storage.gif" alt='' usemap="#class_hierarchy_for__storage" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_oauth2cl_50.gif" alt='' usemap="#uml_class_diagram_for_oauth2cl_50" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -457,7 +466,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:25 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:46 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.old_run-module.html b/docs/epy/oauth2client.old_run-module.html
new file mode 100644
index 0000000..63c4ebc
--- /dev/null
+++ b/docs/epy/oauth2client.old_run-module.html
@@ -0,0 +1,250 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>oauth2client.old_run</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+
+ <!-- Tree link -->
+ <th> <a
+ href="module-tree.html">Trees</a> </th>
+
+ <!-- Index link -->
+ <th> <a
+ href="identifier-index.html">Indices</a> </th>
+
+ <!-- Help link -->
+ <th> <a
+ href="help.html">Help</a> </th>
+
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="oauth2client-module.html">Package oauth2client</a> ::
+ Module old_run
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >] | <a href="oauth2client.old_run-module.html"
+ target="_top">no frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<!-- ==================== MODULE DESCRIPTION ==================== -->
+<h1 class="epydoc">Module old_run</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.old_run-pysrc.html">source code</a></span></p>
+<pre class="literalblock">
+This module holds the old run() function which is deprecated, the
+tools.run_flow() function should be used in its place.
+
+</pre>
+
+<!-- ==================== FUNCTIONS ==================== -->
+<a name="section-Functions"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Functions</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Functions"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a href="oauth2client.old_run-module.html#run" class="summary-sig-name">run</a>(<span class="summary-sig-arg">flow</span>,
+ <span class="summary-sig-arg">storage</span>,
+ <span class="summary-sig-arg">http</span>=<span class="summary-sig-default">None</span>)</span><br />
+ Core code for a command-line application.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="oauth2client.old_run-pysrc.html#run">source code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+</table>
+<!-- ==================== VARIABLES ==================== -->
+<a name="section-Variables"></a>
+<table class="summary" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Variables</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-Variables"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <a name="FLAGS"></a><span class="summary-name">FLAGS</span> = <code title="gflags.FLAGS">gflags.FLAGS</code>
+ </td>
+ </tr>
+</table>
+<!-- ==================== FUNCTION DETAILS ==================== -->
+<a name="section-FunctionDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Function Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-FunctionDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="run"></a>
+<div>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr valign="top"><td>
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">run</span>(<span class="sig-arg">flow</span>,
+ <span class="sig-arg">storage</span>,
+ <span class="sig-arg">http</span>=<span class="sig-default">None</span>)</span>
+ </h3>
+ </td><td align="right" valign="top"
+ ><span class="codelink"><a href="oauth2client.old_run-pysrc.html#run">source code</a></span>
+ </td>
+ </tr></table>
+
+ <pre class="literalblock">
+Core code for a command-line application.
+
+The run() function is called from your application and runs through all
+the steps to obtain credentials. It takes a Flow argument and attempts to
+open an authorization server page in the user's default web browser. The
+server asks the user to grant your application access to the user's data.
+If the user grants access, the run() function returns new credentials. The
+new credentials are also stored in the Storage argument, which updates the
+file associated with the Storage object.
+
+It presumes it is run from a command-line application and supports the
+following flags:
+
+ --auth_host_name: Host name to use when running a local web server
+ to handle redirects during OAuth authorization.
+ (default: 'localhost')
+
+ --auth_host_port: Port to use when running a local web server to handle
+ redirects during OAuth authorization.;
+ repeat this option to specify a list of values
+ (default: '[8080, 8090]')
+ (an integer)
+
+ --[no]auth_local_webserver: Run a local web server to handle redirects
+ during OAuth authorization.
+ (default: 'true')
+
+Since it uses flags make sure to initialize the gflags module before
+calling run().
+
+Args:
+ flow: Flow, an OAuth 2.0 Flow to step through.
+ storage: Storage, a Storage to store the credential in.
+ http: An instance of httplib2.Http.request
+ or something that acts like it.
+
+Returns:
+ Credentials, the obtained credential.
+
+</pre>
+ <dl class="fields">
+ <dt>Decorators:</dt>
+ <dd><ul class="nomargin-top">
+ <li><code>@util.positional(2)</code></li>
+ </ul></dd>
+ </dl>
+</td></tr></table>
+</div>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+
+ <!-- Tree link -->
+ <th> <a
+ href="module-tree.html">Trees</a> </th>
+
+ <!-- Index link -->
+ <th> <a
+ href="identifier-index.html">Indices</a> </th>
+
+ <!-- Help link -->
+ <th> <a
+ href="help.html">Help</a> </th>
+
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:42 2013
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/docs/epy/oauth2client.old_run-pysrc.html b/docs/epy/oauth2client.old_run-pysrc.html
new file mode 100644
index 0000000..d68491e
--- /dev/null
+++ b/docs/epy/oauth2client.old_run-pysrc.html
@@ -0,0 +1,267 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>oauth2client.old_run</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+
+ <!-- Tree link -->
+ <th> <a
+ href="module-tree.html">Trees</a> </th>
+
+ <!-- Index link -->
+ <th> <a
+ href="identifier-index.html">Indices</a> </th>
+
+ <!-- Help link -->
+ <th> <a
+ href="help.html">Help</a> </th>
+
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table width="100%" cellpadding="0" cellspacing="0">
+ <tr valign="top">
+ <td width="100%">
+ <span class="breadcrumbs">
+ <a href="oauth2client-module.html">Package oauth2client</a> ::
+ Module old_run
+ </span>
+ </td>
+ <td>
+ <table cellpadding="0" cellspacing="0">
+ <!-- hide/show private -->
+ <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide private</a>]</span></td></tr>
+ <tr><td align="right"><span class="options"
+ >[<a href="frames.html" target="_top">frames</a
+ >] | <a href="oauth2client.old_run-pysrc.html"
+ target="_top">no frames</a>]</span></td></tr>
+ </table>
+ </td>
+ </tr>
+</table>
+<h1 class="epydoc">Source Code for <a href="oauth2client.old_run-module.html">Module oauth2client.old_run</a></h1>
+<pre class="py-src">
+<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2013 Google Inc.</tt> </tt>
+<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"># Licensed under the Apache License, Version 2.0 (the "License");</tt> </tt>
+<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"># you may not use this file except in compliance with the License.</tt> </tt>
+<a name="L5"></a><tt class="py-lineno"> 5</tt> <tt class="py-line"><tt class="py-comment"># You may obtain a copy of the License at</tt> </tt>
+<a name="L6"></a><tt class="py-lineno"> 6</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L7"></a><tt class="py-lineno"> 7</tt> <tt class="py-line"><tt class="py-comment"># http://www.apache.org/licenses/LICENSE-2.0</tt> </tt>
+<a name="L8"></a><tt class="py-lineno"> 8</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt>
+<a name="L9"></a><tt class="py-lineno"> 9</tt> <tt class="py-line"><tt class="py-comment"># Unless required by applicable law or agreed to in writing, software</tt> </tt>
+<a name="L10"></a><tt class="py-lineno"> 10</tt> <tt class="py-line"><tt class="py-comment"># distributed under the License is distributed on an "AS IS" BASIS,</tt> </tt>
+<a name="L11"></a><tt class="py-lineno"> 11</tt> <tt class="py-line"><tt class="py-comment"># WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</tt> </tt>
+<a name="L12"></a><tt class="py-lineno"> 12</tt> <tt class="py-line"><tt class="py-comment"># See the License for the specific language governing permissions and</tt> </tt>
+<a name="L13"></a><tt class="py-lineno"> 13</tt> <tt class="py-line"><tt class="py-comment"># limitations under the License.</tt> </tt>
+<a name="L14"></a><tt class="py-lineno"> 14</tt> <tt class="py-line"> </tt>
+<a name="L15"></a><tt class="py-lineno"> 15</tt> <tt class="py-line"><tt class="py-docstring">"""This module holds the old run() function which is deprecated, the</tt> </tt>
+<a name="L16"></a><tt class="py-lineno"> 16</tt> <tt class="py-line"><tt class="py-docstring">tools.run_flow() function should be used in its place."""</tt> </tt>
+<a name="L17"></a><tt class="py-lineno"> 17</tt> <tt class="py-line"> </tt>
+<a name="L18"></a><tt class="py-lineno"> 18</tt> <tt class="py-line"> </tt>
+<a name="L19"></a><tt class="py-lineno"> 19</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt> </tt>
+<a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">socket</tt> </tt>
+<a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sys</tt> </tt>
+<a name="L22"></a><tt class="py-lineno"> 22</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">webbrowser</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt> <tt class="py-line"> </tt>
+<a name="L24"></a><tt class="py-lineno"> 24</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">gflags</tt> </tt>
+<a name="L25"></a><tt class="py-lineno"> 25</tt> <tt class="py-line"> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-0" class="py-name" targets="Package oauth2client=oauth2client-module.html"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-0', 'oauth2client', 'link-0');">oauth2client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-1" class="py-name" targets="Module oauth2client.client=oauth2client.client-module.html"><a title="oauth2client.client" class="py-name" href="#" onclick="return doclink('link-1', 'client', 'link-1');">client</a></tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-2" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-2', 'oauth2client', 'link-0');">oauth2client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-3" class="py-name" targets="Module oauth2client.util=oauth2client.util-module.html"><a title="oauth2client.util" class="py-name" href="#" onclick="return doclink('link-3', 'util', 'link-3');">util</a></tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-4" class="py-name" targets="Module oauth2client.tools=oauth2client.tools-module.html"><a title="oauth2client.tools" class="py-name" href="#" onclick="return doclink('link-4', 'tools', 'link-4');">tools</a></tt> <tt class="py-keyword">import</tt> <tt id="link-5" class="py-name" targets="Class oauth2client.tools.ClientRedirectHandler=oauth2client.tools.ClientRedirectHandler-class.html"><a title="oauth2client.tools.ClientRedirectHandler" class="py-name" href="#" onclick="return doclink('link-5', 'ClientRedirectHandler', 'link-5');">ClientRedirectHandler</a></tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-6" class="py-name"><a title="oauth2client.tools" class="py-name" href="#" onclick="return doclink('link-6', 'tools', 'link-4');">tools</a></tt> <tt class="py-keyword">import</tt> <tt id="link-7" class="py-name" targets="Class oauth2client.tools.ClientRedirectServer=oauth2client.tools.ClientRedirectServer-class.html"><a title="oauth2client.tools.ClientRedirectServer" class="py-name" href="#" onclick="return doclink('link-7', 'ClientRedirectServer', 'link-7');">ClientRedirectServer</a></tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"><tt id="link-8" class="py-name" targets="Variable oauth2client.old_run.FLAGS=oauth2client.old_run-module.html#FLAGS"><a title="oauth2client.old_run.FLAGS" class="py-name" href="#" onclick="return doclink('link-8', 'FLAGS', 'link-8');">FLAGS</a></tt> <tt class="py-op">=</tt> <tt class="py-name">gflags</tt><tt class="py-op">.</tt><tt id="link-9" class="py-name"><a title="oauth2client.old_run.FLAGS" class="py-name" href="#" onclick="return doclink('link-9', 'FLAGS', 'link-8');">FLAGS</a></tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"><tt class="py-name">gflags</tt><tt class="py-op">.</tt><tt class="py-name">DEFINE_boolean</tt><tt class="py-op">(</tt><tt class="py-string">'auth_local_webserver'</tt><tt class="py-op">,</tt> <tt class="py-name">True</tt><tt class="py-op">,</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-string">'Run a local web server to handle redirects during '</tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"> <tt class="py-string">'OAuth authorization.'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"><tt class="py-name">gflags</tt><tt class="py-op">.</tt><tt class="py-name">DEFINE_string</tt><tt class="py-op">(</tt><tt class="py-string">'auth_host_name'</tt><tt class="py-op">,</tt> <tt class="py-string">'localhost'</tt><tt class="py-op">,</tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-string">'Host name to use when running a local web server to '</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"> <tt class="py-string">'handle redirects during OAuth authorization.'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"><tt class="py-name">gflags</tt><tt class="py-op">.</tt><tt class="py-name">DEFINE_multi_int</tt><tt class="py-op">(</tt><tt class="py-string">'auth_host_port'</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-number">8080</tt><tt class="py-op">,</tt> <tt class="py-number">8090</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-string">'Port to use when running a local web server to '</tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"> <tt class="py-string">'handle redirects during OAuth authorization.'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="run"></a><div id="run-def"><a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"><tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-10" class="py-name" targets="Function oauth2client.util.positional()=oauth2client.util-module.html#positional"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-10', 'positional', 'link-10');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt> <a class="py-toggle" href="#" id="run-toggle" onclick="return toggle('run');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.old_run-module.html#run">run</a><tt class="py-op">(</tt><tt class="py-param">flow</tt><tt class="py-op">,</tt> <tt class="py-param">storage</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="run-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="run-expanded"><a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"> <tt class="py-docstring">"""Core code for a command-line application.</tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"><tt class="py-docstring"> The run() function is called from your application and runs through all</tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"><tt class="py-docstring"> the steps to obtain credentials. It takes a Flow argument and attempts to</tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"><tt class="py-docstring"> open an authorization server page in the user's default web browser. The</tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"><tt class="py-docstring"> server asks the user to grant your application access to the user's data.</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"><tt class="py-docstring"> If the user grants access, the run() function returns new credentials. The</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"><tt class="py-docstring"> new credentials are also stored in the Storage argument, which updates the</tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"><tt class="py-docstring"> file associated with the Storage object.</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"><tt class="py-docstring"> It presumes it is run from a command-line application and supports the</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"><tt class="py-docstring"> following flags:</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"><tt class="py-docstring"> --auth_host_name: Host name to use when running a local web server</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"><tt class="py-docstring"> to handle redirects during OAuth authorization.</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"><tt class="py-docstring"> (default: 'localhost')</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"><tt class="py-docstring"> --auth_host_port: Port to use when running a local web server to handle</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"><tt class="py-docstring"> redirects during OAuth authorization.;</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"><tt class="py-docstring"> repeat this option to specify a list of values</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"><tt class="py-docstring"> (default: '[8080, 8090]')</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"><tt class="py-docstring"> (an integer)</tt> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"><tt class="py-docstring"> --[no]auth_local_webserver: Run a local web server to handle redirects</tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"><tt class="py-docstring"> during OAuth authorization.</tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"><tt class="py-docstring"> (default: 'true')</tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"><tt class="py-docstring"> Since it uses flags make sure to initialize the gflags module before</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"><tt class="py-docstring"> calling run().</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"><tt class="py-docstring"> flow: Flow, an OAuth 2.0 Flow to step through.</tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"><tt class="py-docstring"> storage: Storage, a Storage to store the credential in.</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"><tt class="py-docstring"> http: An instance of httplib2.Http.request</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"><tt class="py-docstring"> or something that acts like it.</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"><tt class="py-docstring"> Credentials, the obtained credential.</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">'This function, oauth2client.tools.run(), and the use of '</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> <tt class="py-string">'the gflags library are deprecated and will be removed in a future '</tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"> <tt class="py-string">'version of the library.'</tt><tt class="py-op">)</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-11" class="py-name"><a title="oauth2client.old_run.FLAGS" class="py-name" href="#" onclick="return doclink('link-11', 'FLAGS', 'link-8');">FLAGS</a></tt><tt class="py-op">.</tt><tt class="py-name">auth_local_webserver</tt><tt class="py-op">:</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"> <tt class="py-name">success</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"> <tt class="py-name">port_number</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">port</tt> <tt class="py-keyword">in</tt> <tt id="link-12" class="py-name"><a title="oauth2client.old_run.FLAGS" class="py-name" href="#" onclick="return doclink('link-12', 'FLAGS', 'link-8');">FLAGS</a></tt><tt class="py-op">.</tt><tt class="py-name">auth_host_port</tt><tt class="py-op">:</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"> <tt class="py-name">port_number</tt> <tt class="py-op">=</tt> <tt class="py-name">port</tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"> <tt class="py-name">httpd</tt> <tt class="py-op">=</tt> <tt id="link-13" class="py-name"><a title="oauth2client.tools.ClientRedirectServer" class="py-name" href="#" onclick="return doclink('link-13', 'ClientRedirectServer', 'link-7');">ClientRedirectServer</a></tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt id="link-14" class="py-name"><a title="oauth2client.old_run.FLAGS" class="py-name" href="#" onclick="return doclink('link-14', 'FLAGS', 'link-8');">FLAGS</a></tt><tt class="py-op">.</tt><tt class="py-name">auth_host_name</tt><tt class="py-op">,</tt> <tt class="py-name">port</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"> <tt id="link-15" class="py-name"><a title="oauth2client.tools.ClientRedirectHandler" class="py-name" href="#" onclick="return doclink('link-15', 'ClientRedirectHandler', 'link-5');">ClientRedirectHandler</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"> <tt class="py-name">success</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt>
+<a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"> <tt id="link-16" class="py-name"><a title="oauth2client.old_run.FLAGS" class="py-name" href="#" onclick="return doclink('link-16', 'FLAGS', 'link-8');">FLAGS</a></tt><tt class="py-op">.</tt><tt class="py-name">auth_local_webserver</tt> <tt class="py-op">=</tt> <tt class="py-name">success</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">success</tt><tt class="py-op">:</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-string">'Failed to start a local webserver listening on either port 8080'</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-string">'or port 9090. Please check your firewall settings and locally'</tt> </tt>
+<a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-string">'running programs that may be blocking or using those ports.'</tt> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-string">'Falling back to --noauth_local_webserver and continuing with'</tt><tt class="py-op">,</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-string">'authorization.'</tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-17" class="py-name"><a title="oauth2client.old_run.FLAGS" class="py-name" href="#" onclick="return doclink('link-17', 'FLAGS', 'link-8');">FLAGS</a></tt><tt class="py-op">.</tt><tt class="py-name">auth_local_webserver</tt><tt class="py-op">:</tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> <tt class="py-name">oauth_callback</tt> <tt class="py-op">=</tt> <tt class="py-string">'http://%s:%s/'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-18" class="py-name"><a title="oauth2client.old_run.FLAGS" class="py-name" href="#" onclick="return doclink('link-18', 'FLAGS', 'link-8');">FLAGS</a></tt><tt class="py-op">.</tt><tt class="py-name">auth_host_name</tt><tt class="py-op">,</tt> <tt class="py-name">port_number</tt><tt class="py-op">)</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"> <tt class="py-name">oauth_callback</tt> <tt class="py-op">=</tt> <tt id="link-19" class="py-name"><a title="oauth2client.client" class="py-name" href="#" onclick="return doclink('link-19', 'client', 'link-1');">client</a></tt><tt class="py-op">.</tt><tt id="link-20" class="py-name" targets="Variable oauth2client.client.OOB_CALLBACK_URN=oauth2client.client-module.html#OOB_CALLBACK_URN"><a title="oauth2client.client.OOB_CALLBACK_URN" class="py-name" href="#" onclick="return doclink('link-20', 'OOB_CALLBACK_URN', 'link-20');">OOB_CALLBACK_URN</a></tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"> <tt id="link-21" class="py-name" targets="Variable oauth2client.appengine.OAuth2Decorator.flow=oauth2client.appengine.OAuth2Decorator-class.html#flow"><a title="oauth2client.appengine.OAuth2Decorator.flow" class="py-name" href="#" onclick="return doclink('link-21', 'flow', 'link-21');">flow</a></tt><tt class="py-op">.</tt><tt class="py-name">redirect_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">oauth_callback</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"> <tt id="link-22" class="py-name" targets="Method oauth2client.appengine.OAuth2Decorator.authorize_url()=oauth2client.appengine.OAuth2Decorator-class.html#authorize_url"><a title="oauth2client.appengine.OAuth2Decorator.authorize_url" class="py-name" href="#" onclick="return doclink('link-22', 'authorize_url', 'link-22');">authorize_url</a></tt> <tt class="py-op">=</tt> <tt id="link-23" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator.flow" class="py-name" href="#" onclick="return doclink('link-23', 'flow', 'link-21');">flow</a></tt><tt class="py-op">.</tt><tt id="link-24" class="py-name" targets="Method oauth2client.client.OAuth2WebServerFlow.step1_get_authorize_url()=oauth2client.client.OAuth2WebServerFlow-class.html#step1_get_authorize_url"><a title="oauth2client.client.OAuth2WebServerFlow.step1_get_authorize_url" class="py-name" href="#" onclick="return doclink('link-24', 'step1_get_authorize_url', 'link-24');">step1_get_authorize_url</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-25" class="py-name"><a title="oauth2client.old_run.FLAGS" class="py-name" href="#" onclick="return doclink('link-25', 'FLAGS', 'link-8');">FLAGS</a></tt><tt class="py-op">.</tt><tt class="py-name">auth_local_webserver</tt><tt class="py-op">:</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"> <tt class="py-name">webbrowser</tt><tt class="py-op">.</tt><tt class="py-name">open</tt><tt class="py-op">(</tt><tt id="link-26" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator.authorize_url" class="py-name" href="#" onclick="return doclink('link-26', 'authorize_url', 'link-22');">authorize_url</a></tt><tt class="py-op">,</tt> <tt class="py-name">new</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">autoraise</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-string">'Your browser has been opened to visit:'</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-string">' '</tt> <tt class="py-op">+</tt> <tt id="link-27" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator.authorize_url" class="py-name" href="#" onclick="return doclink('link-27', 'authorize_url', 'link-22');">authorize_url</a></tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-string">'If your browser is on a different machine then exit and re-run'</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-string">'this application with the command-line parameter '</tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-string">' --noauth_local_webserver'</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-string">'Go to the following link in your browser:'</tt> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-string">' '</tt> <tt class="py-op">+</tt> <tt id="link-28" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator.authorize_url" class="py-name" href="#" onclick="return doclink('link-28', 'authorize_url', 'link-22');">authorize_url</a></tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"> <tt class="py-name">code</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-29" class="py-name"><a title="oauth2client.old_run.FLAGS" class="py-name" href="#" onclick="return doclink('link-29', 'FLAGS', 'link-8');">FLAGS</a></tt><tt class="py-op">.</tt><tt class="py-name">auth_local_webserver</tt><tt class="py-op">:</tt> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"> <tt class="py-name">httpd</tt><tt class="py-op">.</tt><tt class="py-name">handle_request</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'error'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">httpd</tt><tt class="py-op">.</tt><tt id="link-30" class="py-name" targets="Variable oauth2client.tools.ClientRedirectServer.query_params=oauth2client.tools.ClientRedirectServer-class.html#query_params"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-30', 'query_params', 'link-30');">query_params</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exit</tt><tt class="py-op">(</tt><tt class="py-string">'Authentication request was rejected.'</tt><tt class="py-op">)</tt> </tt>
+<a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'code'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">httpd</tt><tt class="py-op">.</tt><tt id="link-31" class="py-name"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-31', 'query_params', 'link-30');">query_params</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"> <tt class="py-name">code</tt> <tt class="py-op">=</tt> <tt class="py-name">httpd</tt><tt class="py-op">.</tt><tt id="link-32" class="py-name"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-32', 'query_params', 'link-30');">query_params</a></tt><tt class="py-op">[</tt><tt class="py-string">'code'</tt><tt class="py-op">]</tt> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-string">'Failed to find "code" in the query parameters of the redirect.'</tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exit</tt><tt class="py-op">(</tt><tt class="py-string">'Try running with --noauth_local_webserver.'</tt><tt class="py-op">)</tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"> <tt class="py-name">code</tt> <tt class="py-op">=</tt> <tt class="py-name">raw_input</tt><tt class="py-op">(</tt><tt class="py-string">'Enter verification code: '</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L152"></a><tt class="py-lineno">152</tt> <tt class="py-line"> <tt class="py-name">credential</tt> <tt class="py-op">=</tt> <tt id="link-33" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator.flow" class="py-name" href="#" onclick="return doclink('link-33', 'flow', 'link-21');">flow</a></tt><tt class="py-op">.</tt><tt id="link-34" class="py-name" targets="Method oauth2client.client.OAuth2WebServerFlow.step2_exchange()=oauth2client.client.OAuth2WebServerFlow-class.html#step2_exchange"><a title="oauth2client.client.OAuth2WebServerFlow.step2_exchange" class="py-name" href="#" onclick="return doclink('link-34', 'step2_exchange', 'link-34');">step2_exchange</a></tt><tt class="py-op">(</tt><tt class="py-name">code</tt><tt class="py-op">,</tt> <tt id="link-35" class="py-name" targets="Module apiclient.http=apiclient.http-module.html,Method oauth2client.appengine.OAuth2Decorator.http()=oauth2client.appengine.OAuth2Decorator-class.html#http"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-35', 'http', 'link-35');">http</a></tt><tt class="py-op">=</tt><tt id="link-36" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-36', 'http', 'link-35');">http</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-37" class="py-name"><a title="oauth2client.client" class="py-name" href="#" onclick="return doclink('link-37', 'client', 'link-1');">client</a></tt><tt class="py-op">.</tt><tt id="link-38" class="py-name" targets="Class oauth2client.client.FlowExchangeError=oauth2client.client.FlowExchangeError-class.html"><a title="oauth2client.client.FlowExchangeError" class="py-name" href="#" onclick="return doclink('link-38', 'FlowExchangeError', 'link-38');">FlowExchangeError</a></tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exit</tt><tt class="py-op">(</tt><tt class="py-string">'Authentication has failed: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">e</tt><tt class="py-op">)</tt> </tt>
+<a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"> <tt class="py-name">storage</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name" targets="Method oauth2client.client.Storage.put()=oauth2client.client.Storage-class.html#put"><a title="oauth2client.client.Storage.put" class="py-name" href="#" onclick="return doclink('link-39', 'put', 'link-39');">put</a></tt><tt class="py-op">(</tt><tt class="py-name">credential</tt><tt class="py-op">)</tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"> <tt class="py-name">credential</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name" targets="Method oauth2client.client.OAuth2Credentials.set_store()=oauth2client.client.OAuth2Credentials-class.html#set_store"><a title="oauth2client.client.OAuth2Credentials.set_store" class="py-name" href="#" onclick="return doclink('link-40', 'set_store', 'link-40');">set_store</a></tt><tt class="py-op">(</tt><tt class="py-name">storage</tt><tt class="py-op">)</tt> </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-string">'Authentication successful.'</tt> </tt>
+<a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">credential</tt> </tt>
+</div><a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"> </tt><script type="text/javascript">
+<!--
+expandto(location.href);
+// -->
+</script>
+</pre>
+<br />
+<!-- ==================== NAVIGATION BAR ==================== -->
+<table class="navbar" border="0" width="100%" cellpadding="0"
+ bgcolor="#a0c0ff" cellspacing="0">
+ <tr valign="middle">
+
+ <!-- Tree link -->
+ <th> <a
+ href="module-tree.html">Trees</a> </th>
+
+ <!-- Index link -->
+ <th> <a
+ href="identifier-index.html">Indices</a> </th>
+
+ <!-- Help link -->
+ <th> <a
+ href="help.html">Help</a> </th>
+
+ <th class="navbar" width="100%"></th>
+ </tr>
+</table>
+<table border="0" cellpadding="0" cellspacing="0" width="100%%">
+ <tr>
+ <td align="left" class="footer">
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:47 2013
+ </td>
+ <td align="right" class="footer">
+ <a target="mainFrame" href="http://epydoc.sourceforge.net"
+ >http://epydoc.sourceforge.net</a>
+ </td>
+ </tr>
+</table>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/docs/epy/oauth2client.tools-module.html b/docs/epy/oauth2client.tools-module.html
index 7ad7db6..888070d 100644
--- a/docs/epy/oauth2client.tools-module.html
+++ b/docs/epy/oauth2client.tools-module.html
@@ -123,11 +123,46 @@
</td><td class="summary">
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr>
- <td><span class="summary-sig"><a href="oauth2client.tools-module.html#run" class="summary-sig-name">run</a>(<span class="summary-sig-arg">flow</span>,
+ <td><span class="summary-sig"><a href="oauth2client.tools-module.html#run_flow" class="summary-sig-name">run_flow</a>(<span class="summary-sig-arg">flow</span>,
<span class="summary-sig-arg">storage</span>,
+ <span class="summary-sig-arg">flags</span>,
<span class="summary-sig-arg">http</span>=<span class="summary-sig-default">None</span>)</span><br />
Core code for a command-line application.</td>
<td align="right" valign="top">
+ <span class="codelink"><a href="oauth2client.tools-pysrc.html#run_flow">source code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a name="message_if_missing"></a><span class="summary-sig-name">message_if_missing</span>(<span class="summary-sig-arg">filename</span>)</span><br />
+ Helpful message to display if the CLIENT_SECRETS file is missing.</td>
+ <td align="right" valign="top">
+ <span class="codelink"><a href="oauth2client.tools-pysrc.html#message_if_missing">source code</a></span>
+
+ </td>
+ </tr>
+ </table>
+
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <table width="100%" cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td><span class="summary-sig"><a name="run"></a><span class="summary-sig-name">run</span>(<span class="summary-sig-arg">*args</span>,
+ <span class="summary-sig-arg">**kwargs</span>)</span></td>
+ <td align="right" valign="top">
<span class="codelink"><a href="oauth2client.tools-pysrc.html#run">source code</a></span>
</td>
@@ -158,7 +193,22 @@
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type"> </span>
</td><td class="summary">
- <a name="FLAGS"></a><span class="summary-name">FLAGS</span> = <code title="gflags.FLAGS">gflags.FLAGS</code>
+ <a href="oauth2client.tools-module.html#_CLIENT_SECRETS_MESSAGE" class="summary-name" onclick="show_private();">_CLIENT_SECRETS_MESSAGE</a> = <code title=""""WARNING: Please configure OAuth 2.0
+
+To make this sample run you will need to populate the client_secrets.j\
+son file
+found at:
+
+ %s
+
+...">"""WARNING: Please configure OAuth <code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <a name="argparser"></a><span class="summary-name">argparser</span> = <code title="argparse.ArgumentParser(add_help= False)">argparse.ArgumentParser(add_help= False)</code>
</td>
</tr>
</table>
@@ -180,19 +230,20 @@
</td>
</tr>
</table>
-<a name="run"></a>
+<a name="run_flow"></a>
<div>
<table class="details" border="1" cellpadding="3"
cellspacing="0" width="100%" bgcolor="white">
<tr><td>
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr valign="top"><td>
- <h3 class="epydoc"><span class="sig"><span class="sig-name">run</span>(<span class="sig-arg">flow</span>,
+ <h3 class="epydoc"><span class="sig"><span class="sig-name">run_flow</span>(<span class="sig-arg">flow</span>,
<span class="sig-arg">storage</span>,
+ <span class="sig-arg">flags</span>,
<span class="sig-arg">http</span>=<span class="sig-default">None</span>)</span>
</h3>
</td><td align="right" valign="top"
- ><span class="codelink"><a href="oauth2client.tools-pysrc.html#run">source code</a></span>
+ ><span class="codelink"><a href="oauth2client.tools-pysrc.html#run_flow">source code</a></span>
</td>
</tr></table>
@@ -224,12 +275,19 @@
during OAuth authorization.
(default: 'true')
-Since it uses flags make sure to initialize the gflags module before calling
-run().
+The tools module defines an ArgumentParser the already contains the flag
+definitions that run() requires. You can pass that ArgumentParser to your
+ArgumentParser constructor:
+
+ parser = argparse.ArgumentParser(description=__doc__,
+ formatter_class=argparse.RawDescriptionHelpFormatter,
+ parents=[tools.run_parser])
+ flags = parser.parse_args(argv)
Args:
flow: Flow, an OAuth 2.0 Flow to step through.
storage: Storage, a Storage to store the credential in.
+ flags: argparse.ArgumentParser, the command-line flags.
http: An instance of httplib2.Http.request
or something that acts like it.
@@ -240,12 +298,57 @@
<dl class="fields">
<dt>Decorators:</dt>
<dd><ul class="nomargin-top">
- <li><code>@util.positional(2)</code></li>
+ <li><code>@util.positional(3)</code></li>
</ul></dd>
</dl>
</td></tr></table>
</div>
<br />
+<!-- ==================== VARIABLES DETAILS ==================== -->
+<a name="section-VariablesDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Variables Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-VariablesDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="_CLIENT_SECRETS_MESSAGE"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">_CLIENT_SECRETS_MESSAGE</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+"""WARNING: Please configure OAuth 2.0
+
+To make this sample run you will need to populate the client_secrets.j<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+son file
+found at:
+
+ %s
+
+<code class="variable-ellipsis">...</code>
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<br />
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
@@ -269,7 +372,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:23 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:42 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.tools-pysrc.html b/docs/epy/oauth2client.tools-pysrc.html
index 34fc4f4..1050bbd 100644
--- a/docs/epy/oauth2client.tools-pysrc.html
+++ b/docs/epy/oauth2client.tools-pysrc.html
@@ -53,7 +53,7 @@
</table>
<h1 class="epydoc">Source Code for <a href="oauth2client.tools-module.html">Module oauth2client.tools</a></h1>
<pre class="py-src">
-<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2010 Google Inc.</tt> </tt>
+<a name="L1"></a><tt class="py-lineno"> 1</tt> <tt class="py-line"><tt class="py-comment"># Copyright (C) 2013 Google Inc.</tt> </tt>
<a name="L2"></a><tt class="py-lineno"> 2</tt> <tt class="py-line"><tt class="py-comment">#</tt> </tt>
<a name="L3"></a><tt class="py-lineno"> 3</tt> <tt class="py-line"><tt class="py-comment"># Licensed under the Apache License, Version 2.0 (the "License");</tt> </tt>
<a name="L4"></a><tt class="py-lineno"> 4</tt> <tt class="py-line"><tt class="py-comment"># you may not use this file except in compliance with the License.</tt> </tt>
@@ -75,212 +75,232 @@
<a name="L20"></a><tt class="py-lineno"> 20</tt> <tt class="py-line"><tt class="py-docstring">"""</tt> </tt>
<a name="L21"></a><tt class="py-lineno"> 21</tt> <tt class="py-line"> </tt>
<a name="L22"></a><tt class="py-lineno"> 22</tt> <tt class="py-line"><tt class="py-name">__author__</tt> <tt class="py-op">=</tt> <tt class="py-string">'jcgregorio@google.com (Joe Gregorio)'</tt> </tt>
-<a name="L23"></a><tt class="py-lineno"> 23</tt> <tt class="py-line"><tt class="py-name">__all__</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'run'</tt><tt class="py-op">]</tt> </tt>
+<a name="L23"></a><tt class="py-lineno"> 23</tt> <tt class="py-line"><tt class="py-name">__all__</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'argparser'</tt><tt class="py-op">,</tt> <tt class="py-string">'run_flow'</tt><tt class="py-op">,</tt> <tt class="py-string">'run'</tt><tt class="py-op">,</tt> <tt class="py-string">'message_if_missing'</tt><tt class="py-op">]</tt> </tt>
<a name="L24"></a><tt class="py-lineno"> 24</tt> <tt class="py-line"> </tt>
<a name="L25"></a><tt class="py-lineno"> 25</tt> <tt class="py-line"> </tt>
<a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">BaseHTTPServer</tt> </tt>
-<a name="L27"></a><tt class="py-lineno"> 27</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">gflags</tt> </tt>
-<a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">socket</tt> </tt>
-<a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sys</tt> </tt>
-<a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">webbrowser</tt> </tt>
-<a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"> </tt>
-<a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-0" class="py-name" targets="Package oauth2client=oauth2client-module.html"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-0', 'oauth2client', 'link-0');">oauth2client</a></tt><tt class="py-op">.</tt><tt id="link-1" class="py-name" targets="Module oauth2client.client=oauth2client.client-module.html"><a title="oauth2client.client" class="py-name" href="#" onclick="return doclink('link-1', 'client', 'link-1');">client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-2" class="py-name" targets="Class oauth2client.client.FlowExchangeError=oauth2client.client.FlowExchangeError-class.html"><a title="oauth2client.client.FlowExchangeError" class="py-name" href="#" onclick="return doclink('link-2', 'FlowExchangeError', 'link-2');">FlowExchangeError</a></tt> </tt>
-<a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-3" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-3', 'oauth2client', 'link-0');">oauth2client</a></tt><tt class="py-op">.</tt><tt id="link-4" class="py-name"><a title="oauth2client.client" class="py-name" href="#" onclick="return doclink('link-4', 'client', 'link-1');">client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-5" class="py-name" targets="Variable oauth2client.client.OOB_CALLBACK_URN=oauth2client.client-module.html#OOB_CALLBACK_URN"><a title="oauth2client.client.OOB_CALLBACK_URN" class="py-name" href="#" onclick="return doclink('link-5', 'OOB_CALLBACK_URN', 'link-5');">OOB_CALLBACK_URN</a></tt> </tt>
-<a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-6" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-6', 'oauth2client', 'link-0');">oauth2client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-7" class="py-name" targets="Module oauth2client.util=oauth2client.util-module.html"><a title="oauth2client.util" class="py-name" href="#" onclick="return doclink('link-7', 'util', 'link-7');">util</a></tt> </tt>
-<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"> </tt>
-<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"> <tt class="py-keyword">from</tt> <tt class="py-name">urlparse</tt> <tt class="py-keyword">import</tt> <tt class="py-name">parse_qsl</tt> </tt>
-<a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>
-<a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"> <tt class="py-keyword">from</tt> <tt class="py-name">cgi</tt> <tt class="py-keyword">import</tt> <tt class="py-name">parse_qsl</tt> </tt>
-<a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"> </tt>
-<a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"> </tt>
-<a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"><tt id="link-8" class="py-name" targets="Variable apiclient.model.FLAGS=apiclient.model-module.html#FLAGS,Variable oauth2client.tools.FLAGS=oauth2client.tools-module.html#FLAGS,Variable oauth2client.util.FLAGS=oauth2client.util-module.html#FLAGS"><a title="apiclient.model.FLAGS
-oauth2client.tools.FLAGS
-oauth2client.util.FLAGS" class="py-name" href="#" onclick="return doclink('link-8', 'FLAGS', 'link-8');">FLAGS</a></tt> <tt class="py-op">=</tt> <tt class="py-name">gflags</tt><tt class="py-op">.</tt><tt id="link-9" class="py-name"><a title="apiclient.model.FLAGS
-oauth2client.tools.FLAGS
-oauth2client.util.FLAGS" class="py-name" href="#" onclick="return doclink('link-9', 'FLAGS', 'link-8');">FLAGS</a></tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">argparse</tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">httplib2</tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">os</tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">socket</tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">sys</tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">webbrowser</tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-0" class="py-name" targets="Package oauth2client=oauth2client-module.html"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-0', 'oauth2client', 'link-0');">oauth2client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-1" class="py-name" targets="Module oauth2client.client=oauth2client.client-module.html"><a title="oauth2client.client" class="py-name" href="#" onclick="return doclink('link-1', 'client', 'link-1');">client</a></tt> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-2" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-2', 'oauth2client', 'link-0');">oauth2client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-3" class="py-name" targets="Module oauth2client.file=oauth2client.file-module.html"><a title="oauth2client.file" class="py-name" href="#" onclick="return doclink('link-3', 'file', 'link-3');">file</a></tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-4" class="py-name"><a title="oauth2client" class="py-name" href="#" onclick="return doclink('link-4', 'oauth2client', 'link-0');">oauth2client</a></tt> <tt class="py-keyword">import</tt> <tt id="link-5" class="py-name" targets="Module oauth2client.util=oauth2client.util-module.html"><a title="oauth2client.util" class="py-name" href="#" onclick="return doclink('link-5', 'util', 'link-5');">util</a></tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"> <tt class="py-keyword">from</tt> <tt class="py-name">urlparse</tt> <tt class="py-keyword">import</tt> <tt class="py-name">parse_qsl</tt> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>
+<a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"> <tt class="py-keyword">from</tt> <tt class="py-name">cgi</tt> <tt class="py-keyword">import</tt> <tt class="py-name">parse_qsl</tt> </tt>
<a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"> </tt>
-<a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"><tt class="py-name">gflags</tt><tt class="py-op">.</tt><tt class="py-name">DEFINE_boolean</tt><tt class="py-op">(</tt><tt class="py-string">'auth_local_webserver'</tt><tt class="py-op">,</tt> <tt class="py-name">True</tt><tt class="py-op">,</tt> </tt>
-<a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-string">'Run a local web server to handle redirects during '</tt> </tt>
-<a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"> <tt class="py-string">'OAuth authorization.'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"> </tt>
-<a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"><tt class="py-name">gflags</tt><tt class="py-op">.</tt><tt class="py-name">DEFINE_string</tt><tt class="py-op">(</tt><tt class="py-string">'auth_host_name'</tt><tt class="py-op">,</tt> <tt class="py-string">'localhost'</tt><tt class="py-op">,</tt> </tt>
-<a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-string">'Host name to use when running a local web server to '</tt> </tt>
-<a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"> <tt class="py-string">'handle redirects during OAuth authorization.'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"> </tt>
-<a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"><tt class="py-name">gflags</tt><tt class="py-op">.</tt><tt class="py-name">DEFINE_multi_int</tt><tt class="py-op">(</tt><tt class="py-string">'auth_host_port'</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-number">8080</tt><tt class="py-op">,</tt> <tt class="py-number">8090</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-string">'Port to use when running a local web server to '</tt> </tt>
-<a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"> <tt class="py-string">'handle redirects during OAuth authorization.'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="ClientRedirectServer"></a><div id="ClientRedirectServer-def"><a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"> </tt>
-<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"> </tt>
-<a name="L57"></a><tt class="py-lineno"> 57</tt> <a class="py-toggle" href="#" id="ClientRedirectServer-toggle" onclick="return toggle('ClientRedirectServer');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.tools.ClientRedirectServer-class.html">ClientRedirectServer</a><tt class="py-op">(</tt><tt class="py-base-class">BaseHTTPServer</tt><tt class="py-op">.</tt><tt class="py-base-class">HTTPServer</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ClientRedirectServer-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="ClientRedirectServer-expanded"><a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"> <tt class="py-docstring">"""A server to handle OAuth 2.0 redirects back to localhost.</tt> </tt>
-<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"><tt class="py-docstring"> Waits for a single request and parses the query parameters</tt> </tt>
-<a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"><tt class="py-docstring"> into query_params and then stops serving.</tt> </tt>
-<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"> <tt id="link-10" class="py-name" targets="Variable oauth2client.tools.ClientRedirectServer.query_params=oauth2client.tools.ClientRedirectServer-class.html#query_params"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-10', 'query_params', 'link-10');">query_params</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
-</div><a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"> </tt>
-<a name="ClientRedirectHandler"></a><div id="ClientRedirectHandler-def"><a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"> </tt>
-<a name="L66"></a><tt class="py-lineno"> 66</tt> <a class="py-toggle" href="#" id="ClientRedirectHandler-toggle" onclick="return toggle('ClientRedirectHandler');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.tools.ClientRedirectHandler-class.html">ClientRedirectHandler</a><tt class="py-op">(</tt><tt class="py-base-class">BaseHTTPServer</tt><tt class="py-op">.</tt><tt class="py-base-class">BaseHTTPRequestHandler</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ClientRedirectHandler-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="ClientRedirectHandler-expanded"><a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"> <tt class="py-docstring">"""A handler for OAuth 2.0 redirects back to localhost.</tt> </tt>
-<a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"><tt class="py-docstring"> Waits for a single request and parses the query parameters</tt> </tt>
-<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"><tt class="py-docstring"> into the servers query_params and then stops serving.</tt> </tt>
-<a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"> </tt>
-<a name="ClientRedirectHandler.do_GET"></a><div id="ClientRedirectHandler.do_GET-def"><a name="L73"></a><tt class="py-lineno"> 73</tt> <a class="py-toggle" href="#" id="ClientRedirectHandler.do_GET-toggle" onclick="return toggle('ClientRedirectHandler.do_GET');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.tools.ClientRedirectHandler-class.html#do_GET">do_GET</a><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ClientRedirectHandler.do_GET-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="ClientRedirectHandler.do_GET-expanded"><a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"> <tt class="py-docstring">"""Handle a GET request.</tt> </tt>
-<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"><tt class="py-docstring"> Parses the query parameters and prints a message</tt> </tt>
-<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"><tt class="py-docstring"> if the flow has completed. Note that we can't detect</tt> </tt>
-<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"><tt class="py-docstring"> if an error occurred.</tt> </tt>
-<a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">send_response</tt><tt class="py-op">(</tt><tt class="py-number">200</tt><tt class="py-op">)</tt> </tt>
-<a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">send_header</tt><tt class="py-op">(</tt><tt class="py-string">"Content-type"</tt><tt class="py-op">,</tt> <tt class="py-string">"text/html"</tt><tt class="py-op">)</tt> </tt>
-<a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">end_headers</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"> <tt class="py-name">query</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'?'</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
-<a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"> <tt class="py-name">query</tt> <tt class="py-op">=</tt> <tt class="py-name">dict</tt><tt class="py-op">(</tt><tt class="py-name">parse_qsl</tt><tt class="py-op">(</tt><tt class="py-name">query</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">server</tt><tt class="py-op">.</tt><tt id="link-11" class="py-name"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-11', 'query_params', 'link-10');">query_params</a></tt> <tt class="py-op">=</tt> <tt class="py-name">query</tt> </tt>
-<a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">wfile</tt><tt class="py-op">.</tt><tt id="link-12" class="py-name" targets="Method apiclient.push.Headers.write()=apiclient.push.Headers-class.html#write"><a title="apiclient.push.Headers.write" class="py-name" href="#" onclick="return doclink('link-12', 'write', 'link-12');">write</a></tt><tt class="py-op">(</tt><tt class="py-string">"<html><head><title>Authentication Status</title></head>"</tt><tt class="py-op">)</tt> </tt>
-<a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">wfile</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name"><a title="apiclient.push.Headers.write" class="py-name" href="#" onclick="return doclink('link-13', 'write', 'link-12');">write</a></tt><tt class="py-op">(</tt><tt class="py-string">"<body><p>The authentication flow has completed.</p>"</tt><tt class="py-op">)</tt> </tt>
-<a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">wfile</tt><tt class="py-op">.</tt><tt id="link-14" class="py-name"><a title="apiclient.push.Headers.write" class="py-name" href="#" onclick="return doclink('link-14', 'write', 'link-12');">write</a></tt><tt class="py-op">(</tt><tt class="py-string">"</body></html>"</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> </tt>
-<a name="ClientRedirectHandler.log_message"></a><div id="ClientRedirectHandler.log_message-def"><a name="L90"></a><tt class="py-lineno"> 90</tt> <a class="py-toggle" href="#" id="ClientRedirectHandler.log_message-toggle" onclick="return toggle('ClientRedirectHandler.log_message');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.tools.ClientRedirectHandler-class.html#log_message">log_message</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">format</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ClientRedirectHandler.log_message-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="ClientRedirectHandler.log_message-expanded"><a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"> <tt class="py-docstring">"""Do not log messages to stdout while running as command line program."""</tt> </tt>
-<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
-</div></div><a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"> </tt>
-<a name="run"></a><div id="run-def"><a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"> </tt>
-<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"><tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-15" class="py-name" targets="Function oauth2client.util.positional()=oauth2client.util-module.html#positional"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-15', 'positional', 'link-15');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
-<a name="L96"></a><tt class="py-lineno"> 96</tt> <a class="py-toggle" href="#" id="run-toggle" onclick="return toggle('run');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.tools-module.html#run">run</a><tt class="py-op">(</tt><tt class="py-param">flow</tt><tt class="py-op">,</tt> <tt class="py-param">storage</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="run-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="run-expanded"><a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"> <tt class="py-docstring">"""Core code for a command-line application.</tt> </tt>
-<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"><tt class="py-docstring"> The run() function is called from your application and runs through all the</tt> </tt>
-<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"><tt class="py-docstring"> steps to obtain credentials. It takes a Flow argument and attempts to open an</tt> </tt>
-<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"><tt class="py-docstring"> authorization server page in the user's default web browser. The server asks</tt> </tt>
-<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"><tt class="py-docstring"> the user to grant your application access to the user's data. If the user</tt> </tt>
-<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"><tt class="py-docstring"> grants access, the run() function returns new credentials. The new credentials</tt> </tt>
-<a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"><tt class="py-docstring"> are also stored in the Storage argument, which updates the file associated</tt> </tt>
-<a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"><tt class="py-docstring"> with the Storage object.</tt> </tt>
-<a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"><tt class="py-docstring"> It presumes it is run from a command-line application and supports the</tt> </tt>
-<a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"><tt class="py-docstring"> following flags:</tt> </tt>
-<a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"><tt class="py-docstring"> --auth_host_name: Host name to use when running a local web server</tt> </tt>
-<a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"><tt class="py-docstring"> to handle redirects during OAuth authorization.</tt> </tt>
-<a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"><tt class="py-docstring"> (default: 'localhost')</tt> </tt>
-<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"><tt class="py-docstring"> --auth_host_port: Port to use when running a local web server to handle</tt> </tt>
-<a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"><tt class="py-docstring"> redirects during OAuth authorization.;</tt> </tt>
-<a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"><tt class="py-docstring"> repeat this option to specify a list of values</tt> </tt>
-<a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"><tt class="py-docstring"> (default: '[8080, 8090]')</tt> </tt>
-<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"><tt class="py-docstring"> (an integer)</tt> </tt>
-<a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"><tt class="py-docstring"> --[no]auth_local_webserver: Run a local web server to handle redirects</tt> </tt>
-<a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"><tt class="py-docstring"> during OAuth authorization.</tt> </tt>
-<a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"><tt class="py-docstring"> (default: 'true')</tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"><tt id="link-6" class="py-name" targets="Variable oauth2client.tools._CLIENT_SECRETS_MESSAGE=oauth2client.tools-module.html#_CLIENT_SECRETS_MESSAGE"><a title="oauth2client.tools._CLIENT_SECRETS_MESSAGE" class="py-name" href="#" onclick="return doclink('link-6', '_CLIENT_SECRETS_MESSAGE', 'link-6');">_CLIENT_SECRETS_MESSAGE</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"""WARNING: Please configure OAuth 2.0</tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"><tt class="py-string">To make this sample run you will need to populate the client_secrets.json file</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"><tt class="py-string">found at:</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"><tt class="py-string"> %s</tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"><tt class="py-string">with information from the APIs Console <https://code.google.com/apis/console>.</tt> </tt>
+<a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"><tt class="py-string"></tt> </tt>
+<a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"><tt class="py-string">"""</tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"><tt class="py-comment"># run_parser is an ArgumentParser that contains command-line options expected</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"><tt class="py-comment"># by tools.run(). Pass it in as part of the 'parents' argument to your own</tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"><tt class="py-comment"># ArgumentParser.</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"><tt id="link-7" class="py-name" targets="Variable oauth2client.tools.argparser=oauth2client.tools-module.html#argparser"><a title="oauth2client.tools.argparser" class="py-name" href="#" onclick="return doclink('link-7', 'argparser', 'link-7');">argparser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">argparse</tt><tt class="py-op">.</tt><tt class="py-name">ArgumentParser</tt><tt class="py-op">(</tt><tt class="py-name">add_help</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"><tt id="link-8" class="py-name"><a title="oauth2client.tools.argparser" class="py-name" href="#" onclick="return doclink('link-8', 'argparser', 'link-7');">argparser</a></tt><tt class="py-op">.</tt><tt class="py-name">add_argument</tt><tt class="py-op">(</tt><tt class="py-string">'--auth_host_name'</tt><tt class="py-op">,</tt> <tt class="py-name">default</tt><tt class="py-op">=</tt><tt class="py-string">'localhost'</tt><tt class="py-op">,</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"> <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-string">'Hostname when running a local web server.'</tt><tt class="py-op">)</tt> </tt>
+<a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"><tt id="link-9" class="py-name"><a title="oauth2client.tools.argparser" class="py-name" href="#" onclick="return doclink('link-9', 'argparser', 'link-7');">argparser</a></tt><tt class="py-op">.</tt><tt class="py-name">add_argument</tt><tt class="py-op">(</tt><tt class="py-string">'--noauth_local_webserver'</tt><tt class="py-op">,</tt> <tt class="py-name">action</tt><tt class="py-op">=</tt><tt class="py-string">'store_true'</tt><tt class="py-op">,</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"> <tt class="py-name">default</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-string">'Do not run a local web server.'</tt><tt class="py-op">)</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"><tt id="link-10" class="py-name"><a title="oauth2client.tools.argparser" class="py-name" href="#" onclick="return doclink('link-10', 'argparser', 'link-7');">argparser</a></tt><tt class="py-op">.</tt><tt class="py-name">add_argument</tt><tt class="py-op">(</tt><tt class="py-string">'--auth_host_port'</tt><tt class="py-op">,</tt> <tt class="py-name">default</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-number">8080</tt><tt class="py-op">,</tt> <tt class="py-number">8090</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">type</tt><tt class="py-op">=</tt><tt class="py-name">int</tt><tt class="py-op">,</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"> <tt class="py-name">nargs</tt><tt class="py-op">=</tt><tt class="py-string">'*'</tt><tt class="py-op">,</tt> <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-string">'Port web server should listen on.'</tt><tt class="py-op">)</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"><tt id="link-11" class="py-name"><a title="oauth2client.tools.argparser" class="py-name" href="#" onclick="return doclink('link-11', 'argparser', 'link-7');">argparser</a></tt><tt class="py-op">.</tt><tt class="py-name">add_argument</tt><tt class="py-op">(</tt><tt class="py-string">'--logging_level'</tt><tt class="py-op">,</tt> <tt class="py-name">default</tt><tt class="py-op">=</tt><tt class="py-string">'ERROR'</tt><tt class="py-op">,</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"> <tt class="py-name">choices</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-string">'DEBUG'</tt><tt class="py-op">,</tt> <tt class="py-string">'INFO'</tt><tt class="py-op">,</tt> <tt class="py-string">'WARNING'</tt><tt class="py-op">,</tt> <tt class="py-string">'ERROR'</tt><tt class="py-op">,</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"> <tt class="py-string">'CRITICAL'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"> <tt class="py-name">help</tt><tt class="py-op">=</tt><tt class="py-string">'Set the logging level of detail.'</tt><tt class="py-op">)</tt> </tt>
+<a name="ClientRedirectServer"></a><div id="ClientRedirectServer-def"><a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"> </tt>
+<a name="L71"></a><tt class="py-lineno"> 71</tt> <a class="py-toggle" href="#" id="ClientRedirectServer-toggle" onclick="return toggle('ClientRedirectServer');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.tools.ClientRedirectServer-class.html">ClientRedirectServer</a><tt class="py-op">(</tt><tt class="py-base-class">BaseHTTPServer</tt><tt class="py-op">.</tt><tt class="py-base-class">HTTPServer</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ClientRedirectServer-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="ClientRedirectServer-expanded"><a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"> <tt class="py-docstring">"""A server to handle OAuth 2.0 redirects back to localhost.</tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"><tt class="py-docstring"> Waits for a single request and parses the query parameters</tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"><tt class="py-docstring"> into query_params and then stops serving.</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"> <tt id="link-12" class="py-name" targets="Variable oauth2client.tools.ClientRedirectServer.query_params=oauth2client.tools.ClientRedirectServer-class.html#query_params"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-12', 'query_params', 'link-12');">query_params</a></tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt> </tt>
+</div><a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"> </tt>
+<a name="ClientRedirectHandler"></a><div id="ClientRedirectHandler-def"><a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt> <a class="py-toggle" href="#" id="ClientRedirectHandler-toggle" onclick="return toggle('ClientRedirectHandler');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="oauth2client.tools.ClientRedirectHandler-class.html">ClientRedirectHandler</a><tt class="py-op">(</tt><tt class="py-base-class">BaseHTTPServer</tt><tt class="py-op">.</tt><tt class="py-base-class">BaseHTTPRequestHandler</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ClientRedirectHandler-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="ClientRedirectHandler-expanded"><a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"> <tt class="py-docstring">"""A handler for OAuth 2.0 redirects back to localhost.</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"><tt class="py-docstring"> Waits for a single request and parses the query parameters</tt> </tt>
+<a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"><tt class="py-docstring"> into the servers query_params and then stops serving.</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"> </tt>
+<a name="ClientRedirectHandler.do_GET"></a><div id="ClientRedirectHandler.do_GET-def"><a name="L87"></a><tt class="py-lineno"> 87</tt> <a class="py-toggle" href="#" id="ClientRedirectHandler.do_GET-toggle" onclick="return toggle('ClientRedirectHandler.do_GET');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.tools.ClientRedirectHandler-class.html#do_GET">do_GET</a><tt class="py-op">(</tt><tt class="py-param">s</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ClientRedirectHandler.do_GET-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="ClientRedirectHandler.do_GET-expanded"><a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"> <tt class="py-docstring">"""Handle a GET request.</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"><tt class="py-docstring"> Parses the query parameters and prints a message</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"><tt class="py-docstring"> if the flow has completed. Note that we can't detect</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"><tt class="py-docstring"> if an error occurred.</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">send_response</tt><tt class="py-op">(</tt><tt class="py-number">200</tt><tt class="py-op">)</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">send_header</tt><tt class="py-op">(</tt><tt class="py-string">"Content-type"</tt><tt class="py-op">,</tt> <tt class="py-string">"text/html"</tt><tt class="py-op">)</tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">end_headers</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"> <tt class="py-name">query</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">path</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'?'</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"> <tt class="py-name">query</tt> <tt class="py-op">=</tt> <tt class="py-name">dict</tt><tt class="py-op">(</tt><tt class="py-name">parse_qsl</tt><tt class="py-op">(</tt><tt class="py-name">query</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">server</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-13', 'query_params', 'link-12');">query_params</a></tt> <tt class="py-op">=</tt> <tt class="py-name">query</tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">wfile</tt><tt class="py-op">.</tt><tt class="py-name">write</tt><tt class="py-op">(</tt><tt class="py-string">"<html><head><title>Authentication Status</title></head>"</tt><tt class="py-op">)</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">wfile</tt><tt class="py-op">.</tt><tt class="py-name">write</tt><tt class="py-op">(</tt><tt class="py-string">"<body><p>The authentication flow has completed.</p>"</tt><tt class="py-op">)</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"> <tt class="py-name">s</tt><tt class="py-op">.</tt><tt class="py-name">wfile</tt><tt class="py-op">.</tt><tt class="py-name">write</tt><tt class="py-op">(</tt><tt class="py-string">"</body></html>"</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"> </tt>
+<a name="ClientRedirectHandler.log_message"></a><div id="ClientRedirectHandler.log_message-def"><a name="L104"></a><tt class="py-lineno">104</tt> <a class="py-toggle" href="#" id="ClientRedirectHandler.log_message-toggle" onclick="return toggle('ClientRedirectHandler.log_message');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.tools.ClientRedirectHandler-class.html#log_message">log_message</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">format</tt><tt class="py-op">,</tt> <tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ClientRedirectHandler.log_message-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="ClientRedirectHandler.log_message-expanded"><a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"> <tt class="py-docstring">"""Do not log messages to stdout while running as command line program."""</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+</div></div><a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"> </tt>
+<a name="run_flow"></a><div id="run_flow-def"><a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"> </tt>
+<a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"><tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-14" class="py-name" targets="Function oauth2client.util.positional()=oauth2client.util-module.html#positional"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-14', 'positional', 'link-14');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt> <a class="py-toggle" href="#" id="run_flow-toggle" onclick="return toggle('run_flow');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.tools-module.html#run_flow">run_flow</a><tt class="py-op">(</tt><tt class="py-param">flow</tt><tt class="py-op">,</tt> <tt class="py-param">storage</tt><tt class="py-op">,</tt> <tt class="py-param">flags</tt><tt class="py-op">,</tt> <tt class="py-param">http</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="run_flow-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="run_flow-expanded"><a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"> <tt class="py-docstring">"""Core code for a command-line application.</tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"><tt class="py-docstring"> The run() function is called from your application and runs through all the</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"><tt class="py-docstring"> steps to obtain credentials. It takes a Flow argument and attempts to open an</tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"><tt class="py-docstring"> authorization server page in the user's default web browser. The server asks</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"><tt class="py-docstring"> the user to grant your application access to the user's data. If the user</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"><tt class="py-docstring"> grants access, the run() function returns new credentials. The new credentials</tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"><tt class="py-docstring"> are also stored in the Storage argument, which updates the file associated</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"><tt class="py-docstring"> with the Storage object.</tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"><tt class="py-docstring"> It presumes it is run from a command-line application and supports the</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"><tt class="py-docstring"> following flags:</tt> </tt>
<a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"><tt class="py-docstring"> Since it uses flags make sure to initialize the gflags module before calling</tt> </tt>
-<a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"><tt class="py-docstring"> run().</tt> </tt>
-<a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"><tt class="py-docstring"> flow: Flow, an OAuth 2.0 Flow to step through.</tt> </tt>
-<a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"><tt class="py-docstring"> storage: Storage, a Storage to store the credential in.</tt> </tt>
-<a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"><tt class="py-docstring"> http: An instance of httplib2.Http.request</tt> </tt>
-<a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"><tt class="py-docstring"> or something that acts like it.</tt> </tt>
-<a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"><tt class="py-docstring"> Credentials, the obtained credential.</tt> </tt>
-<a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-16" class="py-name"><a title="apiclient.model.FLAGS
-oauth2client.tools.FLAGS
-oauth2client.util.FLAGS" class="py-name" href="#" onclick="return doclink('link-16', 'FLAGS', 'link-8');">FLAGS</a></tt><tt class="py-op">.</tt><tt class="py-name">auth_local_webserver</tt><tt class="py-op">:</tt> </tt>
-<a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"> <tt class="py-name">success</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
-<a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"> <tt class="py-name">port_number</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
-<a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">port</tt> <tt class="py-keyword">in</tt> <tt id="link-17" class="py-name"><a title="apiclient.model.FLAGS
-oauth2client.tools.FLAGS
-oauth2client.util.FLAGS" class="py-name" href="#" onclick="return doclink('link-17', 'FLAGS', 'link-8');">FLAGS</a></tt><tt class="py-op">.</tt><tt class="py-name">auth_host_port</tt><tt class="py-op">:</tt> </tt>
-<a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"> <tt class="py-name">port_number</tt> <tt class="py-op">=</tt> <tt class="py-name">port</tt> </tt>
-<a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"> <tt class="py-name">httpd</tt> <tt class="py-op">=</tt> <tt id="link-18" class="py-name" targets="Class oauth2client.tools.ClientRedirectServer=oauth2client.tools.ClientRedirectServer-class.html"><a title="oauth2client.tools.ClientRedirectServer" class="py-name" href="#" onclick="return doclink('link-18', 'ClientRedirectServer', 'link-18');">ClientRedirectServer</a></tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt id="link-19" class="py-name"><a title="apiclient.model.FLAGS
-oauth2client.tools.FLAGS
-oauth2client.util.FLAGS" class="py-name" href="#" onclick="return doclink('link-19', 'FLAGS', 'link-8');">FLAGS</a></tt><tt class="py-op">.</tt><tt class="py-name">auth_host_name</tt><tt class="py-op">,</tt> <tt class="py-name">port</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"> <tt id="link-20" class="py-name" targets="Class oauth2client.tools.ClientRedirectHandler=oauth2client.tools.ClientRedirectHandler-class.html"><a title="oauth2client.tools.ClientRedirectHandler" class="py-name" href="#" onclick="return doclink('link-20', 'ClientRedirectHandler', 'link-20');">ClientRedirectHandler</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
-<a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
-<a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"> <tt class="py-name">success</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
-<a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt>
-<a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"> <tt id="link-21" class="py-name"><a title="apiclient.model.FLAGS
-oauth2client.tools.FLAGS
-oauth2client.util.FLAGS" class="py-name" href="#" onclick="return doclink('link-21', 'FLAGS', 'link-8');">FLAGS</a></tt><tt class="py-op">.</tt><tt class="py-name">auth_local_webserver</tt> <tt class="py-op">=</tt> <tt class="py-name">success</tt> </tt>
-<a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">success</tt><tt class="py-op">:</tt> </tt>
-<a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-string">'Failed to start a local webserver listening on either port 8080'</tt> </tt>
-<a name="L152"></a><tt class="py-lineno">152</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-string">'or port 9090. Please check your firewall settings and locally'</tt> </tt>
-<a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-string">'running programs that may be blocking or using those ports.'</tt> </tt>
-<a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> </tt>
-<a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-string">'Falling back to --noauth_local_webserver and continuing with'</tt><tt class="py-op">,</tt> </tt>
-<a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-string">'authorization.'</tt> </tt>
-<a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> </tt>
-<a name="L158"></a><tt class="py-lineno">158</tt> <tt class="py-line"> </tt>
-<a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-22" class="py-name"><a title="apiclient.model.FLAGS
-oauth2client.tools.FLAGS
-oauth2client.util.FLAGS" class="py-name" href="#" onclick="return doclink('link-22', 'FLAGS', 'link-8');">FLAGS</a></tt><tt class="py-op">.</tt><tt class="py-name">auth_local_webserver</tt><tt class="py-op">:</tt> </tt>
-<a name="L160"></a><tt class="py-lineno">160</tt> <tt class="py-line"> <tt class="py-name">oauth_callback</tt> <tt class="py-op">=</tt> <tt class="py-string">'http://%s:%s/'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-23" class="py-name"><a title="apiclient.model.FLAGS
-oauth2client.tools.FLAGS
-oauth2client.util.FLAGS" class="py-name" href="#" onclick="return doclink('link-23', 'FLAGS', 'link-8');">FLAGS</a></tt><tt class="py-op">.</tt><tt class="py-name">auth_host_name</tt><tt class="py-op">,</tt> <tt class="py-name">port_number</tt><tt class="py-op">)</tt> </tt>
-<a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"> <tt class="py-name">oauth_callback</tt> <tt class="py-op">=</tt> <tt id="link-24" class="py-name"><a title="oauth2client.client.OOB_CALLBACK_URN" class="py-name" href="#" onclick="return doclink('link-24', 'OOB_CALLBACK_URN', 'link-5');">OOB_CALLBACK_URN</a></tt> </tt>
-<a name="L163"></a><tt class="py-lineno">163</tt> <tt class="py-line"> <tt class="py-name">flow</tt><tt class="py-op">.</tt><tt class="py-name">redirect_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">oauth_callback</tt> </tt>
-<a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"> <tt id="link-25" class="py-name" targets="Method oauth2client.appengine.OAuth2Decorator.authorize_url()=oauth2client.appengine.OAuth2Decorator-class.html#authorize_url"><a title="oauth2client.appengine.OAuth2Decorator.authorize_url" class="py-name" href="#" onclick="return doclink('link-25', 'authorize_url', 'link-25');">authorize_url</a></tt> <tt class="py-op">=</tt> <tt class="py-name">flow</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name" targets="Method oauth2client.client.OAuth2WebServerFlow.step1_get_authorize_url()=oauth2client.client.OAuth2WebServerFlow-class.html#step1_get_authorize_url"><a title="oauth2client.client.OAuth2WebServerFlow.step1_get_authorize_url" class="py-name" href="#" onclick="return doclink('link-26', 'step1_get_authorize_url', 'link-26');">step1_get_authorize_url</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"> </tt>
-<a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-27" class="py-name"><a title="apiclient.model.FLAGS
-oauth2client.tools.FLAGS
-oauth2client.util.FLAGS" class="py-name" href="#" onclick="return doclink('link-27', 'FLAGS', 'link-8');">FLAGS</a></tt><tt class="py-op">.</tt><tt class="py-name">auth_local_webserver</tt><tt class="py-op">:</tt> </tt>
-<a name="L167"></a><tt class="py-lineno">167</tt> <tt class="py-line"> <tt class="py-name">webbrowser</tt><tt class="py-op">.</tt><tt class="py-name">open</tt><tt class="py-op">(</tt><tt id="link-28" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator.authorize_url" class="py-name" href="#" onclick="return doclink('link-28', 'authorize_url', 'link-25');">authorize_url</a></tt><tt class="py-op">,</tt> <tt class="py-name">new</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">autoraise</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
-<a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-string">'Your browser has been opened to visit:'</tt> </tt>
-<a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> </tt>
-<a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-string">' '</tt> <tt class="py-op">+</tt> <tt id="link-29" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator.authorize_url" class="py-name" href="#" onclick="return doclink('link-29', 'authorize_url', 'link-25');">authorize_url</a></tt> </tt>
-<a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> </tt>
-<a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-string">'If your browser is on a different machine then exit and re-run this'</tt> </tt>
-<a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-string">'application with the command-line parameter '</tt> </tt>
-<a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> </tt>
-<a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-string">' --noauth_local_webserver'</tt> </tt>
-<a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> </tt>
-<a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-string">'Go to the following link in your browser:'</tt> </tt>
-<a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> </tt>
-<a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-string">' '</tt> <tt class="py-op">+</tt> <tt id="link-30" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator.authorize_url" class="py-name" href="#" onclick="return doclink('link-30', 'authorize_url', 'link-25');">authorize_url</a></tt> </tt>
-<a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> </tt>
-<a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"> </tt>
-<a name="L183"></a><tt class="py-lineno">183</tt> <tt class="py-line"> <tt class="py-name">code</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-31" class="py-name"><a title="apiclient.model.FLAGS
-oauth2client.tools.FLAGS
-oauth2client.util.FLAGS" class="py-name" href="#" onclick="return doclink('link-31', 'FLAGS', 'link-8');">FLAGS</a></tt><tt class="py-op">.</tt><tt class="py-name">auth_local_webserver</tt><tt class="py-op">:</tt> </tt>
-<a name="L185"></a><tt class="py-lineno">185</tt> <tt class="py-line"> <tt class="py-name">httpd</tt><tt class="py-op">.</tt><tt class="py-name">handle_request</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'error'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">httpd</tt><tt class="py-op">.</tt><tt id="link-32" class="py-name"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-32', 'query_params', 'link-10');">query_params</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exit</tt><tt class="py-op">(</tt><tt class="py-string">'Authentication request was rejected.'</tt><tt class="py-op">)</tt> </tt>
-<a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'code'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">httpd</tt><tt class="py-op">.</tt><tt id="link-33" class="py-name"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-33', 'query_params', 'link-10');">query_params</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L189"></a><tt class="py-lineno">189</tt> <tt class="py-line"> <tt class="py-name">code</tt> <tt class="py-op">=</tt> <tt class="py-name">httpd</tt><tt class="py-op">.</tt><tt id="link-34" class="py-name"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-34', 'query_params', 'link-10');">query_params</a></tt><tt class="py-op">[</tt><tt class="py-string">'code'</tt><tt class="py-op">]</tt> </tt>
-<a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L191"></a><tt class="py-lineno">191</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-string">'Failed to find "code" in the query parameters of the redirect.'</tt> </tt>
-<a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exit</tt><tt class="py-op">(</tt><tt class="py-string">'Try running with --noauth_local_webserver.'</tt><tt class="py-op">)</tt> </tt>
-<a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L194"></a><tt class="py-lineno">194</tt> <tt class="py-line"> <tt class="py-name">code</tt> <tt class="py-op">=</tt> <tt class="py-name">raw_input</tt><tt class="py-op">(</tt><tt class="py-string">'Enter verification code: '</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L195"></a><tt class="py-lineno">195</tt> <tt class="py-line"> </tt>
-<a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"> <tt class="py-name">credential</tt> <tt class="py-op">=</tt> <tt class="py-name">flow</tt><tt class="py-op">.</tt><tt id="link-35" class="py-name" targets="Method oauth2client.client.OAuth2WebServerFlow.step2_exchange()=oauth2client.client.OAuth2WebServerFlow-class.html#step2_exchange"><a title="oauth2client.client.OAuth2WebServerFlow.step2_exchange" class="py-name" href="#" onclick="return doclink('link-35', 'step2_exchange', 'link-35');">step2_exchange</a></tt><tt class="py-op">(</tt><tt class="py-name">code</tt><tt class="py-op">,</tt> <tt id="link-36" class="py-name" targets="Module apiclient.http=apiclient.http-module.html,Method oauth2client.appengine.OAuth2Decorator.http()=oauth2client.appengine.OAuth2Decorator-class.html#http"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-36', 'http', 'link-36');">http</a></tt><tt class="py-op">=</tt><tt id="link-37" class="py-name"><a title="apiclient.http
-oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-37', 'http', 'link-36');">http</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-38" class="py-name"><a title="oauth2client.client.FlowExchangeError" class="py-name" href="#" onclick="return doclink('link-38', 'FlowExchangeError', 'link-2');">FlowExchangeError</a></tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
-<a name="L199"></a><tt class="py-lineno">199</tt> <tt class="py-line"> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exit</tt><tt class="py-op">(</tt><tt class="py-string">'Authentication has failed: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">e</tt><tt class="py-op">)</tt> </tt>
-<a name="L200"></a><tt class="py-lineno">200</tt> <tt class="py-line"> </tt>
-<a name="L201"></a><tt class="py-lineno">201</tt> <tt class="py-line"> <tt class="py-name">storage</tt><tt class="py-op">.</tt><tt id="link-39" class="py-name" targets="Method oauth2client.client.Storage.put()=oauth2client.client.Storage-class.html#put"><a title="oauth2client.client.Storage.put" class="py-name" href="#" onclick="return doclink('link-39', 'put', 'link-39');">put</a></tt><tt class="py-op">(</tt><tt class="py-name">credential</tt><tt class="py-op">)</tt> </tt>
-<a name="L202"></a><tt class="py-lineno">202</tt> <tt class="py-line"> <tt class="py-name">credential</tt><tt class="py-op">.</tt><tt id="link-40" class="py-name" targets="Method oauth2client.client.OAuth2Credentials.set_store()=oauth2client.client.OAuth2Credentials-class.html#set_store"><a title="oauth2client.client.OAuth2Credentials.set_store" class="py-name" href="#" onclick="return doclink('link-40', 'set_store', 'link-40');">set_store</a></tt><tt class="py-op">(</tt><tt class="py-name">storage</tt><tt class="py-op">)</tt> </tt>
-<a name="L203"></a><tt class="py-lineno">203</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-string">'Authentication successful.'</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"><tt class="py-docstring"> --auth_host_name: Host name to use when running a local web server</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"><tt class="py-docstring"> to handle redirects during OAuth authorization.</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"><tt class="py-docstring"> (default: 'localhost')</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"><tt class="py-docstring"> --auth_host_port: Port to use when running a local web server to handle</tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"><tt class="py-docstring"> redirects during OAuth authorization.;</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"><tt class="py-docstring"> repeat this option to specify a list of values</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"><tt class="py-docstring"> (default: '[8080, 8090]')</tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"><tt class="py-docstring"> (an integer)</tt> </tt>
+<a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"><tt class="py-docstring"> --[no]auth_local_webserver: Run a local web server to handle redirects</tt> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"><tt class="py-docstring"> during OAuth authorization.</tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"><tt class="py-docstring"> (default: 'true')</tt> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"><tt class="py-docstring"> The tools module defines an ArgumentParser the already contains the flag</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"><tt class="py-docstring"> definitions that run() requires. You can pass that ArgumentParser to your</tt> </tt>
+<a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"><tt class="py-docstring"> ArgumentParser constructor:</tt> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"><tt class="py-docstring"> parser = argparse.ArgumentParser(description=__doc__,</tt> </tt>
+<a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"><tt class="py-docstring"> formatter_class=argparse.RawDescriptionHelpFormatter,</tt> </tt>
+<a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"><tt class="py-docstring"> parents=[tools.run_parser])</tt> </tt>
+<a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"><tt class="py-docstring"> flags = parser.parse_args(argv)</tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"><tt class="py-docstring"> flow: Flow, an OAuth 2.0 Flow to step through.</tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"><tt class="py-docstring"> storage: Storage, a Storage to store the credential in.</tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"><tt class="py-docstring"> flags: argparse.ArgumentParser, the command-line flags.</tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"><tt class="py-docstring"> http: An instance of httplib2.Http.request</tt> </tt>
+<a name="L152"></a><tt class="py-lineno">152</tt> <tt class="py-line"><tt class="py-docstring"> or something that acts like it.</tt> </tt>
+<a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"><tt class="py-docstring"> Credentials, the obtained credential.</tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">setLevel</tt><tt class="py-op">(</tt><tt class="py-name">getattr</tt><tt class="py-op">(</tt><tt class="py-name">logging</tt><tt class="py-op">,</tt> <tt class="py-name">flags</tt><tt class="py-op">.</tt><tt class="py-name">logging_level</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">flags</tt><tt class="py-op">.</tt><tt class="py-name">noauth_local_webserver</tt><tt class="py-op">:</tt> </tt>
+<a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"> <tt class="py-name">success</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt> <tt class="py-line"> <tt class="py-name">port_number</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">port</tt> <tt class="py-keyword">in</tt> <tt class="py-name">flags</tt><tt class="py-op">.</tt><tt class="py-name">auth_host_port</tt><tt class="py-op">:</tt> </tt>
+<a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"> <tt class="py-name">port_number</tt> <tt class="py-op">=</tt> <tt class="py-name">port</tt> </tt>
+<a name="L163"></a><tt class="py-lineno">163</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"> <tt class="py-name">httpd</tt> <tt class="py-op">=</tt> <tt id="link-15" class="py-name" targets="Class oauth2client.tools.ClientRedirectServer=oauth2client.tools.ClientRedirectServer-class.html"><a title="oauth2client.tools.ClientRedirectServer" class="py-name" href="#" onclick="return doclink('link-15', 'ClientRedirectServer', 'link-15');">ClientRedirectServer</a></tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">flags</tt><tt class="py-op">.</tt><tt class="py-name">auth_host_name</tt><tt class="py-op">,</tt> <tt class="py-name">port</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"> <tt id="link-16" class="py-name" targets="Class oauth2client.tools.ClientRedirectHandler=oauth2client.tools.ClientRedirectHandler-class.html"><a title="oauth2client.tools.ClientRedirectHandler" class="py-name" href="#" onclick="return doclink('link-16', 'ClientRedirectHandler', 'link-16');">ClientRedirectHandler</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">socket</tt><tt class="py-op">.</tt><tt class="py-name">error</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L167"></a><tt class="py-lineno">167</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+<a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"> <tt class="py-name">success</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"> <tt class="py-keyword">break</tt> </tt>
+<a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"> <tt class="py-name">flags</tt><tt class="py-op">.</tt><tt class="py-name">noauth_local_webserver</tt> <tt class="py-op">=</tt> <tt class="py-keyword">not</tt> <tt class="py-name">success</tt> </tt>
+<a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">success</tt><tt class="py-op">:</tt> </tt>
+<a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-string">'Failed to start a local webserver listening on either port 8080'</tt> </tt>
+<a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-string">'or port 9090. Please check your firewall settings and locally'</tt> </tt>
+<a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-string">'running programs that may be blocking or using those ports.'</tt> </tt>
+<a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> </tt>
+<a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-string">'Falling back to --noauth_local_webserver and continuing with'</tt><tt class="py-op">,</tt> </tt>
+<a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-string">'authorization.'</tt> </tt>
+<a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">flags</tt><tt class="py-op">.</tt><tt class="py-name">noauth_local_webserver</tt><tt class="py-op">:</tt> </tt>
+<a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"> <tt class="py-name">oauth_callback</tt> <tt class="py-op">=</tt> <tt class="py-string">'http://%s:%s/'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">flags</tt><tt class="py-op">.</tt><tt class="py-name">auth_host_name</tt><tt class="py-op">,</tt> <tt class="py-name">port_number</tt><tt class="py-op">)</tt> </tt>
+<a name="L183"></a><tt class="py-lineno">183</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"> <tt class="py-name">oauth_callback</tt> <tt class="py-op">=</tt> <tt id="link-17" class="py-name"><a title="oauth2client.client" class="py-name" href="#" onclick="return doclink('link-17', 'client', 'link-1');">client</a></tt><tt class="py-op">.</tt><tt id="link-18" class="py-name" targets="Variable oauth2client.client.OOB_CALLBACK_URN=oauth2client.client-module.html#OOB_CALLBACK_URN"><a title="oauth2client.client.OOB_CALLBACK_URN" class="py-name" href="#" onclick="return doclink('link-18', 'OOB_CALLBACK_URN', 'link-18');">OOB_CALLBACK_URN</a></tt> </tt>
+<a name="L185"></a><tt class="py-lineno">185</tt> <tt class="py-line"> <tt id="link-19" class="py-name" targets="Variable oauth2client.appengine.OAuth2Decorator.flow=oauth2client.appengine.OAuth2Decorator-class.html#flow"><a title="oauth2client.appengine.OAuth2Decorator.flow" class="py-name" href="#" onclick="return doclink('link-19', 'flow', 'link-19');">flow</a></tt><tt class="py-op">.</tt><tt class="py-name">redirect_uri</tt> <tt class="py-op">=</tt> <tt class="py-name">oauth_callback</tt> </tt>
+<a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"> <tt id="link-20" class="py-name" targets="Method oauth2client.appengine.OAuth2Decorator.authorize_url()=oauth2client.appengine.OAuth2Decorator-class.html#authorize_url"><a title="oauth2client.appengine.OAuth2Decorator.authorize_url" class="py-name" href="#" onclick="return doclink('link-20', 'authorize_url', 'link-20');">authorize_url</a></tt> <tt class="py-op">=</tt> <tt id="link-21" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator.flow" class="py-name" href="#" onclick="return doclink('link-21', 'flow', 'link-19');">flow</a></tt><tt class="py-op">.</tt><tt id="link-22" class="py-name" targets="Method oauth2client.client.OAuth2WebServerFlow.step1_get_authorize_url()=oauth2client.client.OAuth2WebServerFlow-class.html#step1_get_authorize_url"><a title="oauth2client.client.OAuth2WebServerFlow.step1_get_authorize_url" class="py-name" href="#" onclick="return doclink('link-22', 'step1_get_authorize_url', 'link-22');">step1_get_authorize_url</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"> </tt>
+<a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">flags</tt><tt class="py-op">.</tt><tt class="py-name">noauth_local_webserver</tt><tt class="py-op">:</tt> </tt>
+<a name="L189"></a><tt class="py-lineno">189</tt> <tt class="py-line"> <tt class="py-name">webbrowser</tt><tt class="py-op">.</tt><tt class="py-name">open</tt><tt class="py-op">(</tt><tt id="link-23" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator.authorize_url" class="py-name" href="#" onclick="return doclink('link-23', 'authorize_url', 'link-20');">authorize_url</a></tt><tt class="py-op">,</tt> <tt class="py-name">new</tt><tt class="py-op">=</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">autoraise</tt><tt class="py-op">=</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-string">'Your browser has been opened to visit:'</tt> </tt>
+<a name="L191"></a><tt class="py-lineno">191</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> </tt>
+<a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-string">' '</tt> <tt class="py-op">+</tt> <tt id="link-24" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator.authorize_url" class="py-name" href="#" onclick="return doclink('link-24', 'authorize_url', 'link-20');">authorize_url</a></tt> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> </tt>
+<a name="L194"></a><tt class="py-lineno">194</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-string">'If your browser is on a different machine then exit and re-run this'</tt> </tt>
+<a name="L195"></a><tt class="py-lineno">195</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-string">'application with the command-line parameter '</tt> </tt>
+<a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> </tt>
+<a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-string">' --noauth_local_webserver'</tt> </tt>
+<a name="L198"></a><tt class="py-lineno">198</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> </tt>
+<a name="L199"></a><tt class="py-lineno">199</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L200"></a><tt class="py-lineno">200</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-string">'Go to the following link in your browser:'</tt> </tt>
+<a name="L201"></a><tt class="py-lineno">201</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> </tt>
+<a name="L202"></a><tt class="py-lineno">202</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-string">' '</tt> <tt class="py-op">+</tt> <tt id="link-25" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator.authorize_url" class="py-name" href="#" onclick="return doclink('link-25', 'authorize_url', 'link-20');">authorize_url</a></tt> </tt>
+<a name="L203"></a><tt class="py-lineno">203</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> </tt>
<a name="L204"></a><tt class="py-lineno">204</tt> <tt class="py-line"> </tt>
-<a name="L205"></a><tt class="py-lineno">205</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">credential</tt> </tt>
-</div><a name="L206"></a><tt class="py-lineno">206</tt> <tt class="py-line"> </tt><script type="text/javascript">
+<a name="L205"></a><tt class="py-lineno">205</tt> <tt class="py-line"> <tt class="py-name">code</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L206"></a><tt class="py-lineno">206</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">flags</tt><tt class="py-op">.</tt><tt class="py-name">noauth_local_webserver</tt><tt class="py-op">:</tt> </tt>
+<a name="L207"></a><tt class="py-lineno">207</tt> <tt class="py-line"> <tt class="py-name">httpd</tt><tt class="py-op">.</tt><tt class="py-name">handle_request</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L208"></a><tt class="py-lineno">208</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'error'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">httpd</tt><tt class="py-op">.</tt><tt id="link-26" class="py-name"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-26', 'query_params', 'link-12');">query_params</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L209"></a><tt class="py-lineno">209</tt> <tt class="py-line"> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exit</tt><tt class="py-op">(</tt><tt class="py-string">'Authentication request was rejected.'</tt><tt class="py-op">)</tt> </tt>
+<a name="L210"></a><tt class="py-lineno">210</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'code'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">httpd</tt><tt class="py-op">.</tt><tt id="link-27" class="py-name"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-27', 'query_params', 'link-12');">query_params</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L211"></a><tt class="py-lineno">211</tt> <tt class="py-line"> <tt class="py-name">code</tt> <tt class="py-op">=</tt> <tt class="py-name">httpd</tt><tt class="py-op">.</tt><tt id="link-28" class="py-name"><a title="oauth2client.tools.ClientRedirectServer.query_params" class="py-name" href="#" onclick="return doclink('link-28', 'query_params', 'link-12');">query_params</a></tt><tt class="py-op">[</tt><tt class="py-string">'code'</tt><tt class="py-op">]</tt> </tt>
+<a name="L212"></a><tt class="py-lineno">212</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L213"></a><tt class="py-lineno">213</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-string">'Failed to find "code" in the query parameters of the redirect.'</tt> </tt>
+<a name="L214"></a><tt class="py-lineno">214</tt> <tt class="py-line"> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exit</tt><tt class="py-op">(</tt><tt class="py-string">'Try running with --noauth_local_webserver.'</tt><tt class="py-op">)</tt> </tt>
+<a name="L215"></a><tt class="py-lineno">215</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L216"></a><tt class="py-lineno">216</tt> <tt class="py-line"> <tt class="py-name">code</tt> <tt class="py-op">=</tt> <tt class="py-name">raw_input</tt><tt class="py-op">(</tt><tt class="py-string">'Enter verification code: '</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">strip</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L217"></a><tt class="py-lineno">217</tt> <tt class="py-line"> </tt>
+<a name="L218"></a><tt class="py-lineno">218</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L219"></a><tt class="py-lineno">219</tt> <tt class="py-line"> <tt class="py-name">credential</tt> <tt class="py-op">=</tt> <tt id="link-29" class="py-name"><a title="oauth2client.appengine.OAuth2Decorator.flow" class="py-name" href="#" onclick="return doclink('link-29', 'flow', 'link-19');">flow</a></tt><tt class="py-op">.</tt><tt id="link-30" class="py-name" targets="Method oauth2client.client.OAuth2WebServerFlow.step2_exchange()=oauth2client.client.OAuth2WebServerFlow-class.html#step2_exchange"><a title="oauth2client.client.OAuth2WebServerFlow.step2_exchange" class="py-name" href="#" onclick="return doclink('link-30', 'step2_exchange', 'link-30');">step2_exchange</a></tt><tt class="py-op">(</tt><tt class="py-name">code</tt><tt class="py-op">,</tt> <tt id="link-31" class="py-name" targets="Module apiclient.http=apiclient.http-module.html,Method oauth2client.appengine.OAuth2Decorator.http()=oauth2client.appengine.OAuth2Decorator-class.html#http"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-31', 'http', 'link-31');">http</a></tt><tt class="py-op">=</tt><tt id="link-32" class="py-name"><a title="apiclient.http
+oauth2client.appengine.OAuth2Decorator.http" class="py-name" href="#" onclick="return doclink('link-32', 'http', 'link-31');">http</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L220"></a><tt class="py-lineno">220</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt id="link-33" class="py-name"><a title="oauth2client.client" class="py-name" href="#" onclick="return doclink('link-33', 'client', 'link-1');">client</a></tt><tt class="py-op">.</tt><tt id="link-34" class="py-name" targets="Class oauth2client.client.FlowExchangeError=oauth2client.client.FlowExchangeError-class.html"><a title="oauth2client.client.FlowExchangeError" class="py-name" href="#" onclick="return doclink('link-34', 'FlowExchangeError', 'link-34');">FlowExchangeError</a></tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">:</tt> </tt>
+<a name="L221"></a><tt class="py-lineno">221</tt> <tt class="py-line"> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exit</tt><tt class="py-op">(</tt><tt class="py-string">'Authentication has failed: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">e</tt><tt class="py-op">)</tt> </tt>
+<a name="L222"></a><tt class="py-lineno">222</tt> <tt class="py-line"> </tt>
+<a name="L223"></a><tt class="py-lineno">223</tt> <tt class="py-line"> <tt class="py-name">storage</tt><tt class="py-op">.</tt><tt id="link-35" class="py-name" targets="Method oauth2client.client.Storage.put()=oauth2client.client.Storage-class.html#put"><a title="oauth2client.client.Storage.put" class="py-name" href="#" onclick="return doclink('link-35', 'put', 'link-35');">put</a></tt><tt class="py-op">(</tt><tt class="py-name">credential</tt><tt class="py-op">)</tt> </tt>
+<a name="L224"></a><tt class="py-lineno">224</tt> <tt class="py-line"> <tt class="py-name">credential</tt><tt class="py-op">.</tt><tt id="link-36" class="py-name" targets="Method oauth2client.client.OAuth2Credentials.set_store()=oauth2client.client.OAuth2Credentials-class.html#set_store"><a title="oauth2client.client.OAuth2Credentials.set_store" class="py-name" href="#" onclick="return doclink('link-36', 'set_store', 'link-36');">set_store</a></tt><tt class="py-op">(</tt><tt class="py-name">storage</tt><tt class="py-op">)</tt> </tt>
+<a name="L225"></a><tt class="py-lineno">225</tt> <tt class="py-line"> <tt class="py-keyword">print</tt> <tt class="py-string">'Authentication successful.'</tt> </tt>
+<a name="L226"></a><tt class="py-lineno">226</tt> <tt class="py-line"> </tt>
+<a name="L227"></a><tt class="py-lineno">227</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">credential</tt> </tt>
+</div><a name="L228"></a><tt class="py-lineno">228</tt> <tt class="py-line"> </tt>
+<a name="message_if_missing"></a><div id="message_if_missing-def"><a name="L229"></a><tt class="py-lineno">229</tt> <tt class="py-line"> </tt>
+<a name="L230"></a><tt class="py-lineno">230</tt> <a class="py-toggle" href="#" id="message_if_missing-toggle" onclick="return toggle('message_if_missing');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.tools-module.html#message_if_missing">message_if_missing</a><tt class="py-op">(</tt><tt class="py-param">filename</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="message_if_missing-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="message_if_missing-expanded"><a name="L231"></a><tt class="py-lineno">231</tt> <tt class="py-line"> <tt class="py-docstring">"""Helpful message to display if the CLIENT_SECRETS file is missing."""</tt> </tt>
+<a name="L232"></a><tt class="py-lineno">232</tt> <tt class="py-line"> </tt>
+<a name="L233"></a><tt class="py-lineno">233</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-37" class="py-name"><a title="oauth2client.tools._CLIENT_SECRETS_MESSAGE" class="py-name" href="#" onclick="return doclink('link-37', '_CLIENT_SECRETS_MESSAGE', 'link-6');">_CLIENT_SECRETS_MESSAGE</a></tt> <tt class="py-op">%</tt> <tt id="link-38" class="py-name" targets="Method oauth2client.locked_file.LockedFile.filename()=oauth2client.locked_file.LockedFile-class.html#filename,Method oauth2client.locked_file._Opener.filename()=oauth2client.locked_file._Opener-class.html#filename"><a title="oauth2client.locked_file.LockedFile.filename
+oauth2client.locked_file._Opener.filename" class="py-name" href="#" onclick="return doclink('link-38', 'filename', 'link-38');">filename</a></tt> </tt>
+</div><a name="L234"></a><tt class="py-lineno">234</tt> <tt class="py-line"> </tt>
+<a name="L235"></a><tt class="py-lineno">235</tt> <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L236"></a><tt class="py-lineno">236</tt> <tt class="py-line"> <tt class="py-keyword">from</tt> <tt id="link-39" class="py-name" targets="Module oauth2client.old_run=oauth2client.old_run-module.html"><a title="oauth2client.old_run" class="py-name" href="#" onclick="return doclink('link-39', 'old_run', 'link-39');">old_run</a></tt> <tt class="py-keyword">import</tt> <tt id="link-40" class="py-name" targets="Function oauth2client.old_run.run()=oauth2client.old_run-module.html#run,Function oauth2client.tools.run()=oauth2client.tools-module.html#run"><a title="oauth2client.old_run.run
+oauth2client.tools.run" class="py-name" href="#" onclick="return doclink('link-40', 'run', 'link-40');">run</a></tt> </tt>
+<a name="L237"></a><tt class="py-lineno">237</tt> <tt class="py-line"> <tt class="py-keyword">from</tt> <tt id="link-41" class="py-name"><a title="oauth2client.old_run" class="py-name" href="#" onclick="return doclink('link-41', 'old_run', 'link-39');">old_run</a></tt> <tt class="py-keyword">import</tt> <tt id="link-42" class="py-name" targets="Variable oauth2client.old_run.FLAGS=oauth2client.old_run-module.html#FLAGS"><a title="oauth2client.old_run.FLAGS" class="py-name" href="#" onclick="return doclink('link-42', 'FLAGS', 'link-42');">FLAGS</a></tt> </tt>
+<a name="L238"></a><tt class="py-lineno">238</tt> <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>
+<a name="run"></a><div id="run-def"><a name="L239"></a><tt class="py-lineno">239</tt> <a class="py-toggle" href="#" id="run-toggle" onclick="return toggle('run');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.tools-module.html#run">run</a><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="run-collapsed" style="display:none;" pad="+++" indent="++++++"></div><div id="run-expanded"><a name="L240"></a><tt class="py-lineno">240</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">NotImplementedError</tt><tt class="py-op">(</tt> </tt>
+<a name="L241"></a><tt class="py-lineno">241</tt> <tt class="py-line"> <tt class="py-string">'The gflags library must be installed to use tools.run(). '</tt> </tt>
+<a name="L242"></a><tt class="py-lineno">242</tt> <tt class="py-line"> <tt class="py-string">'Please install gflags or preferrably switch to using '</tt> </tt>
+<a name="L243"></a><tt class="py-lineno">243</tt> <tt class="py-line"> <tt class="py-string">'tools.run_flow().'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L244"></a><tt class="py-lineno">244</tt> <tt class="py-line"> </tt><script type="text/javascript">
<!--
expandto(location.href);
// -->
@@ -310,7 +330,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:26 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:47 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.tools.ClientRedirectHandler-class.html b/docs/epy/oauth2client.tools.ClientRedirectHandler-class.html
index 56e4914..bcfe8ad 100644
--- a/docs/epy/oauth2client.tools.ClientRedirectHandler-class.html
+++ b/docs/epy/oauth2client.tools.ClientRedirectHandler-class.html
@@ -55,13 +55,45 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class ClientRedirectHandler</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.tools-pysrc.html#ClientRedirectHandler">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_clientredi" name="class_hierarchy_for_clientredi">
-<area shape="rect" id="node1" href="javascript:void(0);" title="BaseHTTPServer.BaseHTTPRequestHandler" alt="" coords="5,6,293,34"/>
-<area shape="rect" id="node2" href="javascript:void(0);" title="SocketServer.BaseRequestHandler" alt="" coords="317,6,547,34"/>
-<area shape="rect" id="node3" href="javascript:void(0);" title="SocketServer.StreamRequestHandler" alt="" coords="571,6,811,34"/>
-<area shape="rect" id="node4" href="oauth2client.tools.ClientRedirectHandler-class.html" title="ClientRedirectHandler" alt="" coords="835,6,984,34"/>
+<center> <map id="uml_class_diagram_for_oauth2cl_51" name="uml_class_diagram_for_oauth2cl_51">
+<area shape="rect" id="node226" href="oauth2client.tools.ClientRedirectHandler-class.html#do_GET" title="Handle a GET request." alt="" coords="53,764,249,783"/>
+<area shape="rect" id="node226" href="oauth2client.tools.ClientRedirectHandler-class.html#log_message" title="Do not log messages to stdout while running as command line program." alt="" coords="53,783,249,801"/>
+<area shape="rect" id="node1" href="oauth2client.tools.ClientRedirectHandler-class.html" title="A handler for OAuth 2.0 redirects back to localhost." alt="" coords="41,731,260,807"/>
+<area shape="rect" id="node227" href="javascript:void(0);" title="BaseHTTPServer.BaseHTTPRequestHandler.sys_version" alt="" coords="17,273,285,292"/>
+<area shape="rect" id="node227" href="javascript:void(0);" title="BaseHTTPServer.BaseHTTPRequestHandler.server_version" alt="" coords="17,292,285,311"/>
+<area shape="rect" id="node227" href="javascript:void(0);" title="BaseHTTPServer.BaseHTTPRequestHandler.default_request_version" alt="" coords="17,311,285,329"/>
+<area shape="rect" id="node227" href="javascript:void(0);" title="BaseHTTPServer.BaseHTTPRequestHandler.error_message_format" alt="" coords="17,329,285,348"/>
+<area shape="rect" id="node227" href="javascript:void(0);" title="BaseHTTPServer.BaseHTTPRequestHandler.error_content_type" alt="" coords="17,348,285,367"/>
+<area shape="rect" id="node227" href="javascript:void(0);" title="BaseHTTPServer.BaseHTTPRequestHandler.weekdayname" alt="" coords="17,367,285,385"/>
+<area shape="rect" id="node227" href="javascript:void(0);" title="BaseHTTPServer.BaseHTTPRequestHandler.monthname" alt="" coords="17,385,285,404"/>
+<area shape="rect" id="node227" href="javascript:void(0);" title="BaseHTTPServer.BaseHTTPRequestHandler.protocol_version" alt="" coords="17,404,285,423"/>
+<area shape="rect" id="node227" href="javascript:void(0);" title="BaseHTTPServer.BaseHTTPRequestHandler.MessageClass" alt="" coords="17,423,285,441"/>
+<area shape="rect" id="node227" href="javascript:void(0);" title="BaseHTTPServer.BaseHTTPRequestHandler.responses" alt="" coords="17,441,285,460"/>
+<area shape="rect" id="node227" href="javascript:void(0);" title="Parse a request (internal)." alt="" coords="17,463,285,481"/>
+<area shape="rect" id="node227" href="javascript:void(0);" title="Handle a single HTTP request." alt="" coords="17,481,285,500"/>
+<area shape="rect" id="node227" href="javascript:void(0);" title="Handle multiple requests if necessary." alt="" coords="17,500,285,519"/>
+<area shape="rect" id="node227" href="javascript:void(0);" title="Send and log an error reply." alt="" coords="17,519,285,537"/>
+<area shape="rect" id="node227" href="javascript:void(0);" title="Send the response header and log the response code." alt="" coords="17,537,285,556"/>
+<area shape="rect" id="node227" href="javascript:void(0);" title="Send a MIME header." alt="" coords="17,556,285,575"/>
+<area shape="rect" id="node227" href="javascript:void(0);" title="Send the blank line ending the MIME headers." alt="" coords="17,575,285,593"/>
+<area shape="rect" id="node227" href="javascript:void(0);" title="Log an accepted request." alt="" coords="17,593,285,612"/>
+<area shape="rect" id="node227" href="javascript:void(0);" title="Log an error." alt="" coords="17,612,285,631"/>
+<area shape="rect" id="node227" href="javascript:void(0);" title="Return the server software version string." alt="" coords="17,631,285,649"/>
+<area shape="rect" id="node227" href="javascript:void(0);" title="Return the current date and time formatted for a message header." alt="" coords="17,649,285,668"/>
+<area shape="rect" id="node227" href="javascript:void(0);" title="Return the current time formatted for logging." alt="" coords="17,668,285,687"/>
+<area shape="rect" id="node227" href="javascript:void(0);" title="Return the client address formatted for logging." alt="" coords="17,687,285,705"/>
+<area shape="rect" id="node2" href="javascript:void(0);" title="HTTP request handler base class." alt="" coords="5,249,296,711"/>
+<area shape="rect" id="node229" href="javascript:void(0);" title="SocketServer.BaseRequestHandler.__init__" alt="" coords="17,39,285,57"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Base class for request handler classes." alt="" coords="5,6,296,63"/>
+<area shape="rect" id="node228" href="javascript:void(0);" title="SocketServer.StreamRequestHandler.rbufsize" alt="" coords="41,108,263,127"/>
+<area shape="rect" id="node228" href="javascript:void(0);" title="SocketServer.StreamRequestHandler.wbufsize" alt="" coords="41,127,263,145"/>
+<area shape="rect" id="node228" href="javascript:void(0);" title="SocketServer.StreamRequestHandler.timeout" alt="" coords="41,145,263,164"/>
+<area shape="rect" id="node228" href="javascript:void(0);" title="SocketServer.StreamRequestHandler.disable_nagle_algorithm" alt="" coords="41,164,263,183"/>
+<area shape="rect" id="node228" href="javascript:void(0);" title="SocketServer.StreamRequestHandler.setup" alt="" coords="41,185,263,204"/>
+<area shape="rect" id="node228" href="javascript:void(0);" title="SocketServer.StreamRequestHandler.finish" alt="" coords="41,204,263,223"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Define self.rfile and self.wfile for stream sockets." alt="" coords="29,83,275,229"/>
</map>
- <img src="class_hierarchy_for_clientredi.gif" alt='' usemap="#class_hierarchy_for_clientredi" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_oauth2cl_51.gif" alt='' usemap="#uml_class_diagram_for_oauth2cl_51" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -288,7 +320,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:25 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:46 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.tools.ClientRedirectServer-class.html b/docs/epy/oauth2client.tools.ClientRedirectServer-class.html
index aa9bfeb..cd68d80 100644
--- a/docs/epy/oauth2client.tools.ClientRedirectServer-class.html
+++ b/docs/epy/oauth2client.tools.ClientRedirectServer-class.html
@@ -55,13 +55,35 @@
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class ClientRedirectServer</h1><p class="nomargin-top"><span class="codelink"><a href="oauth2client.tools-pysrc.html#ClientRedirectServer">source code</a></span></p>
<center>
-<center> <map id="class_hierarchy_for_clientredi_2" name="class_hierarchy_for_clientredi_2">
-<area shape="rect" id="node1" href="javascript:void(0);" title="BaseHTTPServer.HTTPServer" alt="" coords="5,6,208,34"/>
-<area shape="rect" id="node2" href="javascript:void(0);" title="SocketServer.BaseServer" alt="" coords="232,6,405,34"/>
-<area shape="rect" id="node3" href="javascript:void(0);" title="SocketServer.TCPServer" alt="" coords="429,6,600,34"/>
-<area shape="rect" id="node4" href="oauth2client.tools.ClientRedirectServer-class.html" title="ClientRedirectServer" alt="" coords="624,6,765,34"/>
+<center> <map id="uml_class_diagram_for_oauth2cl_52" name="uml_class_diagram_for_oauth2cl_52">
+<area shape="rect" id="node230" href="oauth2client.tools.ClientRedirectServer-class.html#query_params" title="oauth2client.tools.ClientRedirectServer.query_params" alt="" coords="187,583,309,601"/>
+<area shape="rect" id="node1" href="oauth2client.tools.ClientRedirectServer-class.html" title="A server to handle OAuth 2.0 redirects back to localhost." alt="" coords="175,558,321,615"/>
+<area shape="rect" id="node231" href="javascript:void(0);" title="BaseHTTPServer.HTTPServer.allow_reuse_address" alt="" coords="156,492,339,511"/>
+<area shape="rect" id="node231" href="javascript:void(0);" title="Override server_bind to store the server name." alt="" coords="156,513,339,532"/>
+<area shape="rect" id="node2" href="javascript:void(0);" title="BaseHTTPServer.HTTPServer" alt="" coords="144,467,349,538"/>
+<area shape="rect" id="node232" href="javascript:void(0);" title="SocketServer.TCPServer.address_family" alt="" coords="17,252,479,271"/>
+<area shape="rect" id="node232" href="javascript:void(0);" title="SocketServer.TCPServer.socket_type" alt="" coords="17,271,479,289"/>
+<area shape="rect" id="node232" href="javascript:void(0);" title="SocketServer.TCPServer.request_queue_size" alt="" coords="17,289,479,308"/>
+<area shape="rect" id="node232" href="javascript:void(0);" title="Constructor." alt="" coords="17,311,479,329"/>
+<area shape="rect" id="node232" href="javascript:void(0);" title="Called by constructor to activate the server." alt="" coords="17,329,479,348"/>
+<area shape="rect" id="node232" href="javascript:void(0);" title="Called to clean-up the server." alt="" coords="17,348,479,367"/>
+<area shape="rect" id="node232" href="javascript:void(0);" title="Return socket file number." alt="" coords="17,367,479,385"/>
+<area shape="rect" id="node232" href="javascript:void(0);" title="Get the request and client address from the socket." alt="" coords="17,385,479,404"/>
+<area shape="rect" id="node232" href="javascript:void(0);" title="Called to shutdown and close an individual request." alt="" coords="17,404,479,423"/>
+<area shape="rect" id="node232" href="javascript:void(0);" title="Called to clean up an individual request." alt="" coords="17,423,479,441"/>
+<area shape="rect" id="node3" href="javascript:void(0);" title="Base class for various socket-based server classes." alt="" coords="5,227,491,447"/>
+<area shape="rect" id="node233" href="javascript:void(0);" title="SocketServer.BaseServer.timeout" alt="" coords="109,31,385,49"/>
+<area shape="rect" id="node233" href="javascript:void(0);" title="Handle one request at a time until shutdown." alt="" coords="109,52,385,71"/>
+<area shape="rect" id="node233" href="javascript:void(0);" title="Stops the serve_forever loop." alt="" coords="109,71,385,89"/>
+<area shape="rect" id="node233" href="javascript:void(0);" title="Handle one request, possibly blocking." alt="" coords="109,89,385,108"/>
+<area shape="rect" id="node233" href="javascript:void(0);" title="Called if no new request arrives within self.timeout." alt="" coords="109,108,385,127"/>
+<area shape="rect" id="node233" href="javascript:void(0);" title="Verify the request." alt="" coords="109,127,385,145"/>
+<area shape="rect" id="node233" href="javascript:void(0);" title="Call finish_request." alt="" coords="109,145,385,164"/>
+<area shape="rect" id="node233" href="javascript:void(0);" title="Finish one request by instantiating RequestHandlerClass." alt="" coords="109,164,385,183"/>
+<area shape="rect" id="node233" href="javascript:void(0);" title="Handle an error gracefully." alt="" coords="109,183,385,201"/>
+<area shape="rect" id="node4" href="javascript:void(0);" title="Base class for server classes." alt="" coords="97,6,396,207"/>
</map>
- <img src="class_hierarchy_for_clientredi_2.gif" alt='' usemap="#class_hierarchy_for_clientredi_2" ismap="ismap" class="graph-without-title" />
+ <img src="uml_class_diagram_for_oauth2cl_52.gif" alt='' usemap="#uml_class_diagram_for_oauth2cl_52" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
@@ -183,7 +205,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:25 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:46 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.util-module.html b/docs/epy/oauth2client.util-module.html
index 92c65c5..cfc9da8 100644
--- a/docs/epy/oauth2client.util-module.html
+++ b/docs/epy/oauth2client.util-module.html
@@ -177,11 +177,40 @@
<a name="logger"></a><span class="summary-name">logger</span> = <code title="logging.getLogger(__name__)">logging.getLogger(__name__)</code>
</td>
</tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <a name="POSITIONAL_WARNING"></a><span class="summary-name">POSITIONAL_WARNING</span> = <code title="'WARNING'">'WARNING'</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <a name="POSITIONAL_EXCEPTION"></a><span class="summary-name">POSITIONAL_EXCEPTION</span> = <code title="'EXCEPTION'">'EXCEPTION'</code>
+ </td>
+ </tr>
+<tr>
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <a name="POSITIONAL_IGNORE"></a><span class="summary-name">POSITIONAL_IGNORE</span> = <code title="'IGNORE'">'IGNORE'</code>
+ </td>
+ </tr>
<tr class="private">
<td width="15%" align="right" valign="top" class="summary">
<span class="summary-type"> </span>
</td><td class="summary">
- <a name="FLAGS"></a><span class="summary-name">FLAGS</span> = <code title="gflags.FLAGS">gflags.FLAGS</code>
+ <a href="oauth2client.util-module.html#POSITIONAL_SET" class="summary-name" onclick="show_private();">POSITIONAL_SET</a> = <code title="frozenset([POSITIONAL_WARNING, POSITIONAL_EXCEPTION, POSITIONAL_IGNORE\
+])">frozenset([POSITIONAL_WARNING, POSITIONAL_EXC<code class="variable-ellipsis">...</code></code>
+ </td>
+ </tr>
+<tr class="private">
+ <td width="15%" align="right" valign="top" class="summary">
+ <span class="summary-type"> </span>
+ </td><td class="summary">
+ <a name="positional_parameters_enforcement"></a><span class="summary-name">positional_parameters_enforcement</span> = <code title="'WARNING'">'WARNING'</code>
</td>
</tr>
</table>
@@ -265,10 +294,11 @@
def my_method(cls, pos1, kwonly1=None):
...
-The positional decorator behavior is controlled by the
---positional_parameters_enforcement flag. The flag may be set to 'EXCEPTION',
-'WARNING' or 'IGNORE' to raise an exception, log a warning, or do nothing,
-respectively, if a declaration is violated.
+The positional decorator behavior is controlled by
+util.positional_parameters_enforcement, which may be set to
+POSITIONAL_EXCEPTION, POSITIONAL_WARNING or POSITIONAL_IGNORE to raise an
+exception, log a warning, or do nothing, respectively, if a declaration is
+violated.
Args:
max_positional_arguments: Maximum number of positional arguments. All
@@ -279,9 +309,9 @@
being used as positional parameters.
Raises:
- TypeError if a key-word only argument is provided as a positional parameter,
- but only if the --positional_parameters_enforcement flag is set to
- 'EXCEPTION'.
+ TypeError if a key-word only argument is provided as a positional
+ parameter, but only if util.positional_parameters_enforcement is set to
+ POSITIONAL_EXCEPTION.
</pre>
<dl class="fields">
@@ -386,6 +416,44 @@
</td></tr></table>
</div>
<br />
+<!-- ==================== VARIABLES DETAILS ==================== -->
+<a name="section-VariablesDetails"></a>
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr bgcolor="#70b0f0" class="table-header">
+ <td colspan="2" class="table-header">
+ <table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr valign="top">
+ <td align="left"><span class="table-header">Variables Details</span></td>
+ <td align="right" valign="top"
+ ><span class="options">[<a href="#section-VariablesDetails"
+ class="privatelink" onclick="toggle_private();"
+ >hide private</a>]</span></td>
+ </tr>
+ </table>
+ </td>
+</tr>
+</table>
+<a name="POSITIONAL_SET"></a>
+<div class="private">
+<table class="details" border="1" cellpadding="3"
+ cellspacing="0" width="100%" bgcolor="white">
+<tr><td>
+ <h3 class="epydoc">POSITIONAL_SET</h3>
+
+ <dl class="fields">
+ </dl>
+ <dl class="fields">
+ <dt>Value:</dt>
+ <dd><table><tr><td><pre class="variable">
+frozenset([POSITIONAL_WARNING, POSITIONAL_EXCEPTION, POSITIONAL_IGNORE<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+])
+</pre></td></tr></table>
+</dd>
+ </dl>
+</td></tr></table>
+</div>
+<br />
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
bgcolor="#a0c0ff" cellspacing="0">
@@ -409,7 +477,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:23 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:42 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.util-pysrc.html b/docs/epy/oauth2client.util-pysrc.html
index 481d795..42bfe51 100644
--- a/docs/epy/oauth2client.util-pysrc.html
+++ b/docs/epy/oauth2client.util-pysrc.html
@@ -77,21 +77,23 @@
<a name="L22"></a><tt class="py-lineno"> 22</tt> <tt class="py-line"><tt class="py-op">]</tt> </tt>
<a name="L23"></a><tt class="py-lineno"> 23</tt> <tt class="py-line"><tt class="py-name">__all__</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> </tt>
<a name="L24"></a><tt class="py-lineno"> 24</tt> <tt class="py-line"> <tt class="py-string">'positional'</tt><tt class="py-op">,</tt> </tt>
-<a name="L25"></a><tt class="py-lineno"> 25</tt> <tt class="py-line"><tt class="py-op">]</tt> </tt>
-<a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"> </tt>
-<a name="L27"></a><tt class="py-lineno"> 27</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">gflags</tt> </tt>
-<a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">inspect</tt> </tt>
-<a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt> </tt>
-<a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">types</tt> </tt>
-<a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">urllib</tt> </tt>
-<a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">urlparse</tt> </tt>
-<a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"> </tt>
-<a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"> <tt class="py-keyword">from</tt> <tt class="py-name">urlparse</tt> <tt class="py-keyword">import</tt> <tt class="py-name">parse_qsl</tt> </tt>
-<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>
-<a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"> <tt class="py-keyword">from</tt> <tt class="py-name">cgi</tt> <tt class="py-keyword">import</tt> <tt class="py-name">parse_qsl</tt> </tt>
-<a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"> </tt>
-<a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"><tt id="link-0" class="py-name" targets="Variable apiclient.discovery.logger=apiclient.discovery-module.html#logger,Variable oauth2client.appengine.logger=oauth2client.appengine-module.html#logger,Variable oauth2client.client.logger=oauth2client.client-module.html#logger,Variable oauth2client.crypt.logger=oauth2client.crypt-module.html#logger,Variable oauth2client.gce.logger=oauth2client.gce-module.html#logger,Variable oauth2client.locked_file.logger=oauth2client.locked_file-module.html#logger,Variable oauth2client.multistore_file.logger=oauth2client.multistore_file-module.html#logger,Variable oauth2client.util.logger=oauth2client.util-module.html#logger"><a title="apiclient.discovery.logger
+<a name="L25"></a><tt class="py-lineno"> 25</tt> <tt class="py-line"> <tt class="py-string">'POSITIONAL_WARNING'</tt><tt class="py-op">,</tt> </tt>
+<a name="L26"></a><tt class="py-lineno"> 26</tt> <tt class="py-line"> <tt class="py-string">'POSITIONAL_EXCEPTION'</tt><tt class="py-op">,</tt> </tt>
+<a name="L27"></a><tt class="py-lineno"> 27</tt> <tt class="py-line"> <tt class="py-string">'POSITIONAL_IGNORE'</tt><tt class="py-op">,</tt> </tt>
+<a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"><tt class="py-op">]</tt> </tt>
+<a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"> </tt>
+<a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">inspect</tt> </tt>
+<a name="L31"></a><tt class="py-lineno"> 31</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt> </tt>
+<a name="L32"></a><tt class="py-lineno"> 32</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">types</tt> </tt>
+<a name="L33"></a><tt class="py-lineno"> 33</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">urllib</tt> </tt>
+<a name="L34"></a><tt class="py-lineno"> 34</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">urlparse</tt> </tt>
+<a name="L35"></a><tt class="py-lineno"> 35</tt> <tt class="py-line"> </tt>
+<a name="L36"></a><tt class="py-lineno"> 36</tt> <tt class="py-line"><tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L37"></a><tt class="py-lineno"> 37</tt> <tt class="py-line"> <tt class="py-keyword">from</tt> <tt class="py-name">urlparse</tt> <tt class="py-keyword">import</tt> <tt class="py-name">parse_qsl</tt> </tt>
+<a name="L38"></a><tt class="py-lineno"> 38</tt> <tt class="py-line"><tt class="py-keyword">except</tt> <tt class="py-name">ImportError</tt><tt class="py-op">:</tt> </tt>
+<a name="L39"></a><tt class="py-lineno"> 39</tt> <tt class="py-line"> <tt class="py-keyword">from</tt> <tt class="py-name">cgi</tt> <tt class="py-keyword">import</tt> <tt class="py-name">parse_qsl</tt> </tt>
+<a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"> </tt>
+<a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"><tt id="link-0" class="py-name" targets="Variable apiclient.discovery.logger=apiclient.discovery-module.html#logger,Variable oauth2client.appengine.logger=oauth2client.appengine-module.html#logger,Variable oauth2client.client.logger=oauth2client.client-module.html#logger,Variable oauth2client.crypt.logger=oauth2client.crypt-module.html#logger,Variable oauth2client.gce.logger=oauth2client.gce-module.html#logger,Variable oauth2client.locked_file.logger=oauth2client.locked_file-module.html#logger,Variable oauth2client.multistore_file.logger=oauth2client.multistore_file-module.html#logger,Variable oauth2client.util.logger=oauth2client.util-module.html#logger"><a title="apiclient.discovery.logger
oauth2client.appengine.logger
oauth2client.client.logger
oauth2client.crypt.logger
@@ -99,175 +101,169 @@
oauth2client.locked_file.logger
oauth2client.multistore_file.logger
oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-0', 'logger', 'link-0');">logger</a></tt> <tt class="py-op">=</tt> <tt class="py-name">logging</tt><tt class="py-op">.</tt><tt class="py-name">getLogger</tt><tt class="py-op">(</tt><tt class="py-name">__name__</tt><tt class="py-op">)</tt> </tt>
-<a name="L40"></a><tt class="py-lineno"> 40</tt> <tt class="py-line"> </tt>
-<a name="L41"></a><tt class="py-lineno"> 41</tt> <tt class="py-line"><tt id="link-1" class="py-name" targets="Variable apiclient.model.FLAGS=apiclient.model-module.html#FLAGS,Variable oauth2client.tools.FLAGS=oauth2client.tools-module.html#FLAGS,Variable oauth2client.util.FLAGS=oauth2client.util-module.html#FLAGS"><a title="apiclient.model.FLAGS
-oauth2client.tools.FLAGS
-oauth2client.util.FLAGS" class="py-name" href="#" onclick="return doclink('link-1', 'FLAGS', 'link-1');">FLAGS</a></tt> <tt class="py-op">=</tt> <tt class="py-name">gflags</tt><tt class="py-op">.</tt><tt id="link-2" class="py-name"><a title="apiclient.model.FLAGS
-oauth2client.tools.FLAGS
-oauth2client.util.FLAGS" class="py-name" href="#" onclick="return doclink('link-2', 'FLAGS', 'link-1');">FLAGS</a></tt> </tt>
<a name="L42"></a><tt class="py-lineno"> 42</tt> <tt class="py-line"> </tt>
-<a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"><tt class="py-name">gflags</tt><tt class="py-op">.</tt><tt class="py-name">DEFINE_enum</tt><tt class="py-op">(</tt><tt class="py-string">'positional_parameters_enforcement'</tt><tt class="py-op">,</tt> <tt class="py-string">'WARNING'</tt><tt class="py-op">,</tt> </tt>
-<a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"> <tt class="py-op">[</tt><tt class="py-string">'EXCEPTION'</tt><tt class="py-op">,</tt> <tt class="py-string">'WARNING'</tt><tt class="py-op">,</tt> <tt class="py-string">'IGNORE'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"> <tt class="py-string">'The action when an oauth2client.util.positional declaration is violated.'</tt><tt class="py-op">)</tt> </tt>
-<a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"> </tt>
-<a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"> </tt>
-<a name="positional"></a><div id="positional-def"><a name="L48"></a><tt class="py-lineno"> 48</tt> <a class="py-toggle" href="#" id="positional-toggle" onclick="return toggle('positional');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.util-module.html#positional">positional</a><tt class="py-op">(</tt><tt class="py-param">max_positional_args</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="positional-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="positional-expanded"><a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"> <tt class="py-docstring">"""A decorator to declare that only the first N arguments my be positional.</tt> </tt>
-<a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L51"></a><tt class="py-lineno"> 51</tt> <tt class="py-line"><tt class="py-docstring"> This decorator makes it easy to support Python 3 style key-word only</tt> </tt>
-<a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"><tt class="py-docstring"> parameters. For example, in Python 3 it is possible to write:</tt> </tt>
+<a name="L43"></a><tt class="py-lineno"> 43</tt> <tt class="py-line"><tt id="link-1" class="py-name" targets="Variable oauth2client.util.POSITIONAL_WARNING=oauth2client.util-module.html#POSITIONAL_WARNING"><a title="oauth2client.util.POSITIONAL_WARNING" class="py-name" href="#" onclick="return doclink('link-1', 'POSITIONAL_WARNING', 'link-1');">POSITIONAL_WARNING</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'WARNING'</tt> </tt>
+<a name="L44"></a><tt class="py-lineno"> 44</tt> <tt class="py-line"><tt id="link-2" class="py-name" targets="Variable oauth2client.util.POSITIONAL_EXCEPTION=oauth2client.util-module.html#POSITIONAL_EXCEPTION"><a title="oauth2client.util.POSITIONAL_EXCEPTION" class="py-name" href="#" onclick="return doclink('link-2', 'POSITIONAL_EXCEPTION', 'link-2');">POSITIONAL_EXCEPTION</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'EXCEPTION'</tt> </tt>
+<a name="L45"></a><tt class="py-lineno"> 45</tt> <tt class="py-line"><tt id="link-3" class="py-name" targets="Variable oauth2client.util.POSITIONAL_IGNORE=oauth2client.util-module.html#POSITIONAL_IGNORE"><a title="oauth2client.util.POSITIONAL_IGNORE" class="py-name" href="#" onclick="return doclink('link-3', 'POSITIONAL_IGNORE', 'link-3');">POSITIONAL_IGNORE</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'IGNORE'</tt> </tt>
+<a name="L46"></a><tt class="py-lineno"> 46</tt> <tt class="py-line"><tt id="link-4" class="py-name" targets="Variable oauth2client.util.POSITIONAL_SET=oauth2client.util-module.html#POSITIONAL_SET"><a title="oauth2client.util.POSITIONAL_SET" class="py-name" href="#" onclick="return doclink('link-4', 'POSITIONAL_SET', 'link-4');">POSITIONAL_SET</a></tt> <tt class="py-op">=</tt> <tt class="py-name">frozenset</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt id="link-5" class="py-name"><a title="oauth2client.util.POSITIONAL_WARNING" class="py-name" href="#" onclick="return doclink('link-5', 'POSITIONAL_WARNING', 'link-1');">POSITIONAL_WARNING</a></tt><tt class="py-op">,</tt> <tt id="link-6" class="py-name"><a title="oauth2client.util.POSITIONAL_EXCEPTION" class="py-name" href="#" onclick="return doclink('link-6', 'POSITIONAL_EXCEPTION', 'link-2');">POSITIONAL_EXCEPTION</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L47"></a><tt class="py-lineno"> 47</tt> <tt class="py-line"> <tt id="link-7" class="py-name"><a title="oauth2client.util.POSITIONAL_IGNORE" class="py-name" href="#" onclick="return doclink('link-7', 'POSITIONAL_IGNORE', 'link-3');">POSITIONAL_IGNORE</a></tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L48"></a><tt class="py-lineno"> 48</tt> <tt class="py-line"> </tt>
+<a name="L49"></a><tt class="py-lineno"> 49</tt> <tt class="py-line"><tt id="link-8" class="py-name" targets="Variable oauth2client.util.positional_parameters_enforcement=oauth2client.util-module.html#positional_parameters_enforcement"><a title="oauth2client.util.positional_parameters_enforcement" class="py-name" href="#" onclick="return doclink('link-8', 'positional_parameters_enforcement', 'link-8');">positional_parameters_enforcement</a></tt> <tt class="py-op">=</tt> <tt id="link-9" class="py-name"><a title="oauth2client.util.POSITIONAL_WARNING" class="py-name" href="#" onclick="return doclink('link-9', 'POSITIONAL_WARNING', 'link-1');">POSITIONAL_WARNING</a></tt> </tt>
+<a name="L50"></a><tt class="py-lineno"> 50</tt> <tt class="py-line"> </tt>
+<a name="positional"></a><div id="positional-def"><a name="L51"></a><tt class="py-lineno"> 51</tt> <a class="py-toggle" href="#" id="positional-toggle" onclick="return toggle('positional');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.util-module.html#positional">positional</a><tt class="py-op">(</tt><tt class="py-param">max_positional_args</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="positional-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="positional-expanded"><a name="L52"></a><tt class="py-lineno"> 52</tt> <tt class="py-line"> <tt class="py-docstring">"""A decorator to declare that only the first N arguments my be positional.</tt> </tt>
<a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"><tt class="py-docstring"> def fn(pos1, *, kwonly1=None, kwonly1=None):</tt> </tt>
-<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"><tt class="py-docstring"> ...</tt> </tt>
+<a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"><tt class="py-docstring"> This decorator makes it easy to support Python 3 style key-word only</tt> </tt>
+<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"><tt class="py-docstring"> parameters. For example, in Python 3 it is possible to write:</tt> </tt>
<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"><tt class="py-docstring"> All named parameters after * must be a keyword:</tt> </tt>
-<a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"><tt class="py-docstring"> fn(10, 'kw1', 'kw2') # Raises exception.</tt> </tt>
-<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"><tt class="py-docstring"> fn(10, kwonly1='kw1') # Ok.</tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"><tt class="py-docstring"> def fn(pos1, *, kwonly1=None, kwonly1=None):</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"><tt class="py-docstring"> ...</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"><tt class="py-docstring"> All named parameters after * must be a keyword:</tt> </tt>
<a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"><tt class="py-docstring"> Example:</tt> </tt>
-<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"><tt class="py-docstring"> To define a function like above, do:</tt> </tt>
+<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"><tt class="py-docstring"> fn(10, 'kw1', 'kw2') # Raises exception.</tt> </tt>
+<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"><tt class="py-docstring"> fn(10, kwonly1='kw1') # Ok.</tt> </tt>
<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"><tt class="py-docstring"> @positional(1)</tt> </tt>
-<a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"><tt class="py-docstring"> def fn(pos1, kwonly1=None, kwonly2=None):</tt> </tt>
-<a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"><tt class="py-docstring"> ...</tt> </tt>
-<a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"><tt class="py-docstring"> If no default value is provided to a keyword argument, it becomes a required</tt> </tt>
-<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"><tt class="py-docstring"> keyword argument:</tt> </tt>
+<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"><tt class="py-docstring"> Example:</tt> </tt>
+<a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"><tt class="py-docstring"> To define a function like above, do:</tt> </tt>
+<a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"><tt class="py-docstring"> @positional(1)</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"><tt class="py-docstring"> def fn(pos1, kwonly1=None, kwonly2=None):</tt> </tt>
+<a name="L70"></a><tt class="py-lineno"> 70</tt> <tt class="py-line"><tt class="py-docstring"> ...</tt> </tt>
<a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"><tt class="py-docstring"> @positional(0)</tt> </tt>
-<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"><tt class="py-docstring"> def fn(required_kw):</tt> </tt>
-<a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"><tt class="py-docstring"> ...</tt> </tt>
-<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"><tt class="py-docstring"> This must be called with the keyword parameter:</tt> </tt>
-<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"><tt class="py-docstring"> fn() # Raises exception.</tt> </tt>
-<a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"><tt class="py-docstring"> fn(10) # Raises exception.</tt> </tt>
-<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"><tt class="py-docstring"> fn(required_kw=10) # Ok.</tt> </tt>
-<a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"><tt class="py-docstring"> When defining instance or class methods always remember to account for</tt> </tt>
-<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"><tt class="py-docstring"> 'self' and 'cls':</tt> </tt>
+<a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"><tt class="py-docstring"> If no default value is provided to a keyword argument, it becomes a required</tt> </tt>
+<a name="L73"></a><tt class="py-lineno"> 73</tt> <tt class="py-line"><tt class="py-docstring"> keyword argument:</tt> </tt>
+<a name="L74"></a><tt class="py-lineno"> 74</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L75"></a><tt class="py-lineno"> 75</tt> <tt class="py-line"><tt class="py-docstring"> @positional(0)</tt> </tt>
+<a name="L76"></a><tt class="py-lineno"> 76</tt> <tt class="py-line"><tt class="py-docstring"> def fn(required_kw):</tt> </tt>
+<a name="L77"></a><tt class="py-lineno"> 77</tt> <tt class="py-line"><tt class="py-docstring"> ...</tt> </tt>
+<a name="L78"></a><tt class="py-lineno"> 78</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L79"></a><tt class="py-lineno"> 79</tt> <tt class="py-line"><tt class="py-docstring"> This must be called with the keyword parameter:</tt> </tt>
+<a name="L80"></a><tt class="py-lineno"> 80</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L81"></a><tt class="py-lineno"> 81</tt> <tt class="py-line"><tt class="py-docstring"> fn() # Raises exception.</tt> </tt>
+<a name="L82"></a><tt class="py-lineno"> 82</tt> <tt class="py-line"><tt class="py-docstring"> fn(10) # Raises exception.</tt> </tt>
+<a name="L83"></a><tt class="py-lineno"> 83</tt> <tt class="py-line"><tt class="py-docstring"> fn(required_kw=10) # Ok.</tt> </tt>
<a name="L84"></a><tt class="py-lineno"> 84</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"><tt class="py-docstring"> class MyClass(object):</tt> </tt>
-<a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"><tt class="py-docstring"> @positional(2)</tt> </tt>
-<a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"><tt class="py-docstring"> def my_method(self, pos1, kwonly1=None):</tt> </tt>
-<a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"><tt class="py-docstring"> ...</tt> </tt>
-<a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"><tt class="py-docstring"> @classmethod</tt> </tt>
-<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"><tt class="py-docstring"> @positional(2)</tt> </tt>
-<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"><tt class="py-docstring"> def my_method(cls, pos1, kwonly1=None):</tt> </tt>
-<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"><tt class="py-docstring"> ...</tt> </tt>
-<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"><tt class="py-docstring"> The positional decorator behavior is controlled by the</tt> </tt>
-<a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"><tt class="py-docstring"> --positional_parameters_enforcement flag. The flag may be set to 'EXCEPTION',</tt> </tt>
-<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"><tt class="py-docstring"> 'WARNING' or 'IGNORE' to raise an exception, log a warning, or do nothing,</tt> </tt>
-<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"><tt class="py-docstring"> respectively, if a declaration is violated.</tt> </tt>
-<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"><tt class="py-docstring"> max_positional_arguments: Maximum number of positional arguments. All</tt> </tt>
-<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"><tt class="py-docstring"> parameters after the this index must be keyword only.</tt> </tt>
+<a name="L85"></a><tt class="py-lineno"> 85</tt> <tt class="py-line"><tt class="py-docstring"> When defining instance or class methods always remember to account for</tt> </tt>
+<a name="L86"></a><tt class="py-lineno"> 86</tt> <tt class="py-line"><tt class="py-docstring"> 'self' and 'cls':</tt> </tt>
+<a name="L87"></a><tt class="py-lineno"> 87</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"><tt class="py-docstring"> class MyClass(object):</tt> </tt>
+<a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"><tt class="py-docstring"> @positional(2)</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"><tt class="py-docstring"> def my_method(self, pos1, kwonly1=None):</tt> </tt>
+<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"><tt class="py-docstring"> ...</tt> </tt>
+<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"><tt class="py-docstring"> @classmethod</tt> </tt>
+<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"><tt class="py-docstring"> @positional(2)</tt> </tt>
+<a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"><tt class="py-docstring"> def my_method(cls, pos1, kwonly1=None):</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"><tt class="py-docstring"> ...</tt> </tt>
+<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"><tt class="py-docstring"> The positional decorator behavior is controlled by</tt> </tt>
+<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"><tt class="py-docstring"> util.positional_parameters_enforcement, which may be set to</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"><tt class="py-docstring"> POSITIONAL_EXCEPTION, POSITIONAL_WARNING or POSITIONAL_IGNORE to raise an</tt> </tt>
+<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"><tt class="py-docstring"> exception, log a warning, or do nothing, respectively, if a declaration is</tt> </tt>
+<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"><tt class="py-docstring"> violated.</tt> </tt>
<a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"><tt class="py-docstring"> A decorator that prevents using arguments after max_positional_args from</tt> </tt>
-<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"><tt class="py-docstring"> being used as positional parameters.</tt> </tt>
+<a name="L105"></a><tt class="py-lineno">105</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L106"></a><tt class="py-lineno">106</tt> <tt class="py-line"><tt class="py-docstring"> max_positional_arguments: Maximum number of positional arguments. All</tt> </tt>
+<a name="L107"></a><tt class="py-lineno">107</tt> <tt class="py-line"><tt class="py-docstring"> parameters after the this index must be keyword only.</tt> </tt>
<a name="L108"></a><tt class="py-lineno">108</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"><tt class="py-docstring"> Raises:</tt> </tt>
-<a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"><tt class="py-docstring"> TypeError if a key-word only argument is provided as a positional parameter,</tt> </tt>
-<a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"><tt class="py-docstring"> but only if the --positional_parameters_enforcement flag is set to</tt> </tt>
-<a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"><tt class="py-docstring"> 'EXCEPTION'.</tt> </tt>
-<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">positional_decorator</tt><tt class="py-op">(</tt><tt class="py-param">wrapped</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">positional_wrapper</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-name">max_positional_args</tt><tt class="py-op">:</tt> </tt>
-<a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"> <tt class="py-name">plural_s</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
-<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">max_positional_args</tt> <tt class="py-op">!=</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
-<a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"> <tt class="py-name">plural_s</tt> <tt class="py-op">=</tt> <tt class="py-string">'s'</tt> </tt>
-<a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"> <tt class="py-name">message</tt> <tt class="py-op">=</tt> <tt class="py-string">'%s() takes at most %d positional argument%s (%d given)'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt> </tt>
-<a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"> <tt class="py-name">wrapped</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt><tt class="py-op">,</tt> <tt class="py-name">max_positional_args</tt><tt class="py-op">,</tt> <tt class="py-name">plural_s</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-3" class="py-name"><a title="apiclient.model.FLAGS
-oauth2client.tools.FLAGS
-oauth2client.util.FLAGS" class="py-name" href="#" onclick="return doclink('link-3', 'FLAGS', 'link-1');">FLAGS</a></tt><tt class="py-op">.</tt><tt class="py-name">positional_parameters_enforcement</tt> <tt class="py-op">==</tt> <tt class="py-string">'EXCEPTION'</tt><tt class="py-op">:</tt> </tt>
-<a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-name">message</tt><tt class="py-op">)</tt> </tt>
-<a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt id="link-4" class="py-name"><a title="apiclient.model.FLAGS
-oauth2client.tools.FLAGS
-oauth2client.util.FLAGS" class="py-name" href="#" onclick="return doclink('link-4', 'FLAGS', 'link-1');">FLAGS</a></tt><tt class="py-op">.</tt><tt class="py-name">positional_parameters_enforcement</tt> <tt class="py-op">==</tt> <tt class="py-string">'WARNING'</tt><tt class="py-op">:</tt> </tt>
-<a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"> <tt id="link-5" class="py-name"><a title="apiclient.discovery.logger
+<a name="L109"></a><tt class="py-lineno">109</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L110"></a><tt class="py-lineno">110</tt> <tt class="py-line"><tt class="py-docstring"> A decorator that prevents using arguments after max_positional_args from</tt> </tt>
+<a name="L111"></a><tt class="py-lineno">111</tt> <tt class="py-line"><tt class="py-docstring"> being used as positional parameters.</tt> </tt>
+<a name="L112"></a><tt class="py-lineno">112</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L113"></a><tt class="py-lineno">113</tt> <tt class="py-line"><tt class="py-docstring"> Raises:</tt> </tt>
+<a name="L114"></a><tt class="py-lineno">114</tt> <tt class="py-line"><tt class="py-docstring"> TypeError if a key-word only argument is provided as a positional</tt> </tt>
+<a name="L115"></a><tt class="py-lineno">115</tt> <tt class="py-line"><tt class="py-docstring"> parameter, but only if util.positional_parameters_enforcement is set to</tt> </tt>
+<a name="L116"></a><tt class="py-lineno">116</tt> <tt class="py-line"><tt class="py-docstring"> POSITIONAL_EXCEPTION.</tt> </tt>
+<a name="L117"></a><tt class="py-lineno">117</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L118"></a><tt class="py-lineno">118</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">positional_decorator</tt><tt class="py-op">(</tt><tt class="py-param">wrapped</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L119"></a><tt class="py-lineno">119</tt> <tt class="py-line"> <tt class="py-keyword">def</tt> <tt class="py-def-name">positional_wrapper</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-param">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-param">kwargs</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L120"></a><tt class="py-lineno">120</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> <tt class="py-op">></tt> <tt class="py-name">max_positional_args</tt><tt class="py-op">:</tt> </tt>
+<a name="L121"></a><tt class="py-lineno">121</tt> <tt class="py-line"> <tt class="py-name">plural_s</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L122"></a><tt class="py-lineno">122</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">max_positional_args</tt> <tt class="py-op">!=</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L123"></a><tt class="py-lineno">123</tt> <tt class="py-line"> <tt class="py-name">plural_s</tt> <tt class="py-op">=</tt> <tt class="py-string">'s'</tt> </tt>
+<a name="L124"></a><tt class="py-lineno">124</tt> <tt class="py-line"> <tt class="py-name">message</tt> <tt class="py-op">=</tt> <tt class="py-string">'%s() takes at most %d positional argument%s (%d given)'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt> </tt>
+<a name="L125"></a><tt class="py-lineno">125</tt> <tt class="py-line"> <tt class="py-name">wrapped</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt><tt class="py-op">,</tt> <tt class="py-name">max_positional_args</tt><tt class="py-op">,</tt> <tt class="py-name">plural_s</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-10" class="py-name"><a title="oauth2client.util.positional_parameters_enforcement" class="py-name" href="#" onclick="return doclink('link-10', 'positional_parameters_enforcement', 'link-8');">positional_parameters_enforcement</a></tt> <tt class="py-op">==</tt> <tt id="link-11" class="py-name"><a title="oauth2client.util.POSITIONAL_EXCEPTION" class="py-name" href="#" onclick="return doclink('link-11', 'POSITIONAL_EXCEPTION', 'link-2');">POSITIONAL_EXCEPTION</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> <tt class="py-name">TypeError</tt><tt class="py-op">(</tt><tt class="py-name">message</tt><tt class="py-op">)</tt> </tt>
+<a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt id="link-12" class="py-name"><a title="oauth2client.util.positional_parameters_enforcement" class="py-name" href="#" onclick="return doclink('link-12', 'positional_parameters_enforcement', 'link-8');">positional_parameters_enforcement</a></tt> <tt class="py-op">==</tt> <tt id="link-13" class="py-name"><a title="oauth2client.util.POSITIONAL_WARNING" class="py-name" href="#" onclick="return doclink('link-13', 'POSITIONAL_WARNING', 'link-1');">POSITIONAL_WARNING</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"> <tt id="link-14" class="py-name"><a title="apiclient.discovery.logger
oauth2client.appengine.logger
oauth2client.client.logger
oauth2client.crypt.logger
oauth2client.gce.logger
oauth2client.locked_file.logger
oauth2client.multistore_file.logger
-oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-5', 'logger', 'link-0');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-name">message</tt><tt class="py-op">)</tt> </tt>
-<a name="L126"></a><tt class="py-lineno">126</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-comment"># IGNORE</tt> </tt>
-<a name="L127"></a><tt class="py-lineno">127</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
-<a name="L128"></a><tt class="py-lineno">128</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">wrapped</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">kwargs</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L129"></a><tt class="py-lineno">129</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">positional_wrapper</tt> </tt>
-</div><a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"> </tt>
-<a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">max_positional_args</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">int</tt><tt class="py-op">,</tt> <tt class="py-name">long</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">positional_decorator</tt> </tt>
-<a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"> <tt class="py-name">args</tt><tt class="py-op">,</tt> <tt class="py-name">_</tt><tt class="py-op">,</tt> <tt class="py-name">_</tt><tt class="py-op">,</tt> <tt class="py-name">defaults</tt> <tt class="py-op">=</tt> <tt class="py-name">inspect</tt><tt class="py-op">.</tt><tt class="py-name">getargspec</tt><tt class="py-op">(</tt><tt class="py-name">max_positional_args</tt><tt class="py-op">)</tt> </tt>
-<a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-6" class="py-name" targets="Function oauth2client.util.positional()=oauth2client.util-module.html#positional"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-6', 'positional', 'link-6');">positional</a></tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> <tt class="py-op">-</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">defaults</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">(</tt><tt class="py-name">max_positional_args</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"> </tt>
-<a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"> </tt>
-<a name="scopes_to_string"></a><div id="scopes_to_string-def"><a name="L138"></a><tt class="py-lineno">138</tt> <a class="py-toggle" href="#" id="scopes_to_string-toggle" onclick="return toggle('scopes_to_string');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.util-module.html#scopes_to_string">scopes_to_string</a><tt class="py-op">(</tt><tt class="py-param">scopes</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="scopes_to_string-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="scopes_to_string-expanded"><a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"> <tt class="py-docstring">"""Converts scope value to a string.</tt> </tt>
-<a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"><tt class="py-docstring"> If scopes is a string then it is simply passed through. If scopes is an</tt> </tt>
-<a name="L142"></a><tt class="py-lineno">142</tt> <tt class="py-line"><tt class="py-docstring"> iterable then a string is returned that is all the individual scopes</tt> </tt>
-<a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"><tt class="py-docstring"> concatenated with spaces.</tt> </tt>
+oauth2client.util.logger" class="py-name" href="#" onclick="return doclink('link-14', 'logger', 'link-0');">logger</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-name">message</tt><tt class="py-op">)</tt> </tt>
+<a name="L130"></a><tt class="py-lineno">130</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> <tt class="py-comment"># IGNORE</tt> </tt>
+<a name="L131"></a><tt class="py-lineno">131</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
+<a name="L132"></a><tt class="py-lineno">132</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">wrapped</tt><tt class="py-op">(</tt><tt class="py-op">*</tt><tt class="py-name">args</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">kwargs</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L133"></a><tt class="py-lineno">133</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">positional_wrapper</tt> </tt>
+</div><a name="L134"></a><tt class="py-lineno">134</tt> <tt class="py-line"> </tt>
+<a name="L135"></a><tt class="py-lineno">135</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">max_positional_args</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-name">int</tt><tt class="py-op">,</tt> <tt class="py-name">long</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L136"></a><tt class="py-lineno">136</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">positional_decorator</tt> </tt>
+<a name="L137"></a><tt class="py-lineno">137</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L138"></a><tt class="py-lineno">138</tt> <tt class="py-line"> <tt class="py-name">args</tt><tt class="py-op">,</tt> <tt class="py-name">_</tt><tt class="py-op">,</tt> <tt class="py-name">_</tt><tt class="py-op">,</tt> <tt class="py-name">defaults</tt> <tt class="py-op">=</tt> <tt class="py-name">inspect</tt><tt class="py-op">.</tt><tt class="py-name">getargspec</tt><tt class="py-op">(</tt><tt class="py-name">max_positional_args</tt><tt class="py-op">)</tt> </tt>
+<a name="L139"></a><tt class="py-lineno">139</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-15" class="py-name" targets="Function oauth2client.util.positional()=oauth2client.util-module.html#positional"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-15', 'positional', 'link-15');">positional</a></tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> <tt class="py-op">-</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">defaults</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">(</tt><tt class="py-name">max_positional_args</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L140"></a><tt class="py-lineno">140</tt> <tt class="py-line"> </tt>
+<a name="L141"></a><tt class="py-lineno">141</tt> <tt class="py-line"> </tt>
+<a name="scopes_to_string"></a><div id="scopes_to_string-def"><a name="L142"></a><tt class="py-lineno">142</tt> <a class="py-toggle" href="#" id="scopes_to_string-toggle" onclick="return toggle('scopes_to_string');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.util-module.html#scopes_to_string">scopes_to_string</a><tt class="py-op">(</tt><tt class="py-param">scopes</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="scopes_to_string-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="scopes_to_string-expanded"><a name="L143"></a><tt class="py-lineno">143</tt> <tt class="py-line"> <tt class="py-docstring">"""Converts scope value to a string.</tt> </tt>
<a name="L144"></a><tt class="py-lineno">144</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"><tt class="py-docstring"> scopes: string or iterable of strings, the scopes.</tt> </tt>
-<a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"><tt class="py-docstring"> The scopes formatted as a single string.</tt> </tt>
-<a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">scopes</tt><tt class="py-op">,</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">StringTypes</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L152"></a><tt class="py-lineno">152</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">scopes</tt> </tt>
-<a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">' '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">scopes</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"> </tt>
-<a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"> </tt>
-<a name="dict_to_tuple_key"></a><div id="dict_to_tuple_key-def"><a name="L157"></a><tt class="py-lineno">157</tt> <a class="py-toggle" href="#" id="dict_to_tuple_key-toggle" onclick="return toggle('dict_to_tuple_key');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.util-module.html#dict_to_tuple_key">dict_to_tuple_key</a><tt class="py-op">(</tt><tt class="py-param">dictionary</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="dict_to_tuple_key-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="dict_to_tuple_key-expanded"><a name="L158"></a><tt class="py-lineno">158</tt> <tt class="py-line"> <tt class="py-docstring">"""Converts a dictionary to a tuple that can be used as an immutable key.</tt> </tt>
-<a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L160"></a><tt class="py-lineno">160</tt> <tt class="py-line"><tt class="py-docstring"> The resulting key is always sorted so that logically equivalent dictionaries</tt> </tt>
-<a name="L161"></a><tt class="py-lineno">161</tt> <tt class="py-line"><tt class="py-docstring"> always produce an identical tuple for a key.</tt> </tt>
-<a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L163"></a><tt class="py-lineno">163</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"><tt class="py-docstring"> dictionary: the dictionary to use as the key.</tt> </tt>
-<a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L167"></a><tt class="py-lineno">167</tt> <tt class="py-line"><tt class="py-docstring"> A tuple representing the dictionary in it's naturally sorted ordering.</tt> </tt>
-<a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">tuple</tt><tt class="py-op">(</tt><tt class="py-name">sorted</tt><tt class="py-op">(</tt><tt class="py-name">dictionary</tt><tt class="py-op">.</tt><tt id="link-7" class="py-name" targets="Method apiclient.push.Headers.items()=apiclient.push.Headers-class.html#items"><a title="apiclient.push.Headers.items" class="py-name" href="#" onclick="return doclink('link-7', 'items', 'link-7');">items</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"> </tt>
-<a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"> </tt>
-<a name="_add_query_parameter"></a><div id="_add_query_parameter-def"><a name="L172"></a><tt class="py-lineno">172</tt> <a class="py-toggle" href="#" id="_add_query_parameter-toggle" onclick="return toggle('_add_query_parameter');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.util-module.html#_add_query_parameter">_add_query_parameter</a><tt class="py-op">(</tt><tt class="py-param">url</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_add_query_parameter-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_add_query_parameter-expanded"><a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"> <tt class="py-docstring">"""Adds a query parameter to a url.</tt> </tt>
-<a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"><tt class="py-docstring"> Replaces the current value if it already exists in the URL.</tt> </tt>
-<a name="L176"></a><tt class="py-lineno">176</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
-<a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"><tt class="py-docstring"> url: string, url to add the query parameter to.</tt> </tt>
-<a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"><tt class="py-docstring"> name: string, query parameter name.</tt> </tt>
-<a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"><tt class="py-docstring"> value: string, query parameter value.</tt> </tt>
-<a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
-<a name="L183"></a><tt class="py-lineno">183</tt> <tt class="py-line"><tt class="py-docstring"> Updated query parameter. Does not update the url if value is None.</tt> </tt>
-<a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L185"></a><tt class="py-lineno">185</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">value</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">url</tt> </tt>
-<a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"> <tt class="py-name">parsed</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">urlparse</tt><tt class="py-op">.</tt><tt class="py-name">urlparse</tt><tt class="py-op">(</tt><tt class="py-name">url</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L189"></a><tt class="py-lineno">189</tt> <tt class="py-line"> <tt class="py-name">q</tt> <tt class="py-op">=</tt> <tt class="py-name">dict</tt><tt class="py-op">(</tt><tt class="py-name">parse_qsl</tt><tt class="py-op">(</tt><tt class="py-name">parsed</tt><tt class="py-op">[</tt><tt class="py-number">4</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"> <tt class="py-name">q</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt> </tt>
-<a name="L191"></a><tt class="py-lineno">191</tt> <tt class="py-line"> <tt class="py-name">parsed</tt><tt class="py-op">[</tt><tt class="py-number">4</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">urlencode</tt><tt class="py-op">(</tt><tt class="py-name">q</tt><tt class="py-op">)</tt> </tt>
-<a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">urlparse</tt><tt class="py-op">.</tt><tt class="py-name">urlunparse</tt><tt class="py-op">(</tt><tt class="py-name">parsed</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"> </tt><script type="text/javascript">
+<a name="L145"></a><tt class="py-lineno">145</tt> <tt class="py-line"><tt class="py-docstring"> If scopes is a string then it is simply passed through. If scopes is an</tt> </tt>
+<a name="L146"></a><tt class="py-lineno">146</tt> <tt class="py-line"><tt class="py-docstring"> iterable then a string is returned that is all the individual scopes</tt> </tt>
+<a name="L147"></a><tt class="py-lineno">147</tt> <tt class="py-line"><tt class="py-docstring"> concatenated with spaces.</tt> </tt>
+<a name="L148"></a><tt class="py-lineno">148</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L149"></a><tt class="py-lineno">149</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L150"></a><tt class="py-lineno">150</tt> <tt class="py-line"><tt class="py-docstring"> scopes: string or iterable of strings, the scopes.</tt> </tt>
+<a name="L151"></a><tt class="py-lineno">151</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L152"></a><tt class="py-lineno">152</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L153"></a><tt class="py-lineno">153</tt> <tt class="py-line"><tt class="py-docstring"> The scopes formatted as a single string.</tt> </tt>
+<a name="L154"></a><tt class="py-lineno">154</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L155"></a><tt class="py-lineno">155</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">scopes</tt><tt class="py-op">,</tt> <tt class="py-name">types</tt><tt class="py-op">.</tt><tt class="py-name">StringTypes</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L156"></a><tt class="py-lineno">156</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">scopes</tt> </tt>
+<a name="L157"></a><tt class="py-lineno">157</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L158"></a><tt class="py-lineno">158</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-string">' '</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">scopes</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L159"></a><tt class="py-lineno">159</tt> <tt class="py-line"> </tt>
+<a name="L160"></a><tt class="py-lineno">160</tt> <tt class="py-line"> </tt>
+<a name="dict_to_tuple_key"></a><div id="dict_to_tuple_key-def"><a name="L161"></a><tt class="py-lineno">161</tt> <a class="py-toggle" href="#" id="dict_to_tuple_key-toggle" onclick="return toggle('dict_to_tuple_key');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.util-module.html#dict_to_tuple_key">dict_to_tuple_key</a><tt class="py-op">(</tt><tt class="py-param">dictionary</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="dict_to_tuple_key-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="dict_to_tuple_key-expanded"><a name="L162"></a><tt class="py-lineno">162</tt> <tt class="py-line"> <tt class="py-docstring">"""Converts a dictionary to a tuple that can be used as an immutable key.</tt> </tt>
+<a name="L163"></a><tt class="py-lineno">163</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L164"></a><tt class="py-lineno">164</tt> <tt class="py-line"><tt class="py-docstring"> The resulting key is always sorted so that logically equivalent dictionaries</tt> </tt>
+<a name="L165"></a><tt class="py-lineno">165</tt> <tt class="py-line"><tt class="py-docstring"> always produce an identical tuple for a key.</tt> </tt>
+<a name="L166"></a><tt class="py-lineno">166</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L167"></a><tt class="py-lineno">167</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L168"></a><tt class="py-lineno">168</tt> <tt class="py-line"><tt class="py-docstring"> dictionary: the dictionary to use as the key.</tt> </tt>
+<a name="L169"></a><tt class="py-lineno">169</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L170"></a><tt class="py-lineno">170</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L171"></a><tt class="py-lineno">171</tt> <tt class="py-line"><tt class="py-docstring"> A tuple representing the dictionary in it's naturally sorted ordering.</tt> </tt>
+<a name="L172"></a><tt class="py-lineno">172</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L173"></a><tt class="py-lineno">173</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">tuple</tt><tt class="py-op">(</tt><tt class="py-name">sorted</tt><tt class="py-op">(</tt><tt class="py-name">dictionary</tt><tt class="py-op">.</tt><tt class="py-name">items</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L174"></a><tt class="py-lineno">174</tt> <tt class="py-line"> </tt>
+<a name="L175"></a><tt class="py-lineno">175</tt> <tt class="py-line"> </tt>
+<a name="_add_query_parameter"></a><div id="_add_query_parameter-def"><a name="L176"></a><tt class="py-lineno">176</tt> <a class="py-toggle" href="#" id="_add_query_parameter-toggle" onclick="return toggle('_add_query_parameter');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.util-module.html#_add_query_parameter">_add_query_parameter</a><tt class="py-op">(</tt><tt class="py-param">url</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">,</tt> <tt class="py-param">value</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_add_query_parameter-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="_add_query_parameter-expanded"><a name="L177"></a><tt class="py-lineno">177</tt> <tt class="py-line"> <tt class="py-docstring">"""Adds a query parameter to a url.</tt> </tt>
+<a name="L178"></a><tt class="py-lineno">178</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L179"></a><tt class="py-lineno">179</tt> <tt class="py-line"><tt class="py-docstring"> Replaces the current value if it already exists in the URL.</tt> </tt>
+<a name="L180"></a><tt class="py-lineno">180</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L181"></a><tt class="py-lineno">181</tt> <tt class="py-line"><tt class="py-docstring"> Args:</tt> </tt>
+<a name="L182"></a><tt class="py-lineno">182</tt> <tt class="py-line"><tt class="py-docstring"> url: string, url to add the query parameter to.</tt> </tt>
+<a name="L183"></a><tt class="py-lineno">183</tt> <tt class="py-line"><tt class="py-docstring"> name: string, query parameter name.</tt> </tt>
+<a name="L184"></a><tt class="py-lineno">184</tt> <tt class="py-line"><tt class="py-docstring"> value: string, query parameter value.</tt> </tt>
+<a name="L185"></a><tt class="py-lineno">185</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L186"></a><tt class="py-lineno">186</tt> <tt class="py-line"><tt class="py-docstring"> Returns:</tt> </tt>
+<a name="L187"></a><tt class="py-lineno">187</tt> <tt class="py-line"><tt class="py-docstring"> Updated query parameter. Does not update the url if value is None.</tt> </tt>
+<a name="L188"></a><tt class="py-lineno">188</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L189"></a><tt class="py-lineno">189</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">value</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L190"></a><tt class="py-lineno">190</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">url</tt> </tt>
+<a name="L191"></a><tt class="py-lineno">191</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L192"></a><tt class="py-lineno">192</tt> <tt class="py-line"> <tt class="py-name">parsed</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">urlparse</tt><tt class="py-op">.</tt><tt class="py-name">urlparse</tt><tt class="py-op">(</tt><tt class="py-name">url</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L193"></a><tt class="py-lineno">193</tt> <tt class="py-line"> <tt class="py-name">q</tt> <tt class="py-op">=</tt> <tt class="py-name">dict</tt><tt class="py-op">(</tt><tt class="py-name">parse_qsl</tt><tt class="py-op">(</tt><tt class="py-name">parsed</tt><tt class="py-op">[</tt><tt class="py-number">4</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L194"></a><tt class="py-lineno">194</tt> <tt class="py-line"> <tt class="py-name">q</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">value</tt> </tt>
+<a name="L195"></a><tt class="py-lineno">195</tt> <tt class="py-line"> <tt class="py-name">parsed</tt><tt class="py-op">[</tt><tt class="py-number">4</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">urllib</tt><tt class="py-op">.</tt><tt class="py-name">urlencode</tt><tt class="py-op">(</tt><tt class="py-name">q</tt><tt class="py-op">)</tt> </tt>
+<a name="L196"></a><tt class="py-lineno">196</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">urlparse</tt><tt class="py-op">.</tt><tt class="py-name">urlunparse</tt><tt class="py-op">(</tt><tt class="py-name">parsed</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L197"></a><tt class="py-lineno">197</tt> <tt class="py-line"> </tt><script type="text/javascript">
<!--
expandto(location.href);
// -->
@@ -297,7 +293,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:26 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:47 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.xsrfutil-module.html b/docs/epy/oauth2client.xsrfutil-module.html
index 25d9dae..4ff22d7 100644
--- a/docs/epy/oauth2client.xsrfutil-module.html
+++ b/docs/epy/oauth2client.xsrfutil-module.html
@@ -282,7 +282,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:23 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:42 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/oauth2client.xsrfutil-pysrc.html b/docs/epy/oauth2client.xsrfutil-pysrc.html
index 4f04399..e6e1c1c 100644
--- a/docs/epy/oauth2client.xsrfutil-pysrc.html
+++ b/docs/epy/oauth2client.xsrfutil-pysrc.html
@@ -108,20 +108,20 @@
<a name="L53"></a><tt class="py-lineno"> 53</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
<a name="L54"></a><tt class="py-lineno"> 54</tt> <tt class="py-line"> <tt class="py-name">when</tt> <tt class="py-op">=</tt> <tt class="py-name">when</tt> <tt class="py-keyword">or</tt> <tt class="py-name">int</tt><tt class="py-op">(</tt><tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">time</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L55"></a><tt class="py-lineno"> 55</tt> <tt class="py-line"> <tt class="py-name">digester</tt> <tt class="py-op">=</tt> <tt class="py-name">hmac</tt><tt class="py-op">.</tt><tt class="py-name">new</tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">)</tt> </tt>
-<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"> <tt class="py-name">digester</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">user_id</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"> <tt class="py-name">digester</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt id="link-5" class="py-name"><a title="oauth2client.xsrfutil.DELIMITER" class="py-name" href="#" onclick="return doclink('link-5', 'DELIMITER', 'link-2');">DELIMITER</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"> <tt class="py-name">digester</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">action_id</tt><tt class="py-op">)</tt> </tt>
-<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"> <tt class="py-name">digester</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt id="link-6" class="py-name"><a title="oauth2client.xsrfutil.DELIMITER" class="py-name" href="#" onclick="return doclink('link-6', 'DELIMITER', 'link-2');">DELIMITER</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"> <tt class="py-name">digester</tt><tt class="py-op">.</tt><tt class="py-name">update</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">when</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L56"></a><tt class="py-lineno"> 56</tt> <tt class="py-line"> <tt class="py-name">digester</tt><tt class="py-op">.</tt><tt id="link-5" class="py-name" targets="Method apiclient.channel.Channel.update()=apiclient.channel.Channel-class.html#update"><a title="apiclient.channel.Channel.update" class="py-name" href="#" onclick="return doclink('link-5', 'update', 'link-5');">update</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">user_id</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L57"></a><tt class="py-lineno"> 57</tt> <tt class="py-line"> <tt class="py-name">digester</tt><tt class="py-op">.</tt><tt id="link-6" class="py-name"><a title="apiclient.channel.Channel.update" class="py-name" href="#" onclick="return doclink('link-6', 'update', 'link-5');">update</a></tt><tt class="py-op">(</tt><tt id="link-7" class="py-name"><a title="oauth2client.xsrfutil.DELIMITER" class="py-name" href="#" onclick="return doclink('link-7', 'DELIMITER', 'link-2');">DELIMITER</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L58"></a><tt class="py-lineno"> 58</tt> <tt class="py-line"> <tt class="py-name">digester</tt><tt class="py-op">.</tt><tt id="link-8" class="py-name"><a title="apiclient.channel.Channel.update" class="py-name" href="#" onclick="return doclink('link-8', 'update', 'link-5');">update</a></tt><tt class="py-op">(</tt><tt class="py-name">action_id</tt><tt class="py-op">)</tt> </tt>
+<a name="L59"></a><tt class="py-lineno"> 59</tt> <tt class="py-line"> <tt class="py-name">digester</tt><tt class="py-op">.</tt><tt id="link-9" class="py-name"><a title="apiclient.channel.Channel.update" class="py-name" href="#" onclick="return doclink('link-9', 'update', 'link-5');">update</a></tt><tt class="py-op">(</tt><tt id="link-10" class="py-name"><a title="oauth2client.xsrfutil.DELIMITER" class="py-name" href="#" onclick="return doclink('link-10', 'DELIMITER', 'link-2');">DELIMITER</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L60"></a><tt class="py-lineno"> 60</tt> <tt class="py-line"> <tt class="py-name">digester</tt><tt class="py-op">.</tt><tt id="link-11" class="py-name"><a title="apiclient.channel.Channel.update" class="py-name" href="#" onclick="return doclink('link-11', 'update', 'link-5');">update</a></tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">when</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L61"></a><tt class="py-lineno"> 61</tt> <tt class="py-line"> <tt class="py-name">digest</tt> <tt class="py-op">=</tt> <tt class="py-name">digester</tt><tt class="py-op">.</tt><tt class="py-name">digest</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L62"></a><tt class="py-lineno"> 62</tt> <tt class="py-line"> </tt>
<a name="L63"></a><tt class="py-lineno"> 63</tt> <tt class="py-line"> <tt class="py-name">token</tt> <tt class="py-op">=</tt> <tt class="py-name">base64</tt><tt class="py-op">.</tt><tt class="py-name">urlsafe_b64encode</tt><tt class="py-op">(</tt><tt class="py-string">'%s%s%d'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">digest</tt><tt class="py-op">,</tt> </tt>
-<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"> <tt id="link-7" class="py-name"><a title="oauth2client.xsrfutil.DELIMITER" class="py-name" href="#" onclick="return doclink('link-7', 'DELIMITER', 'link-2');">DELIMITER</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L64"></a><tt class="py-lineno"> 64</tt> <tt class="py-line"> <tt id="link-12" class="py-name"><a title="oauth2client.xsrfutil.DELIMITER" class="py-name" href="#" onclick="return doclink('link-12', 'DELIMITER', 'link-2');">DELIMITER</a></tt><tt class="py-op">,</tt> </tt>
<a name="L65"></a><tt class="py-lineno"> 65</tt> <tt class="py-line"> <tt class="py-name">when</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L66"></a><tt class="py-lineno"> 66</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">token</tt> </tt>
</div><a name="L67"></a><tt class="py-lineno"> 67</tt> <tt class="py-line"> </tt>
<a name="validate_token"></a><div id="validate_token-def"><a name="L68"></a><tt class="py-lineno"> 68</tt> <tt class="py-line"> </tt>
-<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"><tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-8" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-8', 'positional', 'link-4');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
+<a name="L69"></a><tt class="py-lineno"> 69</tt> <tt class="py-line"><tt class="py-decorator">@</tt><tt class="py-decorator">util</tt><tt class="py-op">.</tt><tt id="link-13" class="py-name"><a title="oauth2client.util.positional" class="py-name" href="#" onclick="return doclink('link-13', 'positional', 'link-4');">positional</a></tt><tt class="py-op">(</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
<a name="L70"></a><tt class="py-lineno"> 70</tt> <a class="py-toggle" href="#" id="validate_token-toggle" onclick="return toggle('validate_token');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="oauth2client.xsrfutil-module.html#validate_token">validate_token</a><tt class="py-op">(</tt><tt class="py-param">key</tt><tt class="py-op">,</tt> <tt class="py-param">token</tt><tt class="py-op">,</tt> <tt class="py-param">user_id</tt><tt class="py-op">,</tt> <tt class="py-param">action_id</tt><tt class="py-op">=</tt><tt class="py-string">""</tt><tt class="py-op">,</tt> <tt class="py-param">current_time</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="validate_token-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="validate_token-expanded"><a name="L71"></a><tt class="py-lineno"> 71</tt> <tt class="py-line"> <tt class="py-docstring">"""Validates that the given token authorizes the user for the action.</tt> </tt>
<a name="L72"></a><tt class="py-lineno"> 72</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
@@ -143,17 +143,17 @@
<a name="L88"></a><tt class="py-lineno"> 88</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
<a name="L89"></a><tt class="py-lineno"> 89</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
<a name="L90"></a><tt class="py-lineno"> 90</tt> <tt class="py-line"> <tt class="py-name">decoded</tt> <tt class="py-op">=</tt> <tt class="py-name">base64</tt><tt class="py-op">.</tt><tt class="py-name">urlsafe_b64decode</tt><tt class="py-op">(</tt><tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">token</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"> <tt class="py-name">token_time</tt> <tt class="py-op">=</tt> <tt class="py-name">long</tt><tt class="py-op">(</tt><tt class="py-name">decoded</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt id="link-9" class="py-name"><a title="oauth2client.xsrfutil.DELIMITER" class="py-name" href="#" onclick="return doclink('link-9', 'DELIMITER', 'link-2');">DELIMITER</a></tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L91"></a><tt class="py-lineno"> 91</tt> <tt class="py-line"> <tt class="py-name">token_time</tt> <tt class="py-op">=</tt> <tt class="py-name">long</tt><tt class="py-op">(</tt><tt class="py-name">decoded</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt id="link-14" class="py-name"><a title="oauth2client.xsrfutil.DELIMITER" class="py-name" href="#" onclick="return doclink('link-14', 'DELIMITER', 'link-2');">DELIMITER</a></tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
<a name="L92"></a><tt class="py-lineno"> 92</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-op">(</tt><tt class="py-name">TypeError</tt><tt class="py-op">,</tt> <tt class="py-name">ValueError</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L93"></a><tt class="py-lineno"> 93</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
<a name="L94"></a><tt class="py-lineno"> 94</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">current_time</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
<a name="L95"></a><tt class="py-lineno"> 95</tt> <tt class="py-line"> <tt class="py-name">current_time</tt> <tt class="py-op">=</tt> <tt class="py-name">time</tt><tt class="py-op">.</tt><tt class="py-name">time</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L96"></a><tt class="py-lineno"> 96</tt> <tt class="py-line"> <tt class="py-comment"># If the token is too old it's not valid.</tt> </tt>
-<a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">current_time</tt> <tt class="py-op">-</tt> <tt class="py-name">token_time</tt> <tt class="py-op">></tt> <tt id="link-10" class="py-name"><a title="oauth2client.xsrfutil.DEFAULT_TIMEOUT_SECS" class="py-name" href="#" onclick="return doclink('link-10', 'DEFAULT_TIMEOUT_SECS', 'link-3');">DEFAULT_TIMEOUT_SECS</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L97"></a><tt class="py-lineno"> 97</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">current_time</tt> <tt class="py-op">-</tt> <tt class="py-name">token_time</tt> <tt class="py-op">></tt> <tt id="link-15" class="py-name"><a title="oauth2client.xsrfutil.DEFAULT_TIMEOUT_SECS" class="py-name" href="#" onclick="return doclink('link-15', 'DEFAULT_TIMEOUT_SECS', 'link-3');">DEFAULT_TIMEOUT_SECS</a></tt><tt class="py-op">:</tt> </tt>
<a name="L98"></a><tt class="py-lineno"> 98</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
<a name="L99"></a><tt class="py-lineno"> 99</tt> <tt class="py-line"> </tt>
<a name="L100"></a><tt class="py-lineno">100</tt> <tt class="py-line"> <tt class="py-comment"># The given token should match the generated one with the same time.</tt> </tt>
-<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"> <tt class="py-name">expected_token</tt> <tt class="py-op">=</tt> <tt id="link-11" class="py-name" targets="Function oauth2client.xsrfutil.generate_token()=oauth2client.xsrfutil-module.html#generate_token"><a title="oauth2client.xsrfutil.generate_token" class="py-name" href="#" onclick="return doclink('link-11', 'generate_token', 'link-11');">generate_token</a></tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">user_id</tt><tt class="py-op">,</tt> <tt class="py-name">action_id</tt><tt class="py-op">=</tt><tt class="py-name">action_id</tt><tt class="py-op">,</tt> </tt>
+<a name="L101"></a><tt class="py-lineno">101</tt> <tt class="py-line"> <tt class="py-name">expected_token</tt> <tt class="py-op">=</tt> <tt id="link-16" class="py-name" targets="Function oauth2client.xsrfutil.generate_token()=oauth2client.xsrfutil-module.html#generate_token"><a title="oauth2client.xsrfutil.generate_token" class="py-name" href="#" onclick="return doclink('link-16', 'generate_token', 'link-16');">generate_token</a></tt><tt class="py-op">(</tt><tt class="py-name">key</tt><tt class="py-op">,</tt> <tt class="py-name">user_id</tt><tt class="py-op">,</tt> <tt class="py-name">action_id</tt><tt class="py-op">=</tt><tt class="py-name">action_id</tt><tt class="py-op">,</tt> </tt>
<a name="L102"></a><tt class="py-lineno">102</tt> <tt class="py-line"> <tt class="py-name">when</tt><tt class="py-op">=</tt><tt class="py-name">token_time</tt><tt class="py-op">)</tt> </tt>
<a name="L103"></a><tt class="py-lineno">103</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">token</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">expected_token</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
<a name="L104"></a><tt class="py-lineno">104</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">False</tt> </tt>
@@ -196,7 +196,7 @@
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Thu Mar 7 10:31:25 2013
+ Generated by Epydoc 3.0.1 on Tue Aug 6 12:16:47 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"
diff --git a/docs/epy/redirect.html b/docs/epy/redirect.html
index ec89b23..41633fb 100644
--- a/docs/epy/redirect.html
+++ b/docs/epy/redirect.html
@@ -7,7 +7,7 @@
<body>
<script type="text/javascript">
<!--
-var pages = ["oauth2client.locked_file.CredentialsFileSymbolicLinkError-c", "oauth2client.appengine.OAuth2DecoratorFromClientSecrets-c", "oauth2client.multistore_file.NewerCredentialStoreError-c", "oauth2client.clientsecrets.InvalidClientSecretsError-c", "oauth2client.file.CredentialsFileSymbolicLinkError-c", "oauth2client.client.SignedJwtAssertionCredentials-c", "oauth2client.client.UnknownClientSecretsFlowError-c", "oauth2client.multistore_file._MultiStore._Storage-c", "oauth2client.appengine.InvalidClientSecretsError-c", "oauth2client.client.AccessTokenCredentialsError-c", "oauth2client.locked_file.AlreadyLockedException-c", "apiclient.push.InvalidSubscriptionRequestError-c", "oauth2client.appengine.AppAssertionCredentials-c", "oauth2client.appengine.CredentialsNDBProperty-c", "apiclient.discovery.ResourceMethodParameters-c", "oauth2client.appengine.InvalidXsrfTokenError-c", "oauth2client.appengine.SiteXsrfSecretKeyNDB-c", "oauth2client.client.AccessTokenRefreshError-c", "apiclient.errors.UnacceptableMimeTypeError-c", "oauth2client.appengine.CredentialsNDBModel-c", "oauth2client.appengine.CredentialsProperty-c", "oauth2client.client.AccessTokenCredentials-c", "apiclient.errors.UnknownApiNameOrVersion-c", "oauth2client.appengine.SiteXsrfSecretKey-c", "oauth2client.client.AssertionCredentials-c", "oauth2client.django_orm.CredentialsField-c", "oauth2client.gce.AppAssertionCredentials-c", "oauth2client.multistore_file._MultiStore-c", "oauth2client.tools.ClientRedirectHandler-c", "google.appengine.ext.db.PropertiedClass-c", "oauth2client.appengine.CredentialsModel-c", "oauth2client.appengine.StorageByKeyName-c", "oauth2client.client.NonAsciiHeaderError-c", "oauth2client.client.OAuth2WebServerFlow-c", "oauth2client.client.VerifyJwtTokenError-c", "oauth2client.tools.ClientRedirectServer-c", "apiclient.errors.InvalidChunkSizeError-c", "apiclient.errors.UnexpectedMethodError-c", "oauth2client.appengine.FlowNDBProperty-c", "oauth2client.appengine.OAuth2Decorator-c", "apiclient.errors.MediaUploadSizeError-c", "apiclient.errors.ResumableUploadError-c", "oauth2client.client.FlowExchangeError-c", "oauth2client.client.OAuth2Credentials-c", "oauth2client.locked_file._PosixOpener-c", "apiclient.errors.UnexpectedBodyError-c", "apiclient.http.MediaDownloadProgress-c", "oauth2client.client.TokenRevokeError-c", "oauth2client.keyring_storage.Storage-c", "apiclient.model.ProtocolBufferModel-c", "oauth2client.appengine.FlowProperty-c", "oauth2client.crypt.AppIdentityError-c", "oauth2client.locked_file.LockedFile-c", "apiclient.http.MediaInMemoryUpload-c", "apiclient.http.MediaIoBaseDownload-c", "apiclient.http.MediaUploadProgress-c", "oauth2client.multistore_file.Error-c", "apiclient.errors.InvalidJsonError-c", "apiclient.http.RequestMockBuilder-c", "oauth2client.django_orm.FlowField-c", "apiclient.errors.UnknownFileType-c", "apiclient.errors.UnknownLinkType-c", "apiclient.http.MediaIoBaseUpload-c", "apiclient.schema._SchemaToStruct-c", "oauth2client.clientsecrets.Error-c", "oauth2client.locked_file._Opener-c", "apiclient.http.BatchHttpRequest-c", "apiclient.http.HttpMockSequence-c", "oauth2client.client.Credentials-c", "oauth2client.client.MemoryCache-c", "oauth2client.django_orm.Storage-c", "apiclient.http.HttpRequestMock-c", "apiclient.http.MediaFileUpload-c", "apiclient.push.WebhookChannel-c", "oauth2client.keyring_storage-m", "oauth2client.multistore_file-m", "apiclient.discovery.Resource-c", "apiclient.errors.BatchError-c", "apiclient.http._StreamSlice-c", "apiclient.push.Subscription-c", "oauth2client.client.Storage-c", "oauth2client.clientsecrets-m", "apiclient.errors.HttpError-c", "apiclient.http.HttpRequest-c", "apiclient.http.MediaUpload-c", "apiclient.model.MediaModel-c", "apiclient.model.BaseModel-c", "apiclient.model.JsonModel-c", "oauth2client.client.Error-c", "oauth2client.file.Storage-c", "oauth2client.locked_file-m", "apiclient.model.RawModel-c", "apiclient.schema.Schemas-c", "oauth2client.client.Flow-c", "oauth2client.django_orm-m", "apiclient.http.HttpMock-c", "oauth2client.appengine-m", "apiclient.errors.Error-c", "apiclient.push.Channel-c", "apiclient.push.Headers-c", "oauth2client.xsrfutil-m", "apiclient.model.Model-c", "oauth2client.anyjson-m", "apiclient.discovery-m", "apiclient.mimeparse-m", "oauth2client.client-m", "oauth2client.crypt-m", "oauth2client.tools-m", "oauth2client.file-m", "oauth2client.util-m", "apiclient.errors-m", "apiclient.schema-m", "oauth2client.gce-m", "apiclient.model-m", "apiclient.http-m", "apiclient.push-m", "apiclient.ext-m", "oauth2client-m", "apiclient-m"];
+var pages = ["oauth2client.locked_file.CredentialsFileSymbolicLinkError-c", "oauth2client.appengine.OAuth2DecoratorFromClientSecrets-c", "oauth2client.multistore_file.NewerCredentialStoreError-c", "oauth2client.clientsecrets.InvalidClientSecretsError-c", "oauth2client.file.CredentialsFileSymbolicLinkError-c", "oauth2client.client.SignedJwtAssertionCredentials-c", "oauth2client.client.UnknownClientSecretsFlowError-c", "oauth2client.multistore_file._MultiStore._Storage-c", "oauth2client.appengine.InvalidClientSecretsError-c", "oauth2client.client.AccessTokenCredentialsError-c", "oauth2client.locked_file.AlreadyLockedException-c", "oauth2client.appengine.AppAssertionCredentials-c", "oauth2client.appengine.CredentialsNDBProperty-c", "apiclient.discovery.ResourceMethodParameters-c", "oauth2client.appengine.InvalidXsrfTokenError-c", "oauth2client.appengine.SiteXsrfSecretKeyNDB-c", "oauth2client.client.AccessTokenRefreshError-c", "apiclient.errors.UnacceptableMimeTypeError-c", "oauth2client.appengine.CredentialsNDBModel-c", "oauth2client.appengine.CredentialsProperty-c", "oauth2client.client.AccessTokenCredentials-c", "apiclient.errors.InvalidNotificationError-c", "apiclient.errors.UnknownApiNameOrVersion-c", "oauth2client.appengine.SiteXsrfSecretKey-c", "oauth2client.client.AssertionCredentials-c", "oauth2client.django_orm.CredentialsField-c", "oauth2client.gce.AppAssertionCredentials-c", "oauth2client.multistore_file._MultiStore-c", "oauth2client.tools.ClientRedirectHandler-c", "google.appengine.ext.db.PropertiedClass-c", "oauth2client.appengine.CredentialsModel-c", "oauth2client.appengine.StorageByKeyName-c", "oauth2client.client.NonAsciiHeaderError-c", "oauth2client.client.OAuth2WebServerFlow-c", "oauth2client.client.VerifyJwtTokenError-c", "oauth2client.tools.ClientRedirectServer-c", "apiclient.errors.InvalidChunkSizeError-c", "apiclient.errors.UnexpectedMethodError-c", "oauth2client.appengine.FlowNDBProperty-c", "oauth2client.appengine.OAuth2Decorator-c", "apiclient.errors.MediaUploadSizeError-c", "apiclient.errors.ResumableUploadError-c", "oauth2client.client.FlowExchangeError-c", "oauth2client.client.OAuth2Credentials-c", "oauth2client.locked_file._PosixOpener-c", "apiclient.errors.UnexpectedBodyError-c", "apiclient.http.MediaDownloadProgress-c", "oauth2client.client.TokenRevokeError-c", "oauth2client.keyring_storage.Storage-c", "apiclient.model.ProtocolBufferModel-c", "oauth2client.appengine.FlowProperty-c", "oauth2client.crypt.AppIdentityError-c", "oauth2client.locked_file.LockedFile-c", "apiclient.http.MediaInMemoryUpload-c", "apiclient.http.MediaIoBaseDownload-c", "apiclient.http.MediaUploadProgress-c", "oauth2client.multistore_file.Error-c", "apiclient.errors.InvalidJsonError-c", "apiclient.http.RequestMockBuilder-c", "oauth2client.django_orm.FlowField-c", "apiclient.errors.UnknownFileType-c", "apiclient.errors.UnknownLinkType-c", "apiclient.http.MediaIoBaseUpload-c", "apiclient.schema._SchemaToStruct-c", "oauth2client.clientsecrets.Error-c", "oauth2client.locked_file._Opener-c", "apiclient.http.BatchHttpRequest-c", "apiclient.http.HttpMockSequence-c", "oauth2client.client.Credentials-c", "oauth2client.client.MemoryCache-c", "oauth2client.django_orm.Storage-c", "apiclient.channel.Notification-c", "apiclient.http.HttpRequestMock-c", "apiclient.http.MediaFileUpload-c", "oauth2client.keyring_storage-m", "oauth2client.multistore_file-m", "apiclient.discovery.Resource-c", "apiclient.errors.BatchError-c", "apiclient.http._StreamSlice-c", "oauth2client.client.Storage-c", "oauth2client.clientsecrets-m", "apiclient.errors.HttpError-c", "apiclient.http.HttpRequest-c", "apiclient.http.MediaUpload-c", "apiclient.model.MediaModel-c", "apiclient.channel.Channel-c", "apiclient.model.BaseModel-c", "apiclient.model.JsonModel-c", "oauth2client.client.Error-c", "oauth2client.file.Storage-c", "oauth2client.locked_file-m", "apiclient.model.RawModel-c", "apiclient.schema.Schemas-c", "oauth2client.client.Flow-c", "oauth2client.django_orm-m", "apiclient.http.HttpMock-c", "apiclient.sample_tools-m", "oauth2client.appengine-m", "apiclient.errors.Error-c", "oauth2client.xsrfutil-m", "apiclient.model.Model-c", "oauth2client.anyjson-m", "oauth2client.old_run-m", "apiclient.discovery-m", "apiclient.mimeparse-m", "oauth2client.client-m", "oauth2client.crypt-m", "oauth2client.tools-m", "apiclient.channel-m", "oauth2client.file-m", "oauth2client.util-m", "apiclient.errors-m", "apiclient.schema-m", "oauth2client.gce-m", "apiclient.model-m", "apiclient.http-m", "oauth2client-m", "apiclient-m"];
var dottedName = get_anchor();
if (dottedName) {
var target = redirect_url(dottedName);
diff --git a/docs/epy/toc-apiclient.channel-module.html b/docs/epy/toc-apiclient.channel-module.html
new file mode 100644
index 0000000..8f1d52a
--- /dev/null
+++ b/docs/epy/toc-apiclient.channel-module.html
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>channel</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<h1 class="toc">Module channel</h1>
+<hr />
+ <h2 class="toc">Classes</h2>
+ <a target="mainFrame" href="apiclient.channel.Channel-class.html"
+ >Channel</a><br /> <a target="mainFrame" href="apiclient.channel.Notification-class.html"
+ >Notification</a><br /> <h2 class="toc">Functions</h2>
+ <div class="private">
+ <a target="mainFrame" href="apiclient.channel-module.html#_upper_header_keys"
+ >_upper_header_keys</a><br /> </div>
+ <a target="mainFrame" href="apiclient.channel-module.html#new_webhook_channel"
+ >new_webhook_channel</a><br /> <a target="mainFrame" href="apiclient.channel-module.html#notification_from_headers"
+ >notification_from_headers</a><br /> <h2 class="toc">Variables</h2>
+ <a target="mainFrame" href="apiclient.channel-module.html#CHANNEL_PARAMS"
+ >CHANNEL_PARAMS</a><br /> <a target="mainFrame" href="apiclient.channel-module.html#EPOCH"
+ >EPOCH</a><br /> <a target="mainFrame" href="apiclient.channel-module.html#X_GOOG_CHANNEL_ID"
+ >X_GOOG_CHANNEL_ID</a><br /> <a target="mainFrame" href="apiclient.channel-module.html#X_GOOG_MESSAGE_NUMBER"
+ >X_GOOG_MESSAGE_NUMBER</a><br /> <a target="mainFrame" href="apiclient.channel-module.html#X_GOOG_RESOURCE_ID"
+ >X_GOOG_RESOURCE_ID</a><br /> <a target="mainFrame" href="apiclient.channel-module.html#X_GOOG_RESOURCE_STATE"
+ >X_GOOG_RESOURCE_STATE</a><br /> <a target="mainFrame" href="apiclient.channel-module.html#X_GOOG_RESOURCE_URI"
+ >X_GOOG_RESOURCE_URI</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide private</a>]</span>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/docs/epy/toc-apiclient.errors-module.html b/docs/epy/toc-apiclient.errors-module.html
index 8981987..da65ac8 100644
--- a/docs/epy/toc-apiclient.errors-module.html
+++ b/docs/epy/toc-apiclient.errors-module.html
@@ -18,7 +18,8 @@
>Error</a><br /> <a target="mainFrame" href="apiclient.errors.HttpError-class.html"
>HttpError</a><br /> <a target="mainFrame" href="apiclient.errors.InvalidChunkSizeError-class.html"
>InvalidChunkSizeError</a><br /> <a target="mainFrame" href="apiclient.errors.InvalidJsonError-class.html"
- >InvalidJsonError</a><br /> <a target="mainFrame" href="apiclient.errors.MediaUploadSizeError-class.html"
+ >InvalidJsonError</a><br /> <a target="mainFrame" href="apiclient.errors.InvalidNotificationError-class.html"
+ >InvalidNotificationError</a><br /> <a target="mainFrame" href="apiclient.errors.MediaUploadSizeError-class.html"
>MediaUploadSizeError</a><br /> <a target="mainFrame" href="apiclient.errors.ResumableUploadError-class.html"
>ResumableUploadError</a><br /> <a target="mainFrame" href="apiclient.errors.UnacceptableMimeTypeError-class.html"
>UnacceptableMimeTypeError</a><br /> <a target="mainFrame" href="apiclient.errors.UnexpectedBodyError-class.html"
diff --git a/docs/epy/toc-apiclient.model-module.html b/docs/epy/toc-apiclient.model-module.html
index 6f9d79d..b75d91c 100644
--- a/docs/epy/toc-apiclient.model-module.html
+++ b/docs/epy/toc-apiclient.model-module.html
@@ -25,8 +25,8 @@
>_abstract</a><br /> </div>
<a target="mainFrame" href="apiclient.model-module.html#makepatch"
>makepatch</a><br /> <h2 class="toc">Variables</h2>
- <a target="mainFrame" href="apiclient.model-module.html#FLAGS"
- >FLAGS</a><br /><hr />
+ <a target="mainFrame" href="apiclient.model-module.html#dump_request_response"
+ >dump_request_response</a><br /><hr />
<span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide private</a>]</span>
diff --git a/docs/epy/toc-apiclient.sample_tools-module.html b/docs/epy/toc-apiclient.sample_tools-module.html
new file mode 100644
index 0000000..1736071
--- /dev/null
+++ b/docs/epy/toc-apiclient.sample_tools-module.html
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>sample_tools</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<h1 class="toc">Module sample_tools</h1>
+<hr />
+ <h2 class="toc">Functions</h2>
+ <a target="mainFrame" href="apiclient.sample_tools-module.html#init"
+ >init</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide private</a>]</span>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/docs/epy/toc-everything.html b/docs/epy/toc-everything.html
index 239b732..f96e2da 100644
--- a/docs/epy/toc-everything.html
+++ b/docs/epy/toc-everything.html
@@ -13,7 +13,9 @@
<h1 class="toc">Everything</h1>
<hr />
<h2 class="toc">All Classes</h2>
- <div class="private">
+ <a target="mainFrame" href="apiclient.channel.Channel-class.html"
+ >apiclient.channel.Channel</a><br /> <a target="mainFrame" href="apiclient.channel.Notification-class.html"
+ >apiclient.channel.Notification</a><br /> <div class="private">
<a target="mainFrame" href="apiclient.discovery.Resource-class.html"
>apiclient.discovery.Resource</a><br /> </div>
<div class="private">
@@ -24,7 +26,8 @@
>apiclient.errors.Error</a><br /> <a target="mainFrame" href="apiclient.errors.HttpError-class.html"
>apiclient.errors.HttpError</a><br /> <a target="mainFrame" href="apiclient.errors.InvalidChunkSizeError-class.html"
>apiclient.errors.InvalidChunkSizeError</a><br /> <a target="mainFrame" href="apiclient.errors.InvalidJsonError-class.html"
- >apiclient.errors.InvalidJsonError</a><br /> <a target="mainFrame" href="apiclient.errors.MediaUploadSizeError-class.html"
+ >apiclient.errors.InvalidJsonError</a><br /> <a target="mainFrame" href="apiclient.errors.InvalidNotificationError-class.html"
+ >apiclient.errors.InvalidNotificationError</a><br /> <a target="mainFrame" href="apiclient.errors.MediaUploadSizeError-class.html"
>apiclient.errors.MediaUploadSizeError</a><br /> <a target="mainFrame" href="apiclient.errors.ResumableUploadError-class.html"
>apiclient.errors.ResumableUploadError</a><br /> <a target="mainFrame" href="apiclient.errors.UnacceptableMimeTypeError-class.html"
>apiclient.errors.UnacceptableMimeTypeError</a><br /> <a target="mainFrame" href="apiclient.errors.UnexpectedBodyError-class.html"
@@ -54,12 +57,7 @@
>apiclient.model.MediaModel</a><br /> <a target="mainFrame" href="apiclient.model.Model-class.html"
>apiclient.model.Model</a><br /> <a target="mainFrame" href="apiclient.model.ProtocolBufferModel-class.html"
>apiclient.model.ProtocolBufferModel</a><br /> <a target="mainFrame" href="apiclient.model.RawModel-class.html"
- >apiclient.model.RawModel</a><br /> <a target="mainFrame" href="apiclient.push.Channel-class.html"
- >apiclient.push.Channel</a><br /> <a target="mainFrame" href="apiclient.push.Headers-class.html"
- >apiclient.push.Headers</a><br /> <a target="mainFrame" href="apiclient.push.InvalidSubscriptionRequestError-class.html"
- >apiclient.push.InvalidSubscriptionRequestError</a><br /> <a target="mainFrame" href="apiclient.push.Subscription-class.html"
- >apiclient.push.Subscription</a><br /> <a target="mainFrame" href="apiclient.push.WebhookChannel-class.html"
- >apiclient.push.WebhookChannel</a><br /> <a target="mainFrame" href="apiclient.schema.Schemas-class.html"
+ >apiclient.model.RawModel</a><br /> <a target="mainFrame" href="apiclient.schema.Schemas-class.html"
>apiclient.schema.Schemas</a><br /> <div class="private">
<a target="mainFrame" href="apiclient.schema._SchemaToStruct-class.html"
>apiclient.schema._SchemaToStruct</a><br /> </div>
@@ -130,6 +128,11 @@
>oauth2client.tools.ClientRedirectServer</a><br /> </div>
<h2 class="toc">All Functions</h2>
<div class="private">
+ <a target="mainFrame" href="apiclient.channel-module.html#_upper_header_keys"
+ >apiclient.channel._upper_header_keys</a><br /> </div>
+ <a target="mainFrame" href="apiclient.channel-module.html#new_webhook_channel"
+ >apiclient.channel.new_webhook_channel</a><br /> <a target="mainFrame" href="apiclient.channel-module.html#notification_from_headers"
+ >apiclient.channel.notification_from_headers</a><br /> <div class="private">
<a target="mainFrame" href="apiclient.discovery-module.html#_cast"
>apiclient.discovery._cast</a><br /> </div>
<div class="private">
@@ -172,8 +175,8 @@
<a target="mainFrame" href="apiclient.model-module.html#_abstract"
>apiclient.model._abstract</a><br /> </div>
<a target="mainFrame" href="apiclient.model-module.html#makepatch"
- >apiclient.model.makepatch</a><br /> <a target="mainFrame" href="apiclient.push-module.html#new_token"
- >apiclient.push.new_token</a><br /> <div class="private">
+ >apiclient.model.makepatch</a><br /> <a target="mainFrame" href="apiclient.sample_tools-module.html#init"
+ >apiclient.sample_tools.init</a><br /> <div class="private">
<a target="mainFrame" href="oauth2client.appengine-module.html#_build_state_value"
>oauth2client.appengine._build_state_value</a><br /> </div>
<div class="private">
@@ -228,11 +231,18 @@
<a target="mainFrame" href="oauth2client.crypt-module.html#make_signed_jwt"
>oauth2client.crypt.make_signed_jwt</a><br /> <a target="mainFrame" href="oauth2client.crypt-module.html#verify_signed_jwt_with_certs"
>oauth2client.crypt.verify_signed_jwt_with_certs</a><br /> <a target="mainFrame" href="oauth2client.locked_file-module.html#validate_file"
- >oauth2client.locked_file.validate_file</a><br /> <a target="mainFrame" href="oauth2client.multistore_file-module.html#get_credential_storage"
+ >oauth2client.locked_file.validate_file</a><br /> <div class="private">
+ <a target="mainFrame" href="oauth2client.multistore_file-module.html#_get_multistore"
+ >oauth2client.multistore_file._get_multistore</a><br /> </div>
+ <a target="mainFrame" href="oauth2client.multistore_file-module.html#get_all_credential_keys"
+ >oauth2client.multistore_file.get_all_credential_keys</a><br /> <a target="mainFrame" href="oauth2client.multistore_file-module.html#get_credential_storage"
>oauth2client.multistore_file.get_credential_storage</a><br /> <a target="mainFrame" href="oauth2client.multistore_file-module.html#get_credential_storage_custom_key"
>oauth2client.multistore_file.get_credential_storage_custom_key</a><br /> <a target="mainFrame" href="oauth2client.multistore_file-module.html#get_credential_storage_custom_string_key"
- >oauth2client.multistore_file.get_credential_storage_custom_string_key</a><br /> <a target="mainFrame" href="oauth2client.tools-module.html#run"
- >oauth2client.tools.run</a><br /> <div class="private">
+ >oauth2client.multistore_file.get_credential_storage_custom_string_key</a><br /> <a target="mainFrame" href="oauth2client.old_run-module.html#run"
+ >oauth2client.old_run.run</a><br /> <a target="mainFrame" href="oauth2client.tools-module.html#message_if_missing"
+ >oauth2client.tools.message_if_missing</a><br /> <a target="mainFrame" href="oauth2client.tools-module.html#run"
+ >oauth2client.tools.run</a><br /> <a target="mainFrame" href="oauth2client.tools-module.html#run_flow"
+ >oauth2client.tools.run_flow</a><br /> <div class="private">
<a target="mainFrame" href="oauth2client.util-module.html#_add_query_parameter"
>oauth2client.util._add_query_parameter</a><br /> </div>
<div class="private">
@@ -245,7 +255,14 @@
<a target="mainFrame" href="oauth2client.xsrfutil-module.html#generate_token"
>oauth2client.xsrfutil.generate_token</a><br /> <a target="mainFrame" href="oauth2client.xsrfutil-module.html#validate_token"
>oauth2client.xsrfutil.validate_token</a><br /> <h2 class="toc">All Variables</h2>
- <div class="private">
+ <a target="mainFrame" href="apiclient.channel-module.html#CHANNEL_PARAMS"
+ >apiclient.channel.CHANNEL_PARAMS</a><br /> <a target="mainFrame" href="apiclient.channel-module.html#EPOCH"
+ >apiclient.channel.EPOCH</a><br /> <a target="mainFrame" href="apiclient.channel-module.html#X_GOOG_CHANNEL_ID"
+ >apiclient.channel.X_GOOG_CHANNEL_ID</a><br /> <a target="mainFrame" href="apiclient.channel-module.html#X_GOOG_MESSAGE_NUMBER"
+ >apiclient.channel.X_GOOG_MESSAGE_NUMBER</a><br /> <a target="mainFrame" href="apiclient.channel-module.html#X_GOOG_RESOURCE_ID"
+ >apiclient.channel.X_GOOG_RESOURCE_ID</a><br /> <a target="mainFrame" href="apiclient.channel-module.html#X_GOOG_RESOURCE_STATE"
+ >apiclient.channel.X_GOOG_RESOURCE_STATE</a><br /> <a target="mainFrame" href="apiclient.channel-module.html#X_GOOG_RESOURCE_URI"
+ >apiclient.channel.X_GOOG_RESOURCE_URI</a><br /> <div class="private">
<a target="mainFrame" href="apiclient.discovery-module.html#BODY_PARAMETER_DEFAULT_VALUE"
>apiclient.discovery.BODY_PARAMETER_DEFAULT_VALUE</a><br /> </div>
<div class="private">
@@ -285,15 +302,8 @@
>apiclient.http.DEFAULT_CHUNK_SIZE</a><br /> <a target="mainFrame" href="apiclient.http-module.html#MAX_URI_LENGTH"
>apiclient.http.MAX_URI_LENGTH</a><br /> <a target="mainFrame" href="apiclient.mimeparse-module.html#__credits__"
>apiclient.mimeparse.__credits__</a><br /> <a target="mainFrame" href="apiclient.mimeparse-module.html#__email__"
- >apiclient.mimeparse.__email__</a><br /> <a target="mainFrame" href="apiclient.model-module.html#FLAGS"
- >apiclient.model.FLAGS</a><br /> <a target="mainFrame" href="apiclient.push-module.html#CLIENT_TOKEN"
- >apiclient.push.CLIENT_TOKEN</a><br /> <a target="mainFrame" href="apiclient.push-module.html#EVENT_TYPE"
- >apiclient.push.EVENT_TYPE</a><br /> <a target="mainFrame" href="apiclient.push-module.html#SUBSCRIBE"
- >apiclient.push.SUBSCRIBE</a><br /> <a target="mainFrame" href="apiclient.push-module.html#SUBSCRIPTION_ID"
- >apiclient.push.SUBSCRIPTION_ID</a><br /> <a target="mainFrame" href="apiclient.push-module.html#TOPIC_ID"
- >apiclient.push.TOPIC_ID</a><br /> <a target="mainFrame" href="apiclient.push-module.html#TOPIC_URI"
- >apiclient.push.TOPIC_URI</a><br /> <a target="mainFrame" href="apiclient.push-module.html#UNSUBSCRIBE"
- >apiclient.push.UNSUBSCRIBE</a><br /> <a target="mainFrame" href="oauth2client-module.html#GOOGLE_AUTH_URI"
+ >apiclient.mimeparse.__email__</a><br /> <a target="mainFrame" href="apiclient.model-module.html#dump_request_response"
+ >apiclient.model.dump_request_response</a><br /> <a target="mainFrame" href="oauth2client-module.html#GOOGLE_AUTH_URI"
>oauth2client.GOOGLE_AUTH_URI</a><br /> <a target="mainFrame" href="oauth2client-module.html#GOOGLE_REVOKE_URI"
>oauth2client.GOOGLE_REVOKE_URI</a><br /> <a target="mainFrame" href="oauth2client-module.html#GOOGLE_TOKEN_URI"
>oauth2client.GOOGLE_TOKEN_URI</a><br /> <a target="mainFrame" href="oauth2client.appengine-module.html#OAUTH2CLIENT_NAMESPACE"
@@ -339,15 +349,23 @@
<a target="mainFrame" href="oauth2client.multistore_file-module.html#_multistores_lock"
>oauth2client.multistore_file._multistores_lock</a><br /> </div>
<a target="mainFrame" href="oauth2client.multistore_file-module.html#logger"
- >oauth2client.multistore_file.logger</a><br /> <div class="private">
- <a target="mainFrame" href="oauth2client.tools-module.html#FLAGS"
- >oauth2client.tools.FLAGS</a><br /> </div>
- <div class="private">
- <a target="mainFrame" href="oauth2client.util-module.html#FLAGS"
- >oauth2client.util.FLAGS</a><br /> </div>
- <div class="private">
+ >oauth2client.multistore_file.logger</a><br /> <a target="mainFrame" href="oauth2client.old_run-module.html#FLAGS"
+ >oauth2client.old_run.FLAGS</a><br /> <div class="private">
+ <a target="mainFrame" href="oauth2client.tools-module.html#_CLIENT_SECRETS_MESSAGE"
+ >oauth2client.tools._CLIENT_SECRETS_MESSAGE</a><br /> </div>
+ <a target="mainFrame" href="oauth2client.tools-module.html#argparser"
+ >oauth2client.tools.argparser</a><br /> <a target="mainFrame" href="oauth2client.util-module.html#POSITIONAL_EXCEPTION"
+ >oauth2client.util.POSITIONAL_EXCEPTION</a><br /> <a target="mainFrame" href="oauth2client.util-module.html#POSITIONAL_IGNORE"
+ >oauth2client.util.POSITIONAL_IGNORE</a><br /> <div class="private">
+ <a target="mainFrame" href="oauth2client.util-module.html#POSITIONAL_SET"
+ >oauth2client.util.POSITIONAL_SET</a><br /> </div>
+ <a target="mainFrame" href="oauth2client.util-module.html#POSITIONAL_WARNING"
+ >oauth2client.util.POSITIONAL_WARNING</a><br /> <div class="private">
<a target="mainFrame" href="oauth2client.util-module.html#logger"
>oauth2client.util.logger</a><br /> </div>
+ <div class="private">
+ <a target="mainFrame" href="oauth2client.util-module.html#positional_parameters_enforcement"
+ >oauth2client.util.positional_parameters_enforcement</a><br /> </div>
<a target="mainFrame" href="oauth2client.xsrfutil-module.html#DEFAULT_TIMEOUT_SECS"
>oauth2client.xsrfutil.DEFAULT_TIMEOUT_SECS</a><br /> <a target="mainFrame" href="oauth2client.xsrfutil-module.html#DELIMITER"
>oauth2client.xsrfutil.DELIMITER</a><br /><hr />
diff --git a/docs/epy/toc-oauth2client.multistore_file-module.html b/docs/epy/toc-oauth2client.multistore_file-module.html
index c139da8..e86c89b 100644
--- a/docs/epy/toc-oauth2client.multistore_file-module.html
+++ b/docs/epy/toc-oauth2client.multistore_file-module.html
@@ -19,7 +19,11 @@
<a target="mainFrame" href="oauth2client.multistore_file._MultiStore-class.html"
>_MultiStore</a><br /> </div>
<h2 class="toc">Functions</h2>
- <a target="mainFrame" href="oauth2client.multistore_file-module.html#get_credential_storage"
+ <div class="private">
+ <a target="mainFrame" href="oauth2client.multistore_file-module.html#_get_multistore"
+ >_get_multistore</a><br /> </div>
+ <a target="mainFrame" href="oauth2client.multistore_file-module.html#get_all_credential_keys"
+ >get_all_credential_keys</a><br /> <a target="mainFrame" href="oauth2client.multistore_file-module.html#get_credential_storage"
>get_credential_storage</a><br /> <a target="mainFrame" href="oauth2client.multistore_file-module.html#get_credential_storage_custom_key"
>get_credential_storage_custom_key</a><br /> <a target="mainFrame" href="oauth2client.multistore_file-module.html#get_credential_storage_custom_string_key"
>get_credential_storage_custom_string_key</a><br /> <h2 class="toc">Variables</h2>
diff --git a/docs/epy/toc-oauth2client.old_run-module.html b/docs/epy/toc-oauth2client.old_run-module.html
new file mode 100644
index 0000000..5fbd5c3
--- /dev/null
+++ b/docs/epy/toc-oauth2client.old_run-module.html
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="ascii"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+ <title>old_run</title>
+ <link rel="stylesheet" href="epydoc.css" type="text/css" />
+ <script type="text/javascript" src="epydoc.js"></script>
+</head>
+
+<body bgcolor="white" text="black" link="blue" vlink="#204080"
+ alink="#204080">
+<h1 class="toc">Module old_run</h1>
+<hr />
+ <h2 class="toc">Functions</h2>
+ <a target="mainFrame" href="oauth2client.old_run-module.html#run"
+ >run</a><br /> <h2 class="toc">Variables</h2>
+ <a target="mainFrame" href="oauth2client.old_run-module.html#FLAGS"
+ >FLAGS</a><br /><hr />
+<span class="options">[<a href="javascript:void(0);" class="privatelink"
+ onclick="toggle_private();">hide private</a>]</span>
+
+<script type="text/javascript">
+ <!--
+ // Private objects are initially displayed (because if
+ // javascript is turned off then we want them to be
+ // visible); but by default, we want to hide them. So hide
+ // them unless we have a cookie that says to show them.
+ checkCookie();
+ // -->
+</script>
+</body>
+</html>
diff --git a/docs/epy/toc-oauth2client.tools-module.html b/docs/epy/toc-oauth2client.tools-module.html
index adfe3df..355b11f 100644
--- a/docs/epy/toc-oauth2client.tools-module.html
+++ b/docs/epy/toc-oauth2client.tools-module.html
@@ -20,12 +20,15 @@
<a target="mainFrame" href="oauth2client.tools.ClientRedirectServer-class.html"
>ClientRedirectServer</a><br /> </div>
<h2 class="toc">Functions</h2>
- <a target="mainFrame" href="oauth2client.tools-module.html#run"
- >run</a><br /> <h2 class="toc">Variables</h2>
+ <a target="mainFrame" href="oauth2client.tools-module.html#message_if_missing"
+ >message_if_missing</a><br /> <a target="mainFrame" href="oauth2client.tools-module.html#run"
+ >run</a><br /> <a target="mainFrame" href="oauth2client.tools-module.html#run_flow"
+ >run_flow</a><br /> <h2 class="toc">Variables</h2>
<div class="private">
- <a target="mainFrame" href="oauth2client.tools-module.html#FLAGS"
- >FLAGS</a><br /> </div>
-<hr />
+ <a target="mainFrame" href="oauth2client.tools-module.html#_CLIENT_SECRETS_MESSAGE"
+ >_CLIENT_SECRETS_MESSAGE</a><br /> </div>
+ <a target="mainFrame" href="oauth2client.tools-module.html#argparser"
+ >argparser</a><br /><hr />
<span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide private</a>]</span>
diff --git a/docs/epy/toc-oauth2client.util-module.html b/docs/epy/toc-oauth2client.util-module.html
index 4274b02..335250f 100644
--- a/docs/epy/toc-oauth2client.util-module.html
+++ b/docs/epy/toc-oauth2client.util-module.html
@@ -24,12 +24,18 @@
<a target="mainFrame" href="oauth2client.util-module.html#scopes_to_string"
>scopes_to_string</a><br /> </div>
<h2 class="toc">Variables</h2>
- <div class="private">
- <a target="mainFrame" href="oauth2client.util-module.html#FLAGS"
- >FLAGS</a><br /> </div>
- <div class="private">
+ <a target="mainFrame" href="oauth2client.util-module.html#POSITIONAL_EXCEPTION"
+ >POSITIONAL_EXCEPTION</a><br /> <a target="mainFrame" href="oauth2client.util-module.html#POSITIONAL_IGNORE"
+ >POSITIONAL_IGNORE</a><br /> <div class="private">
+ <a target="mainFrame" href="oauth2client.util-module.html#POSITIONAL_SET"
+ >POSITIONAL_SET</a><br /> </div>
+ <a target="mainFrame" href="oauth2client.util-module.html#POSITIONAL_WARNING"
+ >POSITIONAL_WARNING</a><br /> <div class="private">
<a target="mainFrame" href="oauth2client.util-module.html#logger"
>logger</a><br /> </div>
+ <div class="private">
+ <a target="mainFrame" href="oauth2client.util-module.html#positional_parameters_enforcement"
+ >positional_parameters_enforcement</a><br /> </div>
<hr />
<span class="options">[<a href="javascript:void(0);" class="privatelink"
onclick="toggle_private();">hide private</a>]</span>
diff --git a/docs/epy/toc.html b/docs/epy/toc.html
index 0237028..8a7b479 100644
--- a/docs/epy/toc.html
+++ b/docs/epy/toc.html
@@ -16,14 +16,14 @@
<br />
<h2 class="toc">Modules</h2>
<a target="moduleFrame" href="toc-apiclient-module.html"
- onclick="setFrame('toc-apiclient-module.html','apiclient-module.html');" >apiclient</a><br /> <a target="moduleFrame" href="toc-apiclient.discovery-module.html"
+ onclick="setFrame('toc-apiclient-module.html','apiclient-module.html');" >apiclient</a><br /> <a target="moduleFrame" href="toc-apiclient.channel-module.html"
+ onclick="setFrame('toc-apiclient.channel-module.html','apiclient.channel-module.html');" >apiclient.channel</a><br /> <a target="moduleFrame" href="toc-apiclient.discovery-module.html"
onclick="setFrame('toc-apiclient.discovery-module.html','apiclient.discovery-module.html');" >apiclient.discovery</a><br /> <a target="moduleFrame" href="toc-apiclient.errors-module.html"
- onclick="setFrame('toc-apiclient.errors-module.html','apiclient.errors-module.html');" >apiclient.errors</a><br /> <a target="moduleFrame" href="toc-apiclient.ext-module.html"
- onclick="setFrame('toc-apiclient.ext-module.html','apiclient.ext-module.html');" >apiclient.ext</a><br /> <a target="moduleFrame" href="toc-apiclient.http-module.html"
+ onclick="setFrame('toc-apiclient.errors-module.html','apiclient.errors-module.html');" >apiclient.errors</a><br /> <a target="moduleFrame" href="toc-apiclient.http-module.html"
onclick="setFrame('toc-apiclient.http-module.html','apiclient.http-module.html');" >apiclient.http</a><br /> <a target="moduleFrame" href="toc-apiclient.mimeparse-module.html"
onclick="setFrame('toc-apiclient.mimeparse-module.html','apiclient.mimeparse-module.html');" >apiclient.mimeparse</a><br /> <a target="moduleFrame" href="toc-apiclient.model-module.html"
- onclick="setFrame('toc-apiclient.model-module.html','apiclient.model-module.html');" >apiclient.model</a><br /> <a target="moduleFrame" href="toc-apiclient.push-module.html"
- onclick="setFrame('toc-apiclient.push-module.html','apiclient.push-module.html');" >apiclient.push</a><br /> <a target="moduleFrame" href="toc-apiclient.schema-module.html"
+ onclick="setFrame('toc-apiclient.model-module.html','apiclient.model-module.html');" >apiclient.model</a><br /> <a target="moduleFrame" href="toc-apiclient.sample_tools-module.html"
+ onclick="setFrame('toc-apiclient.sample_tools-module.html','apiclient.sample_tools-module.html');" >apiclient.sample_tools</a><br /> <a target="moduleFrame" href="toc-apiclient.schema-module.html"
onclick="setFrame('toc-apiclient.schema-module.html','apiclient.schema-module.html');" >apiclient.schema</a><br /> <a target="moduleFrame" href="toc-oauth2client-module.html"
onclick="setFrame('toc-oauth2client-module.html','oauth2client-module.html');" >oauth2client</a><br /> <a target="moduleFrame" href="toc-oauth2client.anyjson-module.html"
onclick="setFrame('toc-oauth2client.anyjson-module.html','oauth2client.anyjson-module.html');" >oauth2client.anyjson</a><br /> <a target="moduleFrame" href="toc-oauth2client.appengine-module.html"
@@ -36,7 +36,8 @@
onclick="setFrame('toc-oauth2client.gce-module.html','oauth2client.gce-module.html');" >oauth2client.gce</a><br /> <a target="moduleFrame" href="toc-oauth2client.keyring_storage-module.html"
onclick="setFrame('toc-oauth2client.keyring_storage-module.html','oauth2client.keyring_storage-module.html');" >oauth2client.keyring_storage</a><br /> <a target="moduleFrame" href="toc-oauth2client.locked_file-module.html"
onclick="setFrame('toc-oauth2client.locked_file-module.html','oauth2client.locked_file-module.html');" >oauth2client.locked_file</a><br /> <a target="moduleFrame" href="toc-oauth2client.multistore_file-module.html"
- onclick="setFrame('toc-oauth2client.multistore_file-module.html','oauth2client.multistore_file-module.html');" >oauth2client.multistore_file</a><br /> <a target="moduleFrame" href="toc-oauth2client.tools-module.html"
+ onclick="setFrame('toc-oauth2client.multistore_file-module.html','oauth2client.multistore_file-module.html');" >oauth2client.multistore_file</a><br /> <a target="moduleFrame" href="toc-oauth2client.old_run-module.html"
+ onclick="setFrame('toc-oauth2client.old_run-module.html','oauth2client.old_run-module.html');" >oauth2client.old_run</a><br /> <a target="moduleFrame" href="toc-oauth2client.tools-module.html"
onclick="setFrame('toc-oauth2client.tools-module.html','oauth2client.tools-module.html');" >oauth2client.tools</a><br /> <a target="moduleFrame" href="toc-oauth2client.util-module.html"
onclick="setFrame('toc-oauth2client.util-module.html','oauth2client.util-module.html');" >oauth2client.util</a><br /> <a target="moduleFrame" href="toc-oauth2client.xsrfutil-module.html"
onclick="setFrame('toc-oauth2client.xsrfutil-module.html','oauth2client.xsrfutil-module.html');" >oauth2client.xsrfutil</a><br /><hr />
diff --git a/docs/epy/uml_class_diagram_for_apiclien.gif b/docs/epy/uml_class_diagram_for_apiclien.gif
new file mode 100644
index 0000000..6e70617
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_apiclien.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_apiclien_10.gif b/docs/epy/uml_class_diagram_for_apiclien_10.gif
new file mode 100644
index 0000000..e939751
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_apiclien_10.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_apiclien_11.gif b/docs/epy/uml_class_diagram_for_apiclien_11.gif
new file mode 100644
index 0000000..21f5e2d
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_apiclien_11.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_apiclien_12.gif b/docs/epy/uml_class_diagram_for_apiclien_12.gif
new file mode 100644
index 0000000..90589bb
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_apiclien_12.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_apiclien_13.gif b/docs/epy/uml_class_diagram_for_apiclien_13.gif
new file mode 100644
index 0000000..3781ebc
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_apiclien_13.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_apiclien_14.gif b/docs/epy/uml_class_diagram_for_apiclien_14.gif
new file mode 100644
index 0000000..4b2c56a
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_apiclien_14.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_apiclien_15.gif b/docs/epy/uml_class_diagram_for_apiclien_15.gif
new file mode 100644
index 0000000..627c6ff
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_apiclien_15.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_apiclien_16.gif b/docs/epy/uml_class_diagram_for_apiclien_16.gif
new file mode 100644
index 0000000..53a2609
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_apiclien_16.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_apiclien_17.gif b/docs/epy/uml_class_diagram_for_apiclien_17.gif
new file mode 100644
index 0000000..3d74ce8
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_apiclien_17.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_apiclien_18.gif b/docs/epy/uml_class_diagram_for_apiclien_18.gif
new file mode 100644
index 0000000..e2df6e6
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_apiclien_18.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_apiclien_19.gif b/docs/epy/uml_class_diagram_for_apiclien_19.gif
new file mode 100644
index 0000000..b91bbc4
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_apiclien_19.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_apiclien_2.gif b/docs/epy/uml_class_diagram_for_apiclien_2.gif
new file mode 100644
index 0000000..f239baa
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_apiclien_2.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_apiclien_20.gif b/docs/epy/uml_class_diagram_for_apiclien_20.gif
new file mode 100644
index 0000000..4fe8e19
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_apiclien_20.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_apiclien_21.gif b/docs/epy/uml_class_diagram_for_apiclien_21.gif
new file mode 100644
index 0000000..2e8778b
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_apiclien_21.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_apiclien_22.gif b/docs/epy/uml_class_diagram_for_apiclien_22.gif
new file mode 100644
index 0000000..f59e838
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_apiclien_22.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_apiclien_23.gif b/docs/epy/uml_class_diagram_for_apiclien_23.gif
new file mode 100644
index 0000000..c99b292
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_apiclien_23.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_apiclien_24.gif b/docs/epy/uml_class_diagram_for_apiclien_24.gif
new file mode 100644
index 0000000..5fd734a
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_apiclien_24.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_apiclien_25.gif b/docs/epy/uml_class_diagram_for_apiclien_25.gif
new file mode 100644
index 0000000..ca1ac7d
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_apiclien_25.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_apiclien_26.gif b/docs/epy/uml_class_diagram_for_apiclien_26.gif
new file mode 100644
index 0000000..3f933cf
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_apiclien_26.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_apiclien_27.gif b/docs/epy/uml_class_diagram_for_apiclien_27.gif
new file mode 100644
index 0000000..6b041be
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_apiclien_27.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_apiclien_28.gif b/docs/epy/uml_class_diagram_for_apiclien_28.gif
new file mode 100644
index 0000000..691facc
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_apiclien_28.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_apiclien_29.gif b/docs/epy/uml_class_diagram_for_apiclien_29.gif
new file mode 100644
index 0000000..d9e0ba3
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_apiclien_29.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_apiclien_3.gif b/docs/epy/uml_class_diagram_for_apiclien_3.gif
new file mode 100644
index 0000000..c3253b8
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_apiclien_3.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_apiclien_30.gif b/docs/epy/uml_class_diagram_for_apiclien_30.gif
new file mode 100644
index 0000000..f720c1f
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_apiclien_30.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_apiclien_31.gif b/docs/epy/uml_class_diagram_for_apiclien_31.gif
new file mode 100644
index 0000000..0002c5a
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_apiclien_31.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_apiclien_32.gif b/docs/epy/uml_class_diagram_for_apiclien_32.gif
new file mode 100644
index 0000000..17d2253
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_apiclien_32.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_apiclien_33.gif b/docs/epy/uml_class_diagram_for_apiclien_33.gif
new file mode 100644
index 0000000..fa04806
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_apiclien_33.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_apiclien_34.gif b/docs/epy/uml_class_diagram_for_apiclien_34.gif
new file mode 100644
index 0000000..709db46
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_apiclien_34.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_apiclien_35.gif b/docs/epy/uml_class_diagram_for_apiclien_35.gif
new file mode 100644
index 0000000..ebb71d8
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_apiclien_35.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_apiclien_36.gif b/docs/epy/uml_class_diagram_for_apiclien_36.gif
new file mode 100644
index 0000000..f234668
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_apiclien_36.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_apiclien_37.gif b/docs/epy/uml_class_diagram_for_apiclien_37.gif
new file mode 100644
index 0000000..4e5624b
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_apiclien_37.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_apiclien_38.gif b/docs/epy/uml_class_diagram_for_apiclien_38.gif
new file mode 100644
index 0000000..d272edf
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_apiclien_38.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_apiclien_39.gif b/docs/epy/uml_class_diagram_for_apiclien_39.gif
new file mode 100644
index 0000000..d7f7874
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_apiclien_39.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_apiclien_4.gif b/docs/epy/uml_class_diagram_for_apiclien_4.gif
new file mode 100644
index 0000000..5334b74
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_apiclien_4.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_apiclien_40.gif b/docs/epy/uml_class_diagram_for_apiclien_40.gif
new file mode 100644
index 0000000..cb15403
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_apiclien_40.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_apiclien_5.gif b/docs/epy/uml_class_diagram_for_apiclien_5.gif
new file mode 100644
index 0000000..df177ab
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_apiclien_5.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_apiclien_6.gif b/docs/epy/uml_class_diagram_for_apiclien_6.gif
new file mode 100644
index 0000000..44c7655
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_apiclien_6.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_apiclien_7.gif b/docs/epy/uml_class_diagram_for_apiclien_7.gif
new file mode 100644
index 0000000..357c6b4
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_apiclien_7.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_apiclien_8.gif b/docs/epy/uml_class_diagram_for_apiclien_8.gif
new file mode 100644
index 0000000..7d63380
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_apiclien_8.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_apiclien_9.gif b/docs/epy/uml_class_diagram_for_apiclien_9.gif
new file mode 100644
index 0000000..6e9e6f0
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_apiclien_9.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_google_a.gif b/docs/epy/uml_class_diagram_for_google_a.gif
new file mode 100644
index 0000000..61bee15
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_google_a.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_oauth2cl.gif b/docs/epy/uml_class_diagram_for_oauth2cl.gif
new file mode 100644
index 0000000..83e5132
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_oauth2cl.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_oauth2cl_10.gif b/docs/epy/uml_class_diagram_for_oauth2cl_10.gif
new file mode 100644
index 0000000..802ec04
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_oauth2cl_10.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_oauth2cl_11.gif b/docs/epy/uml_class_diagram_for_oauth2cl_11.gif
new file mode 100644
index 0000000..1299f7a
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_oauth2cl_11.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_oauth2cl_12.gif b/docs/epy/uml_class_diagram_for_oauth2cl_12.gif
new file mode 100644
index 0000000..8f425ce
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_oauth2cl_12.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_oauth2cl_13.gif b/docs/epy/uml_class_diagram_for_oauth2cl_13.gif
new file mode 100644
index 0000000..6557931
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_oauth2cl_13.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_oauth2cl_14.gif b/docs/epy/uml_class_diagram_for_oauth2cl_14.gif
new file mode 100644
index 0000000..c59dd4e
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_oauth2cl_14.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_oauth2cl_15.gif b/docs/epy/uml_class_diagram_for_oauth2cl_15.gif
new file mode 100644
index 0000000..7fed067
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_oauth2cl_15.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_oauth2cl_16.gif b/docs/epy/uml_class_diagram_for_oauth2cl_16.gif
new file mode 100644
index 0000000..bf8ab19
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_oauth2cl_16.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_oauth2cl_17.gif b/docs/epy/uml_class_diagram_for_oauth2cl_17.gif
new file mode 100644
index 0000000..b30a0a1
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_oauth2cl_17.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_oauth2cl_18.gif b/docs/epy/uml_class_diagram_for_oauth2cl_18.gif
new file mode 100644
index 0000000..7a1f6c3
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_oauth2cl_18.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_oauth2cl_19.gif b/docs/epy/uml_class_diagram_for_oauth2cl_19.gif
new file mode 100644
index 0000000..0b024d8
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_oauth2cl_19.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_oauth2cl_2.gif b/docs/epy/uml_class_diagram_for_oauth2cl_2.gif
new file mode 100644
index 0000000..527215c
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_oauth2cl_2.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_oauth2cl_20.gif b/docs/epy/uml_class_diagram_for_oauth2cl_20.gif
new file mode 100644
index 0000000..44c7655
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_oauth2cl_20.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_oauth2cl_21.gif b/docs/epy/uml_class_diagram_for_oauth2cl_21.gif
new file mode 100644
index 0000000..8aaa082
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_oauth2cl_21.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_oauth2cl_22.gif b/docs/epy/uml_class_diagram_for_oauth2cl_22.gif
new file mode 100644
index 0000000..21fa0f0
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_oauth2cl_22.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_oauth2cl_23.gif b/docs/epy/uml_class_diagram_for_oauth2cl_23.gif
new file mode 100644
index 0000000..ebcfe18
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_oauth2cl_23.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_oauth2cl_24.gif b/docs/epy/uml_class_diagram_for_oauth2cl_24.gif
new file mode 100644
index 0000000..a58a54b
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_oauth2cl_24.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_oauth2cl_25.gif b/docs/epy/uml_class_diagram_for_oauth2cl_25.gif
new file mode 100644
index 0000000..ecc212d
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_oauth2cl_25.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_oauth2cl_26.gif b/docs/epy/uml_class_diagram_for_oauth2cl_26.gif
new file mode 100644
index 0000000..aeb6016
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_oauth2cl_26.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_oauth2cl_27.gif b/docs/epy/uml_class_diagram_for_oauth2cl_27.gif
new file mode 100644
index 0000000..4e971a6
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_oauth2cl_27.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_oauth2cl_28.gif b/docs/epy/uml_class_diagram_for_oauth2cl_28.gif
new file mode 100644
index 0000000..a9a321d
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_oauth2cl_28.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_oauth2cl_29.gif b/docs/epy/uml_class_diagram_for_oauth2cl_29.gif
new file mode 100644
index 0000000..786b702
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_oauth2cl_29.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_oauth2cl_3.gif b/docs/epy/uml_class_diagram_for_oauth2cl_3.gif
new file mode 100644
index 0000000..4079d8f
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_oauth2cl_3.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_oauth2cl_30.gif b/docs/epy/uml_class_diagram_for_oauth2cl_30.gif
new file mode 100644
index 0000000..e906953
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_oauth2cl_30.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_oauth2cl_31.gif b/docs/epy/uml_class_diagram_for_oauth2cl_31.gif
new file mode 100644
index 0000000..617edc9
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_oauth2cl_31.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_oauth2cl_32.gif b/docs/epy/uml_class_diagram_for_oauth2cl_32.gif
new file mode 100644
index 0000000..44c7655
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_oauth2cl_32.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_oauth2cl_33.gif b/docs/epy/uml_class_diagram_for_oauth2cl_33.gif
new file mode 100644
index 0000000..b741aff
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_oauth2cl_33.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_oauth2cl_34.gif b/docs/epy/uml_class_diagram_for_oauth2cl_34.gif
new file mode 100644
index 0000000..2480b84
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_oauth2cl_34.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_oauth2cl_35.gif b/docs/epy/uml_class_diagram_for_oauth2cl_35.gif
new file mode 100644
index 0000000..72370b3
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_oauth2cl_35.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_oauth2cl_36.gif b/docs/epy/uml_class_diagram_for_oauth2cl_36.gif
new file mode 100644
index 0000000..6d3d4e9
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_oauth2cl_36.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_oauth2cl_37.gif b/docs/epy/uml_class_diagram_for_oauth2cl_37.gif
new file mode 100644
index 0000000..e0c1c7b
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_oauth2cl_37.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_oauth2cl_38.gif b/docs/epy/uml_class_diagram_for_oauth2cl_38.gif
new file mode 100644
index 0000000..580ca56
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_oauth2cl_38.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_oauth2cl_39.gif b/docs/epy/uml_class_diagram_for_oauth2cl_39.gif
new file mode 100644
index 0000000..1e5b5ad
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_oauth2cl_39.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_oauth2cl_4.gif b/docs/epy/uml_class_diagram_for_oauth2cl_4.gif
new file mode 100644
index 0000000..bc14161
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_oauth2cl_4.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_oauth2cl_40.gif b/docs/epy/uml_class_diagram_for_oauth2cl_40.gif
new file mode 100644
index 0000000..83e5132
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_oauth2cl_40.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_oauth2cl_41.gif b/docs/epy/uml_class_diagram_for_oauth2cl_41.gif
new file mode 100644
index 0000000..02701a4
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_oauth2cl_41.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_oauth2cl_42.gif b/docs/epy/uml_class_diagram_for_oauth2cl_42.gif
new file mode 100644
index 0000000..ea38d09
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_oauth2cl_42.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_oauth2cl_43.gif b/docs/epy/uml_class_diagram_for_oauth2cl_43.gif
new file mode 100644
index 0000000..580ca56
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_oauth2cl_43.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_oauth2cl_44.gif b/docs/epy/uml_class_diagram_for_oauth2cl_44.gif
new file mode 100644
index 0000000..7224f51
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_oauth2cl_44.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_oauth2cl_45.gif b/docs/epy/uml_class_diagram_for_oauth2cl_45.gif
new file mode 100644
index 0000000..3fa7a13
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_oauth2cl_45.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_oauth2cl_46.gif b/docs/epy/uml_class_diagram_for_oauth2cl_46.gif
new file mode 100644
index 0000000..511b513
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_oauth2cl_46.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_oauth2cl_47.gif b/docs/epy/uml_class_diagram_for_oauth2cl_47.gif
new file mode 100644
index 0000000..44c7655
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_oauth2cl_47.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_oauth2cl_48.gif b/docs/epy/uml_class_diagram_for_oauth2cl_48.gif
new file mode 100644
index 0000000..63f5114
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_oauth2cl_48.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_oauth2cl_49.gif b/docs/epy/uml_class_diagram_for_oauth2cl_49.gif
new file mode 100644
index 0000000..be1beb7
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_oauth2cl_49.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_oauth2cl_5.gif b/docs/epy/uml_class_diagram_for_oauth2cl_5.gif
new file mode 100644
index 0000000..3d0bf47
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_oauth2cl_5.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_oauth2cl_50.gif b/docs/epy/uml_class_diagram_for_oauth2cl_50.gif
new file mode 100644
index 0000000..20bac77
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_oauth2cl_50.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_oauth2cl_51.gif b/docs/epy/uml_class_diagram_for_oauth2cl_51.gif
new file mode 100644
index 0000000..3bf8117
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_oauth2cl_51.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_oauth2cl_52.gif b/docs/epy/uml_class_diagram_for_oauth2cl_52.gif
new file mode 100644
index 0000000..2b8aaa7
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_oauth2cl_52.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_oauth2cl_6.gif b/docs/epy/uml_class_diagram_for_oauth2cl_6.gif
new file mode 100644
index 0000000..f348239
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_oauth2cl_6.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_oauth2cl_7.gif b/docs/epy/uml_class_diagram_for_oauth2cl_7.gif
new file mode 100644
index 0000000..328de4f
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_oauth2cl_7.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_oauth2cl_8.gif b/docs/epy/uml_class_diagram_for_oauth2cl_8.gif
new file mode 100644
index 0000000..7f5b8ff
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_oauth2cl_8.gif
Binary files differ
diff --git a/docs/epy/uml_class_diagram_for_oauth2cl_9.gif b/docs/epy/uml_class_diagram_for_oauth2cl_9.gif
new file mode 100644
index 0000000..5226fb9
--- /dev/null
+++ b/docs/epy/uml_class_diagram_for_oauth2cl_9.gif
Binary files differ