Merge
diff --git a/.hgignore b/.hgignore
index c0447dd..9d35255 100644
--- a/.hgignore
+++ b/.hgignore
@@ -1,6 +1,7 @@
 syntax: glob
 
 *.pyc
+*.dat
 .*.swp
 */.git/*
 .gitignore
diff --git a/Makefile b/Makefile
index 12c6ff9..ef0ec30 100644
--- a/Makefile
+++ b/Makefile
@@ -1,8 +1,5 @@
 pep8:
-	find apiclient samples -name "*.py" | xargs pep8 --ignore=E111,E202
+				find apiclient samples -name "*.py" | xargs pep8 --ignore=E111,E202
 
 test:
-	python runtests.py
-
-skeletons:
-	python discovery_extras.py tests/data/buzz.json tests/data/latitude.json tests/data/moderator.json
+				python runtests.py
diff --git a/apiclient/discovery.py b/apiclient/discovery.py
index e516eeb..36d38e7 100644
--- a/apiclient/discovery.py
+++ b/apiclient/discovery.py
@@ -32,31 +32,15 @@
     from urlparse import parse_qsl
 except ImportError:
     from cgi import parse_qsl
+
 from apiclient.http import HttpRequest
 from apiclient.json import simplejson
+from apiclient.model import JsonModel
+from apiclient.errors import HttpError
+from apiclient.errors import UnknownLinkType
 
 URITEMPLATE = re.compile('{[^}]*}')
 VARNAME = re.compile('[a-zA-Z0-9_-]+')
-
-class Error(Exception):
-  """Base error for this module."""
-  pass
-
-
-class HttpError(Error):
-  """HTTP data was invalid or unexpected."""
-  def __init__(self, resp, detail):
-    self.resp = resp
-    self.detail = detail
-  def __str__(self):
-    return self.detail
-
-
-class UnknownLinkType(Error):
-  """Link type unknown or unexpected."""
-  pass
-
-
 DISCOVERY_URI = ('https://www.googleapis.com/discovery/v0.2beta1/describe/'
   '{api}/{apiVersion}')
 
@@ -78,53 +62,12 @@
   return ''.join(result)
 
 
-class JsonModel(object):
-
-  def request(self, headers, path_params, query_params, body_value):
-    query = self.build_query(query_params)
-    headers['accept'] = 'application/json'
-    if 'user-agent' in headers:
-      headers['user-agent'] += ' '
-    else:
-      headers['user-agent'] = ''
-    headers['user-agent'] += 'google-api-python-client/1.0'
-    if body_value is None:
-      return (headers, path_params, query, None)
-    else:
-      headers['content-type'] = 'application/json'
-      return (headers, path_params, query, simplejson.dumps(body_value))
-
-  def build_query(self, params):
-    params.update({'alt': 'json'})
-    params.update({'pp': '1'})
-    astuples = []
-    for key, value in params.iteritems():
-      if getattr(value, 'encode', False) and callable(value.encode):
-        value = value.encode('utf-8')
-      astuples.append((key, value))
-    return '?' + urllib.urlencode(astuples)
-
-  def response(self, resp, content):
-    # Error handling is TBD, for example, do we retry
-    # for some operation/error combinations?
-    if resp.status < 300:
-      if resp.status == 204:
-        # A 204: No Content response should be treated differently to all the other success states
-        return simplejson.loads('{}')
-      body = simplejson.loads(content)
-      if isinstance(body, dict) and 'data' in body:
-        body = body['data']
-      return body
-    else:
-      logging.error('Content from bad request was: %s' % content)
-      if resp.get('content-type', '').startswith('application/json'):
-        raise HttpError(resp, simplejson.loads(content)['error'])
-      else:
-        raise HttpError(resp, '%d %s' % (resp.status, resp.reason))
-
-
-def build(serviceName, version, http=None,
-    discoveryServiceUrl=DISCOVERY_URI, developerKey=None, model=JsonModel()):
+def build(serviceName, version,
+    http=None,
+    discoveryServiceUrl=DISCOVERY_URI,
+    developerKey=None,
+    model=JsonModel(),
+    requestBuilder=HttpRequest):
   params = {
       'api': serviceName,
       'apiVersion': version
@@ -160,6 +103,7 @@
       self._baseUrl = base
       self._model = model
       self._developerKey = developerKey
+      self._requestBuilder = requestBuilder
 
     def auth_discovery(self):
       return auth_discovery
@@ -168,7 +112,8 @@
 
     def method(self):
       return createResource(self._http, self._baseUrl, self._model,
-          methodName, self._developerKey, methodDesc, futureDesc)
+                            self._requestBuilder, methodName,
+                            self._developerKey, methodDesc, futureDesc)
 
     setattr(method, '__doc__', 'A description of how to use this function')
     setattr(method, '__is_resource__', True)
@@ -179,8 +124,8 @@
   return Service()
 
 
-def createResource(http, baseUrl, model, resourceName, developerKey,
-                   resourceDesc, futureDesc):
+def createResource(http, baseUrl, model, requestBuilder, resourceName,
+                   developerKey, resourceDesc, futureDesc):
 
   class Resource(object):
     """A class for interacting with a resource."""
@@ -190,11 +135,13 @@
       self._baseUrl = baseUrl
       self._model = model
       self._developerKey = developerKey
+      self._requestBuilder = requestBuilder
 
   def createMethod(theclass, methodName, methodDesc, futureDesc):
     pathUrl = methodDesc['restPath']
     pathUrl = re.sub(r'\{', r'{+', pathUrl)
     httpMethod = methodDesc['httpMethod']
+    methodId = methodDesc['rpcMethod']
 
     argmap = {}
     if httpMethod in ['PUT', 'POST']:
@@ -258,18 +205,23 @@
       headers, params, query, body = self._model.request(headers,
           actual_path_params, actual_query_params, body_value)
 
-      # TODO(ade) This exists to fix a bug in V1 of the Buzz discovery document.
-      # Base URLs should not contain any path elements. If they do then urlparse.urljoin will strip them out
-      # This results in an incorrect URL which returns a 404
+      # TODO(ade) This exists to fix a bug in V1 of the Buzz discovery
+      # document.  Base URLs should not contain any path elements. If they do
+      # then urlparse.urljoin will strip them out This results in an incorrect
+      # URL which returns a 404
       url_result = urlparse.urlsplit(self._baseUrl)
       new_base_url = url_result.scheme + '://' + url_result.netloc
 
       expanded_url = uritemplate.expand(pathUrl, params)
-      url = urlparse.urljoin(new_base_url, url_result.path + expanded_url + query)
+      url = urlparse.urljoin(new_base_url,
+                             url_result.path + expanded_url + query)
 
       logging.info('URL being requested: %s' % url)
-      return HttpRequest(self._http, url, method=httpMethod, body=body,
-                         headers=headers, postproc=self._model.response)
+      return self._requestBuilder(self._http, url,
+                                  method=httpMethod, body=body,
+                                  headers=headers,
+                                  postproc=self._model.response,
+                                  methodId=methodId)
 
     docs = ['A description of how to use this function\n\n']
     for arg in argmap.iterkeys():
@@ -281,7 +233,8 @@
     setattr(method, '__doc__', ''.join(docs))
     setattr(theclass, methodName, method)
 
-  def createNextMethod(theclass, methodName, methodDesc):
+  def createNextMethod(theclass, methodName, methodDesc, futureDesc):
+    methodId = methodDesc['rpcMethod'] + '.next'
 
     def method(self, previous):
       """
@@ -292,12 +245,12 @@
       Returns None if there are no more items in
       the collection.
       """
-      if methodDesc['type'] != 'uri':
-        raise UnknownLinkType(methodDesc['type'])
+      if futureDesc['type'] != 'uri':
+        raise UnknownLinkType(futureDesc['type'])
 
       try:
         p = previous
-        for key in methodDesc['location']:
+        for key in futureDesc['location']:
           p = p[key]
         url = p
       except (KeyError, TypeError):
@@ -316,8 +269,10 @@
       logging.info('URL being requested: %s' % url)
       resp, content = self._http.request(url, method='GET', headers=headers)
 
-      return HttpRequest(self._http, url, method='GET',
-                         headers=headers, postproc=self._model.response)
+      return self._requestBuilder(self._http, url, method='GET',
+                                  headers=headers,
+                                  postproc=self._model.response,
+                                  methodId=methodId)
 
     setattr(theclass, methodName, method)
 
@@ -332,6 +287,7 @@
 
   # Add in nested resources
   if 'resources' in resourceDesc:
+
     def createMethod(theclass, methodName, methodDesc, futureDesc):
 
       def method(self):
@@ -347,12 +303,15 @@
         future = futureDesc['resources'].get(methodName, {})
       else:
         future = {}
-      createMethod(Resource, methodName, methodDesc, future.get(methodName, {}))
+      createMethod(Resource, methodName, methodDesc,
+                   future.get(methodName, {}))
 
   # Add <m>_next() methods to Resource
   if futureDesc:
     for methodName, methodDesc in futureDesc['methods'].iteritems():
       if 'next' in methodDesc and methodName in resourceDesc['methods']:
-        createNextMethod(Resource, methodName + "_next", methodDesc['next'])
+        createNextMethod(Resource, methodName + "_next",
+                         resourceDesc['methods'][methodName],
+                         methodDesc['next'])
 
   return Resource()
diff --git a/apiclient/errors.py b/apiclient/errors.py
new file mode 100644
index 0000000..b3a7d13
--- /dev/null
+++ b/apiclient/errors.py
@@ -0,0 +1,32 @@
+#!/usr/bin/python2.4
+#
+# Copyright 2010 Google Inc. All Rights Reserved.
+
+"""Errors for the library.
+
+All exceptions defined by the library
+should be defined in this file.
+"""
+
+__author__ = 'jcgregorio@google.com (Joe Gregorio)'
+
+
+class Error(Exception):
+  """Base error for this module."""
+  pass
+
+
+class HttpError(Error):
+  """HTTP data was invalid or unexpected."""
+
+  def __init__(self, resp, detail):
+    self.resp = resp
+    self.detail = detail
+
+  def __str__(self):
+    return self.detail
+
+
+class UnknownLinkType(Error):
+  """Link type unknown or unexpected."""
+  pass
diff --git a/apiclient/ext/django_orm.py b/apiclient/ext/django_orm.py
index 4217eaa..d8cb92d 100644
--- a/apiclient/ext/django_orm.py
+++ b/apiclient/ext/django_orm.py
@@ -1,5 +1,6 @@
 from django.db import models
 
+
 class OAuthCredentialsField(models.Field):
 
   __metaclass__ = models.SubfieldBase
@@ -17,6 +18,7 @@
   def get_db_prep_value(self, value):
     return base64.b64encode(pickle.dumps(value))
 
+
 class FlowThreeLeggedField(models.Field):
 
   __metaclass__ = models.SubfieldBase
diff --git a/apiclient/http.py b/apiclient/http.py
index 25d646e..d616c07 100644
--- a/apiclient/http.py
+++ b/apiclient/http.py
@@ -1,19 +1,42 @@
 # Copyright 2010 Google Inc. All Rights Reserved.
 
-"""One-line documentation for http module.
+"""Classes to encapsulate a single HTTP request.
 
-A detailed description of http.
+The classes implement a command pattern, with every
+object supporting an execute() method that does the
+actuall HTTP request.
 """
 
 __author__ = 'jcgregorio@google.com (Joe Gregorio)'
+__all__ = [
+    'HttpRequest', 'RequestMockBuilder'
+    ]
+
+from httplib2 import Response
+from apiclient.model import JsonModel
 
 
 class HttpRequest(object):
-  """Encapsulate an HTTP request.
+  """Encapsulates a single HTTP request.
   """
 
   def __init__(self, http, uri, method="GET", body=None, headers=None,
-               postproc=None):
+               postproc=None, methodId=None):
+    """Constructor for an HttpRequest.
+
+    Only http and uri are required.
+
+    Args:
+      http: httplib2.Http, the transport object to use to make a request
+      uri: string, the absolute URI to send the request to
+      method: string, the HTTP method to use
+      body: string, the request body of the HTTP request
+      headers: dict, the HTTP request headers
+      postproc: callable, called on the HTTP response and content to transform
+                it into a data object before returning, or raising an exception
+                on an error.
+      methodId: string, a unique identifier for the API method being called.
+    """
     self.uri = uri
     self.method = method
     self.body = body
@@ -24,8 +47,17 @@
   def execute(self, http=None):
     """Execute the request.
 
-    If an http object is passed in it is used instead of the
-    httplib2.Http object that the request was constructed with.
+    Args:
+      http: httplib2.Http, an http object to be used in place of the
+            one the HttpRequest request object was constructed with.
+
+    Returns:
+      A deserialized object model of the response body as determined
+      by the postproc.
+
+    Raises:
+      apiclient.errors.HttpError if the response was not a 2xx.
+      httplib2.Error if a transport error has occured.
     """
     if http is None:
       http = self.http
@@ -33,3 +65,87 @@
                                       body=self.body,
                                       headers=self.headers)
     return self.postproc(resp, content)
+
+
+class HttpRequestMock(object):
+  """Mock of HttpRequest.
+
+  Do not construct directly, instead use RequestMockBuilder.
+  """
+
+  def __init__(self, resp, content, postproc):
+    """Constructor for HttpRequestMock
+
+    Args:
+      resp: httplib2.Response, the response to emulate coming from the request
+      content: string, the response body
+      postproc: callable, the post processing function usually supplied by
+                the model class. See model.JsonModel.response() as an example.
+    """
+    self.resp = resp
+    self.content = content
+    self.postproc = postproc
+    if resp is None:
+      self.resp = Response({'status': 200, 'reason': 'OK'})
+    if 'reason' in self.resp:
+      self.resp.reason = self.resp['reason']
+
+  def execute(self, http=None):
+    """Execute the request.
+
+    Same behavior as HttpRequest.execute(), but the response is
+    mocked and not really from an HTTP request/response.
+    """
+    return self.postproc(self.resp, self.content)
+
+
+class RequestMockBuilder(object):
+  """A simple mock of HttpRequest
+
+    Pass in a dictionary to the constructor that maps request methodIds to
+    tuples of (httplib2.Response, content) that should be returned when that
+    method is called. None may also be passed in for the httplib2.Response, in
+    which case a 200 OK response will be generated.
+
+    Example:
+      response = '{"data": {"id": "tag:google.c...'
+      requestBuilder = RequestMockBuilder(
+        {
+          'chili.activities.get': (None, response),
+        }
+      )
+      apiclient.discovery.build("buzz", "v1", requestBuilder=requestBuilder)
+
+    Methods that you do not supply a response for will return a
+    200 OK with an empty string as the response content. The methodId
+    is taken from the rpcName in the discovery document.
+
+    For more details see the project wiki.
+  """
+
+  def __init__(self, responses):
+    """Constructor for RequestMockBuilder
+
+    The constructed object should be a callable object
+    that can replace the class HttpResponse.
+
+    responses - A dictionary that maps methodIds into tuples
+                of (httplib2.Response, content). The methodId
+                comes from the 'rpcName' field in the discovery
+                document.
+    """
+    self.responses = responses
+
+  def __call__(self, http, uri, method="GET", body=None, headers=None,
+               postproc=None, methodId=None):
+    """Implements the callable interface that discovery.build() expects
+    of requestBuilder, which is to build an object compatible with
+    HttpRequest.execute(). See that method for the description of the
+    parameters and the expected response.
+    """
+    if methodId in self.responses:
+      resp, content = self.responses[methodId]
+      return HttpRequestMock(resp, content, postproc)
+    else:
+      model = JsonModel()
+      return HttpRequestMock(None, '{}', model.response)
diff --git a/apiclient/model.py b/apiclient/model.py
new file mode 100644
index 0000000..fb2bdf8
--- /dev/null
+++ b/apiclient/model.py
@@ -0,0 +1,105 @@
+#!/usr/bin/python2.4
+#
+# Copyright 2010 Google Inc. All Rights Reserved.
+
+"""Model objects for requests and responses
+
+Each API may support one or more serializations, such
+as JSON, Atom, etc. The model classes are responsible
+for converting between the wire format and the Python
+object representation.
+"""
+
+__author__ = 'jcgregorio@google.com (Joe Gregorio)'
+
+import logging
+import urllib
+
+from apiclient.json import simplejson
+from apiclient.errors import HttpError
+
+
+class JsonModel(object):
+  """Model class for JSON.
+
+  Serializes and de-serializes between JSON and the Python
+  object representation of HTTP request and response bodies.
+  """
+
+  def request(self, headers, path_params, query_params, body_value):
+    """Updates outgoing requests with JSON bodies.
+
+    Args:
+      headers: dict, request headers
+      path_params: dict, parameters that appear in the request path
+      query_params: dict, parameters that appear in the query
+      body_value: object, the request body as a Python object, which must be
+                  serializable by simplejson.
+    Returns:
+      A tuple of (headers, path_params, query, body)
+
+      headers: dict, request headers
+      path_params: dict, parameters that appear in the request path
+      query: string, query part of the request URI
+      body: string, the body serialized as JSON
+    """
+    query = self._build_query(query_params)
+    headers['accept'] = 'application/json'
+    if 'user-agent' in headers:
+      headers['user-agent'] += ' '
+    else:
+      headers['user-agent'] = ''
+    headers['user-agent'] += 'google-api-python-client/1.0'
+    if body_value is None:
+      return (headers, path_params, query, None)
+    else:
+      headers['content-type'] = 'application/json'
+      return (headers, path_params, query, simplejson.dumps(body_value))
+
+  def _build_query(self, params):
+    """Builds a query string.
+
+    Args:
+      params: dict, the query parameters
+
+    Returns:
+      The query parameters properly encoded into an HTTP URI query string.
+    """
+    params.update({'alt': 'json'})
+    astuples = []
+    for key, value in params.iteritems():
+      if getattr(value, 'encode', False) and callable(value.encode):
+        value = value.encode('utf-8')
+      astuples.append((key, value))
+    return '?' + urllib.urlencode(astuples)
+
+  def response(self, resp, content):
+    """Convert the response wire format into a Python object.
+
+    Args:
+      resp: httplib2.Response, the HTTP response headers and status
+      content: string, the body of the HTTP response
+
+    Returns:
+      The body de-serialized as a Python object.
+
+    Raises:
+      apiclient.errors.HttpError if a non 2xx response is received.
+    """
+    # Error handling is TBD, for example, do we retry
+    # for some operation/error combinations?
+    if resp.status < 300:
+      if resp.status == 204:
+        # A 204: No Content response should be treated differently
+        # to all the other success states
+        return simplejson.loads('{}')
+      body = simplejson.loads(content)
+      if isinstance(body, dict) and 'data' in body:
+        body = body['data']
+      return body
+    else:
+      logging.debug('Content from bad request was: %s' % content)
+      if resp.get('content-type', '').startswith('application/json'):
+        raise HttpError(resp, simplejson.loads(content)['error'])
+      else:
+        raise HttpError(resp, '%d %s' % (resp.status, resp.reason))
diff --git a/apiclient/oauth.py b/apiclient/oauth.py
index 9907c46..9cc6e66 100644
--- a/apiclient/oauth.py
+++ b/apiclient/oauth.py
@@ -131,9 +131,9 @@
         headers = {}
       headers.update(req.to_header())
       if 'user-agent' in headers:
-        headers['user-agent'] =  self.user_agent + ' ' + headers['user-agent']
+        headers['user-agent'] = self.user_agent + ' ' + headers['user-agent']
       else:
-        headers['user-agent'] =  self.user_agent
+        headers['user-agent'] = self.user_agent
       return request_orig(uri, method, body, headers,
                           redirections, connection_type)
 
diff --git a/docs/apiclient.contrib.html b/docs/apiclient.contrib.html
new file mode 100644
index 0000000..513802a
--- /dev/null
+++ b/docs/apiclient.contrib.html
@@ -0,0 +1,21 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><title>Python: package apiclient.contrib</title>
+</head><body bgcolor="#f0f0f8">
+
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
+<tr bgcolor="#7799ee">
+<td valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong><a href="apiclient.html"><font color="#ffffff">apiclient</font></a>.contrib</strong></big></big></font></td
+><td align=right valign=bottom
+><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/usr/local/google/home/jcgregorio/projects/apiary/apiclient/contrib/__init__.py">/usr/local/google/home/jcgregorio/projects/apiary/apiclient/contrib/__init__.py</a></font></td></tr></table>
+    <p></p>
+<p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#aa55cc">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Package Contents</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#aa55cc"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top></td><td width="25%" valign=top></td><td width="25%" valign=top></td><td width="25%" valign=top></td></tr></table></td></tr></table>
+</body></html>
\ No newline at end of file
diff --git a/docs/apiclient.discovery.html b/docs/apiclient.discovery.html
new file mode 100644
index 0000000..7936c9f
--- /dev/null
+++ b/docs/apiclient.discovery.html
@@ -0,0 +1,59 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><title>Python: module apiclient.discovery</title>
+</head><body bgcolor="#f0f0f8">
+
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
+<tr bgcolor="#7799ee">
+<td valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong><a href="apiclient.html"><font color="#ffffff">apiclient</font></a>.discovery</strong></big></big></font></td
+><td align=right valign=bottom
+><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/usr/local/google/home/jcgregorio/projects/apiary/apiclient/discovery.py">/usr/local/google/home/jcgregorio/projects/apiary/apiclient/discovery.py</a></font></td></tr></table>
+    <p><tt>Client&nbsp;for&nbsp;discovery&nbsp;based&nbsp;APIs<br>
+&nbsp;<br>
+A&nbsp;client&nbsp;library&nbsp;for&nbsp;Google's&nbsp;discovery<br>
+based&nbsp;APIs.</tt></p>
+<p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#aa55cc">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Modules</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#aa55cc"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="httplib2.html">httplib2</a><br>
+<a href="logging.html">logging</a><br>
+</td><td width="25%" valign=top><a href="os.html">os</a><br>
+<a href="re.html">re</a><br>
+</td><td width="25%" valign=top><a href="simplejson.html">simplejson</a><br>
+<a href="uritemplate.html">uritemplate</a><br>
+</td><td width="25%" valign=top><a href="urllib.html">urllib</a><br>
+<a href="urlparse.html">urlparse</a><br>
+</td></tr></table></td></tr></table><p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#eeaa77">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Functions</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#eeaa77"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%"><dl><dt><a name="-build"><strong>build</strong></a>(serviceName, version, http<font color="#909090">=None</font>, discoveryServiceUrl<font color="#909090">='https://www.googleapis.com/discovery/v0.2beta1/describe/{api}/{apiVersion}'</font>, developerKey<font color="#909090">=None</font>, model<font color="#909090">=&lt;apiclient.model.JsonModel object&gt;</font>, requestBuilder<font color="#909090">=&lt;class 'apiclient.http.HttpRequest'&gt;</font>)</dt></dl>
+ <dl><dt><a name="-createResource"><strong>createResource</strong></a>(http, baseUrl, model, requestBuilder, resourceName, developerKey, resourceDesc, futureDesc)</dt></dl>
+ <dl><dt><a name="-key2param"><strong>key2param</strong></a>(key)</dt><dd><tt>max-results&nbsp;-&gt;&nbsp;max_results</tt></dd></dl>
+</td></tr></table><p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#55aa55">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#55aa55"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%"><strong>DISCOVERY_URI</strong> = 'https://www.googleapis.com/discovery/v0.2beta1/describe/{api}/{apiVersion}'<br>
+<strong>URITEMPLATE</strong> = &lt;_sre.SRE_Pattern object&gt;<br>
+<strong>VARNAME</strong> = &lt;_sre.SRE_Pattern object&gt;<br>
+<strong>__author__</strong> = 'jcgregorio@google.com (Joe Gregorio)'</td></tr></table><p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#7799ee">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Author</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#7799ee"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%">jcgregorio@google.com&nbsp;(Joe&nbsp;Gregorio)</td></tr></table>
+</body></html>
\ No newline at end of file
diff --git a/docs/apiclient.errors.html b/docs/apiclient.errors.html
new file mode 100644
index 0000000..af69a51
--- /dev/null
+++ b/docs/apiclient.errors.html
@@ -0,0 +1,234 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><title>Python: module apiclient.errors</title>
+</head><body bgcolor="#f0f0f8">
+
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
+<tr bgcolor="#7799ee">
+<td valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong><a href="apiclient.html"><font color="#ffffff">apiclient</font></a>.errors</strong></big></big></font></td
+><td align=right valign=bottom
+><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/usr/local/google/home/jcgregorio/projects/apiary/apiclient/errors.py">/usr/local/google/home/jcgregorio/projects/apiary/apiclient/errors.py</a></font></td></tr></table>
+    <p><tt>Errors&nbsp;for&nbsp;the&nbsp;library.<br>
+&nbsp;<br>
+All&nbsp;exceptions&nbsp;defined&nbsp;by&nbsp;the&nbsp;library<br>
+should&nbsp;be&nbsp;defined&nbsp;in&nbsp;this&nbsp;file.</tt></p>
+<p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#ee77aa">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Classes</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#ee77aa"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%"><dl>
+<dt><font face="helvetica, arial"><a href="exceptions.html#Exception">exceptions.Exception</a>(<a href="exceptions.html#BaseException">exceptions.BaseException</a>)
+</font></dt><dd>
+<dl>
+<dt><font face="helvetica, arial"><a href="apiclient.errors.html#Error">Error</a>
+</font></dt><dd>
+<dl>
+<dt><font face="helvetica, arial"><a href="apiclient.errors.html#HttpError">HttpError</a>
+</font></dt><dt><font face="helvetica, arial"><a href="apiclient.errors.html#UnknownLinkType">UnknownLinkType</a>
+</font></dt></dl>
+</dd>
+</dl>
+</dd>
+</dl>
+ <p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#ffc8d8">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#000000" face="helvetica, arial"><a name="Error">class <strong>Error</strong></a>(<a href="exceptions.html#Exception">exceptions.Exception</a>)</font></td></tr>
+    
+<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
+<td colspan=2><tt>Base&nbsp;error&nbsp;for&nbsp;this&nbsp;module.<br>&nbsp;</tt></td></tr>
+<tr><td>&nbsp;</td>
+<td width="100%"><dl><dt>Method resolution order:</dt>
+<dd><a href="apiclient.errors.html#Error">Error</a></dd>
+<dd><a href="exceptions.html#Exception">exceptions.Exception</a></dd>
+<dd><a href="exceptions.html#BaseException">exceptions.BaseException</a></dd>
+<dd><a href="__builtin__.html#object">__builtin__.object</a></dd>
+</dl>
+<hr>
+Data descriptors defined here:<br>
+<dl><dt><strong>__weakref__</strong></dt>
+<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
+</dl>
+<hr>
+Methods inherited from <a href="exceptions.html#Exception">exceptions.Exception</a>:<br>
+<dl><dt><a name="Error-__init__"><strong>__init__</strong></a>(...)</dt><dd><tt>x.<a href="#Error-__init__">__init__</a>(...)&nbsp;initializes&nbsp;x;&nbsp;see&nbsp;x.__class__.__doc__&nbsp;for&nbsp;signature</tt></dd></dl>
+
+<hr>
+Data and other attributes inherited from <a href="exceptions.html#Exception">exceptions.Exception</a>:<br>
+<dl><dt><strong>__new__</strong> = &lt;built-in method __new__ of type object&gt;<dd><tt>T.<a href="#Error-__new__">__new__</a>(S,&nbsp;...)&nbsp;-&gt;&nbsp;a&nbsp;new&nbsp;object&nbsp;with&nbsp;type&nbsp;S,&nbsp;a&nbsp;subtype&nbsp;of&nbsp;T</tt></dl>
+
+<hr>
+Methods inherited from <a href="exceptions.html#BaseException">exceptions.BaseException</a>:<br>
+<dl><dt><a name="Error-__delattr__"><strong>__delattr__</strong></a>(...)</dt><dd><tt>x.<a href="#Error-__delattr__">__delattr__</a>('name')&nbsp;&lt;==&gt;&nbsp;del&nbsp;x.name</tt></dd></dl>
+
+<dl><dt><a name="Error-__getattribute__"><strong>__getattribute__</strong></a>(...)</dt><dd><tt>x.<a href="#Error-__getattribute__">__getattribute__</a>('name')&nbsp;&lt;==&gt;&nbsp;x.name</tt></dd></dl>
+
+<dl><dt><a name="Error-__getitem__"><strong>__getitem__</strong></a>(...)</dt><dd><tt>x.<a href="#Error-__getitem__">__getitem__</a>(y)&nbsp;&lt;==&gt;&nbsp;x[y]</tt></dd></dl>
+
+<dl><dt><a name="Error-__getslice__"><strong>__getslice__</strong></a>(...)</dt><dd><tt>x.<a href="#Error-__getslice__">__getslice__</a>(i,&nbsp;j)&nbsp;&lt;==&gt;&nbsp;x[i:j]<br>
+&nbsp;<br>
+Use&nbsp;of&nbsp;negative&nbsp;indices&nbsp;is&nbsp;not&nbsp;supported.</tt></dd></dl>
+
+<dl><dt><a name="Error-__reduce__"><strong>__reduce__</strong></a>(...)</dt></dl>
+
+<dl><dt><a name="Error-__repr__"><strong>__repr__</strong></a>(...)</dt><dd><tt>x.<a href="#Error-__repr__">__repr__</a>()&nbsp;&lt;==&gt;&nbsp;repr(x)</tt></dd></dl>
+
+<dl><dt><a name="Error-__setattr__"><strong>__setattr__</strong></a>(...)</dt><dd><tt>x.<a href="#Error-__setattr__">__setattr__</a>('name',&nbsp;value)&nbsp;&lt;==&gt;&nbsp;x.name&nbsp;=&nbsp;value</tt></dd></dl>
+
+<dl><dt><a name="Error-__setstate__"><strong>__setstate__</strong></a>(...)</dt></dl>
+
+<dl><dt><a name="Error-__str__"><strong>__str__</strong></a>(...)</dt><dd><tt>x.<a href="#Error-__str__">__str__</a>()&nbsp;&lt;==&gt;&nbsp;str(x)</tt></dd></dl>
+
+<dl><dt><a name="Error-__unicode__"><strong>__unicode__</strong></a>(...)</dt></dl>
+
+<hr>
+Data descriptors inherited from <a href="exceptions.html#BaseException">exceptions.BaseException</a>:<br>
+<dl><dt><strong>__dict__</strong></dt>
+</dl>
+<dl><dt><strong>args</strong></dt>
+</dl>
+<dl><dt><strong>message</strong></dt>
+</dl>
+</td></tr></table> <p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#ffc8d8">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#000000" face="helvetica, arial"><a name="HttpError">class <strong>HttpError</strong></a>(<a href="apiclient.errors.html#Error">Error</a>)</font></td></tr>
+    
+<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
+<td colspan=2><tt>HTTP&nbsp;data&nbsp;was&nbsp;invalid&nbsp;or&nbsp;unexpected.<br>&nbsp;</tt></td></tr>
+<tr><td>&nbsp;</td>
+<td width="100%"><dl><dt>Method resolution order:</dt>
+<dd><a href="apiclient.errors.html#HttpError">HttpError</a></dd>
+<dd><a href="apiclient.errors.html#Error">Error</a></dd>
+<dd><a href="exceptions.html#Exception">exceptions.Exception</a></dd>
+<dd><a href="exceptions.html#BaseException">exceptions.BaseException</a></dd>
+<dd><a href="__builtin__.html#object">__builtin__.object</a></dd>
+</dl>
+<hr>
+Methods defined here:<br>
+<dl><dt><a name="HttpError-__init__"><strong>__init__</strong></a>(self, resp, detail)</dt></dl>
+
+<dl><dt><a name="HttpError-__str__"><strong>__str__</strong></a>(self)</dt></dl>
+
+<hr>
+Data descriptors inherited from <a href="apiclient.errors.html#Error">Error</a>:<br>
+<dl><dt><strong>__weakref__</strong></dt>
+<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
+</dl>
+<hr>
+Data and other attributes inherited from <a href="exceptions.html#Exception">exceptions.Exception</a>:<br>
+<dl><dt><strong>__new__</strong> = &lt;built-in method __new__ of type object&gt;<dd><tt>T.<a href="#HttpError-__new__">__new__</a>(S,&nbsp;...)&nbsp;-&gt;&nbsp;a&nbsp;new&nbsp;object&nbsp;with&nbsp;type&nbsp;S,&nbsp;a&nbsp;subtype&nbsp;of&nbsp;T</tt></dl>
+
+<hr>
+Methods inherited from <a href="exceptions.html#BaseException">exceptions.BaseException</a>:<br>
+<dl><dt><a name="HttpError-__delattr__"><strong>__delattr__</strong></a>(...)</dt><dd><tt>x.<a href="#HttpError-__delattr__">__delattr__</a>('name')&nbsp;&lt;==&gt;&nbsp;del&nbsp;x.name</tt></dd></dl>
+
+<dl><dt><a name="HttpError-__getattribute__"><strong>__getattribute__</strong></a>(...)</dt><dd><tt>x.<a href="#HttpError-__getattribute__">__getattribute__</a>('name')&nbsp;&lt;==&gt;&nbsp;x.name</tt></dd></dl>
+
+<dl><dt><a name="HttpError-__getitem__"><strong>__getitem__</strong></a>(...)</dt><dd><tt>x.<a href="#HttpError-__getitem__">__getitem__</a>(y)&nbsp;&lt;==&gt;&nbsp;x[y]</tt></dd></dl>
+
+<dl><dt><a name="HttpError-__getslice__"><strong>__getslice__</strong></a>(...)</dt><dd><tt>x.<a href="#HttpError-__getslice__">__getslice__</a>(i,&nbsp;j)&nbsp;&lt;==&gt;&nbsp;x[i:j]<br>
+&nbsp;<br>
+Use&nbsp;of&nbsp;negative&nbsp;indices&nbsp;is&nbsp;not&nbsp;supported.</tt></dd></dl>
+
+<dl><dt><a name="HttpError-__reduce__"><strong>__reduce__</strong></a>(...)</dt></dl>
+
+<dl><dt><a name="HttpError-__repr__"><strong>__repr__</strong></a>(...)</dt><dd><tt>x.<a href="#HttpError-__repr__">__repr__</a>()&nbsp;&lt;==&gt;&nbsp;repr(x)</tt></dd></dl>
+
+<dl><dt><a name="HttpError-__setattr__"><strong>__setattr__</strong></a>(...)</dt><dd><tt>x.<a href="#HttpError-__setattr__">__setattr__</a>('name',&nbsp;value)&nbsp;&lt;==&gt;&nbsp;x.name&nbsp;=&nbsp;value</tt></dd></dl>
+
+<dl><dt><a name="HttpError-__setstate__"><strong>__setstate__</strong></a>(...)</dt></dl>
+
+<dl><dt><a name="HttpError-__unicode__"><strong>__unicode__</strong></a>(...)</dt></dl>
+
+<hr>
+Data descriptors inherited from <a href="exceptions.html#BaseException">exceptions.BaseException</a>:<br>
+<dl><dt><strong>__dict__</strong></dt>
+</dl>
+<dl><dt><strong>args</strong></dt>
+</dl>
+<dl><dt><strong>message</strong></dt>
+</dl>
+</td></tr></table> <p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#ffc8d8">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#000000" face="helvetica, arial"><a name="UnknownLinkType">class <strong>UnknownLinkType</strong></a>(<a href="apiclient.errors.html#Error">Error</a>)</font></td></tr>
+    
+<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
+<td colspan=2><tt>Link&nbsp;type&nbsp;unknown&nbsp;or&nbsp;unexpected.<br>&nbsp;</tt></td></tr>
+<tr><td>&nbsp;</td>
+<td width="100%"><dl><dt>Method resolution order:</dt>
+<dd><a href="apiclient.errors.html#UnknownLinkType">UnknownLinkType</a></dd>
+<dd><a href="apiclient.errors.html#Error">Error</a></dd>
+<dd><a href="exceptions.html#Exception">exceptions.Exception</a></dd>
+<dd><a href="exceptions.html#BaseException">exceptions.BaseException</a></dd>
+<dd><a href="__builtin__.html#object">__builtin__.object</a></dd>
+</dl>
+<hr>
+Data descriptors inherited from <a href="apiclient.errors.html#Error">Error</a>:<br>
+<dl><dt><strong>__weakref__</strong></dt>
+<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
+</dl>
+<hr>
+Methods inherited from <a href="exceptions.html#Exception">exceptions.Exception</a>:<br>
+<dl><dt><a name="UnknownLinkType-__init__"><strong>__init__</strong></a>(...)</dt><dd><tt>x.<a href="#UnknownLinkType-__init__">__init__</a>(...)&nbsp;initializes&nbsp;x;&nbsp;see&nbsp;x.__class__.__doc__&nbsp;for&nbsp;signature</tt></dd></dl>
+
+<hr>
+Data and other attributes inherited from <a href="exceptions.html#Exception">exceptions.Exception</a>:<br>
+<dl><dt><strong>__new__</strong> = &lt;built-in method __new__ of type object&gt;<dd><tt>T.<a href="#UnknownLinkType-__new__">__new__</a>(S,&nbsp;...)&nbsp;-&gt;&nbsp;a&nbsp;new&nbsp;object&nbsp;with&nbsp;type&nbsp;S,&nbsp;a&nbsp;subtype&nbsp;of&nbsp;T</tt></dl>
+
+<hr>
+Methods inherited from <a href="exceptions.html#BaseException">exceptions.BaseException</a>:<br>
+<dl><dt><a name="UnknownLinkType-__delattr__"><strong>__delattr__</strong></a>(...)</dt><dd><tt>x.<a href="#UnknownLinkType-__delattr__">__delattr__</a>('name')&nbsp;&lt;==&gt;&nbsp;del&nbsp;x.name</tt></dd></dl>
+
+<dl><dt><a name="UnknownLinkType-__getattribute__"><strong>__getattribute__</strong></a>(...)</dt><dd><tt>x.<a href="#UnknownLinkType-__getattribute__">__getattribute__</a>('name')&nbsp;&lt;==&gt;&nbsp;x.name</tt></dd></dl>
+
+<dl><dt><a name="UnknownLinkType-__getitem__"><strong>__getitem__</strong></a>(...)</dt><dd><tt>x.<a href="#UnknownLinkType-__getitem__">__getitem__</a>(y)&nbsp;&lt;==&gt;&nbsp;x[y]</tt></dd></dl>
+
+<dl><dt><a name="UnknownLinkType-__getslice__"><strong>__getslice__</strong></a>(...)</dt><dd><tt>x.<a href="#UnknownLinkType-__getslice__">__getslice__</a>(i,&nbsp;j)&nbsp;&lt;==&gt;&nbsp;x[i:j]<br>
+&nbsp;<br>
+Use&nbsp;of&nbsp;negative&nbsp;indices&nbsp;is&nbsp;not&nbsp;supported.</tt></dd></dl>
+
+<dl><dt><a name="UnknownLinkType-__reduce__"><strong>__reduce__</strong></a>(...)</dt></dl>
+
+<dl><dt><a name="UnknownLinkType-__repr__"><strong>__repr__</strong></a>(...)</dt><dd><tt>x.<a href="#UnknownLinkType-__repr__">__repr__</a>()&nbsp;&lt;==&gt;&nbsp;repr(x)</tt></dd></dl>
+
+<dl><dt><a name="UnknownLinkType-__setattr__"><strong>__setattr__</strong></a>(...)</dt><dd><tt>x.<a href="#UnknownLinkType-__setattr__">__setattr__</a>('name',&nbsp;value)&nbsp;&lt;==&gt;&nbsp;x.name&nbsp;=&nbsp;value</tt></dd></dl>
+
+<dl><dt><a name="UnknownLinkType-__setstate__"><strong>__setstate__</strong></a>(...)</dt></dl>
+
+<dl><dt><a name="UnknownLinkType-__str__"><strong>__str__</strong></a>(...)</dt><dd><tt>x.<a href="#UnknownLinkType-__str__">__str__</a>()&nbsp;&lt;==&gt;&nbsp;str(x)</tt></dd></dl>
+
+<dl><dt><a name="UnknownLinkType-__unicode__"><strong>__unicode__</strong></a>(...)</dt></dl>
+
+<hr>
+Data descriptors inherited from <a href="exceptions.html#BaseException">exceptions.BaseException</a>:<br>
+<dl><dt><strong>__dict__</strong></dt>
+</dl>
+<dl><dt><strong>args</strong></dt>
+</dl>
+<dl><dt><strong>message</strong></dt>
+</dl>
+</td></tr></table></td></tr></table><p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#55aa55">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#55aa55"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%"><strong>__author__</strong> = 'jcgregorio@google.com (Joe Gregorio)'</td></tr></table><p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#7799ee">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Author</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#7799ee"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%">jcgregorio@google.com&nbsp;(Joe&nbsp;Gregorio)</td></tr></table>
+</body></html>
\ No newline at end of file
diff --git a/docs/apiclient.ext.appengine.html b/docs/apiclient.ext.appengine.html
new file mode 100644
index 0000000..90cd6ca
--- /dev/null
+++ b/docs/apiclient.ext.appengine.html
@@ -0,0 +1,224 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><title>Python: module apiclient.ext.appengine</title>
+</head><body bgcolor="#f0f0f8">
+
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
+<tr bgcolor="#7799ee">
+<td valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong><a href="apiclient.html"><font color="#ffffff">apiclient</font></a>.<a href="apiclient.ext.html"><font color="#ffffff">ext</font></a>.appengine</strong></big></big></font></td
+><td align=right valign=bottom
+><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/usr/local/google/home/jcgregorio/projects/apiary/apiclient/ext/appengine.py">/usr/local/google/home/jcgregorio/projects/apiary/apiclient/ext/appengine.py</a></font></td></tr></table>
+    <p><tt>Utilities&nbsp;for&nbsp;Google&nbsp;App&nbsp;Engine<br>
+&nbsp;<br>
+Utilities&nbsp;for&nbsp;making&nbsp;it&nbsp;easier&nbsp;to&nbsp;use&nbsp;the<br>
+Google&nbsp;API&nbsp;Client&nbsp;for&nbsp;Python&nbsp;on&nbsp;Google&nbsp;App&nbsp;Engine.</tt></p>
+<p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#aa55cc">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Modules</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#aa55cc"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="google.appengine.ext.db.html">google.appengine.ext.db</a><br>
+</td><td width="25%" valign=top><a href="pickle.html">pickle</a><br>
+</td><td width="25%" valign=top></td><td width="25%" valign=top></td></tr></table></td></tr></table><p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#ee77aa">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Classes</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#ee77aa"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%"><dl>
+<dt><font face="helvetica, arial"><a href="google.appengine.ext.db.html#Property">google.appengine.ext.db.Property</a>(<a href="__builtin__.html#object">__builtin__.object</a>)
+</font></dt><dd>
+<dl>
+<dt><font face="helvetica, arial"><a href="apiclient.ext.appengine.html#FlowThreeLeggedProperty">FlowThreeLeggedProperty</a>
+</font></dt><dt><font face="helvetica, arial"><a href="apiclient.ext.appengine.html#OAuthCredentialsProperty">OAuthCredentialsProperty</a>
+</font></dt></dl>
+</dd>
+</dl>
+ <p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#ffc8d8">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#000000" face="helvetica, arial"><a name="FlowThreeLeggedProperty">class <strong>FlowThreeLeggedProperty</strong></a>(<a href="google.appengine.ext.db.html#Property">google.appengine.ext.db.Property</a>)</font></td></tr>
+    
+<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
+<td colspan=2><tt>Utility&nbsp;property&nbsp;that&nbsp;allows&nbsp;easy<br>
+storage&nbsp;and&nbsp;retreival&nbsp;of&nbsp;an<br>
+apiclient.oauth.FlowThreeLegged<br>&nbsp;</tt></td></tr>
+<tr><td>&nbsp;</td>
+<td width="100%"><dl><dt>Method resolution order:</dt>
+<dd><a href="apiclient.ext.appengine.html#FlowThreeLeggedProperty">FlowThreeLeggedProperty</a></dd>
+<dd><a href="google.appengine.ext.db.html#Property">google.appengine.ext.db.Property</a></dd>
+<dd><a href="__builtin__.html#object">__builtin__.object</a></dd>
+</dl>
+<hr>
+Methods defined here:<br>
+<dl><dt><a name="FlowThreeLeggedProperty-empty"><strong>empty</strong></a>(self, value)</dt></dl>
+
+<dl><dt><a name="FlowThreeLeggedProperty-get_value_for_datastore"><strong>get_value_for_datastore</strong></a>(self, model_instance)</dt><dd><tt>#&nbsp;For&nbsp;writing&nbsp;to&nbsp;datastore.</tt></dd></dl>
+
+<dl><dt><a name="FlowThreeLeggedProperty-make_value_from_datastore"><strong>make_value_from_datastore</strong></a>(self, value)</dt><dd><tt>#&nbsp;For&nbsp;reading&nbsp;from&nbsp;datastore.</tt></dd></dl>
+
+<dl><dt><a name="FlowThreeLeggedProperty-validate"><strong>validate</strong></a>(self, value)</dt></dl>
+
+<hr>
+Data and other attributes defined here:<br>
+<dl><dt><strong>data_type</strong> = &lt;class 'apiclient.oauth.FlowThreeLegged'&gt;<dd><tt>Does&nbsp;the&nbsp;Three&nbsp;Legged&nbsp;Dance&nbsp;for&nbsp;OAuth&nbsp;1.0a.</tt></dl>
+
+<hr>
+Methods inherited from <a href="google.appengine.ext.db.html#Property">google.appengine.ext.db.Property</a>:<br>
+<dl><dt><a name="FlowThreeLeggedProperty-__get__"><strong>__get__</strong></a>(self, model_instance, model_class)</dt><dd><tt>Returns&nbsp;the&nbsp;value&nbsp;for&nbsp;this&nbsp;property&nbsp;on&nbsp;the&nbsp;given&nbsp;model&nbsp;instance.<br>
+&nbsp;<br>
+See&nbsp;<a href="http://docs.python.org/ref/descriptors.html">http://docs.python.org/ref/descriptors.html</a>&nbsp;for&nbsp;a&nbsp;description&nbsp;of<br>
+the&nbsp;arguments&nbsp;to&nbsp;this&nbsp;class&nbsp;and&nbsp;what&nbsp;they&nbsp;mean.</tt></dd></dl>
+
+<dl><dt><a name="FlowThreeLeggedProperty-__init__"><strong>__init__</strong></a>(self, verbose_name<font color="#909090">=None</font>, name<font color="#909090">=None</font>, default<font color="#909090">=None</font>, required<font color="#909090">=False</font>, validator<font color="#909090">=None</font>, choices<font color="#909090">=None</font>, indexed<font color="#909090">=True</font>)</dt><dd><tt>Initializes&nbsp;this&nbsp;<a href="google.appengine.ext.db.html#Property">Property</a>&nbsp;with&nbsp;the&nbsp;given&nbsp;options.<br>
+&nbsp;<br>
+Args:<br>
+&nbsp;&nbsp;verbose_name:&nbsp;User&nbsp;friendly&nbsp;name&nbsp;of&nbsp;property.<br>
+&nbsp;&nbsp;name:&nbsp;Storage&nbsp;name&nbsp;for&nbsp;property.&nbsp;&nbsp;By&nbsp;default,&nbsp;uses&nbsp;attribute&nbsp;name<br>
+&nbsp;&nbsp;&nbsp;&nbsp;as&nbsp;it&nbsp;is&nbsp;assigned&nbsp;in&nbsp;the&nbsp;Model&nbsp;sub-class.<br>
+&nbsp;&nbsp;default:&nbsp;Default&nbsp;value&nbsp;for&nbsp;property&nbsp;if&nbsp;none&nbsp;is&nbsp;assigned.<br>
+&nbsp;&nbsp;required:&nbsp;Whether&nbsp;property&nbsp;is&nbsp;required.<br>
+&nbsp;&nbsp;validator:&nbsp;User&nbsp;provided&nbsp;method&nbsp;used&nbsp;for&nbsp;validation.<br>
+&nbsp;&nbsp;choices:&nbsp;User&nbsp;provided&nbsp;set&nbsp;of&nbsp;valid&nbsp;property&nbsp;values.<br>
+&nbsp;&nbsp;indexed:&nbsp;Whether&nbsp;property&nbsp;is&nbsp;indexed.</tt></dd></dl>
+
+<dl><dt><a name="FlowThreeLeggedProperty-__property_config__"><strong>__property_config__</strong></a>(self, model_class, property_name)</dt><dd><tt>Configure&nbsp;property,&nbsp;connecting&nbsp;it&nbsp;to&nbsp;its&nbsp;model.<br>
+&nbsp;<br>
+Configure&nbsp;the&nbsp;property&nbsp;so&nbsp;that&nbsp;it&nbsp;knows&nbsp;its&nbsp;property&nbsp;name&nbsp;and&nbsp;what&nbsp;class<br>
+it&nbsp;belongs&nbsp;to.<br>
+&nbsp;<br>
+Args:<br>
+&nbsp;&nbsp;model_class:&nbsp;Model&nbsp;class&nbsp;which&nbsp;<a href="google.appengine.ext.db.html#Property">Property</a>&nbsp;will&nbsp;belong&nbsp;to.<br>
+&nbsp;&nbsp;property_name:&nbsp;Name&nbsp;of&nbsp;property&nbsp;within&nbsp;Model&nbsp;instance&nbsp;to&nbsp;store&nbsp;property<br>
+&nbsp;&nbsp;&nbsp;&nbsp;values&nbsp;in.&nbsp;&nbsp;By&nbsp;default&nbsp;this&nbsp;will&nbsp;be&nbsp;the&nbsp;property&nbsp;name&nbsp;preceded&nbsp;by<br>
+&nbsp;&nbsp;&nbsp;&nbsp;an&nbsp;underscore,&nbsp;but&nbsp;may&nbsp;change&nbsp;for&nbsp;different&nbsp;subclasses.</tt></dd></dl>
+
+<dl><dt><a name="FlowThreeLeggedProperty-__set__"><strong>__set__</strong></a>(self, model_instance, value)</dt><dd><tt>Sets&nbsp;the&nbsp;value&nbsp;for&nbsp;this&nbsp;property&nbsp;on&nbsp;the&nbsp;given&nbsp;model&nbsp;instance.<br>
+&nbsp;<br>
+See&nbsp;<a href="http://docs.python.org/ref/descriptors.html">http://docs.python.org/ref/descriptors.html</a>&nbsp;for&nbsp;a&nbsp;description&nbsp;of<br>
+the&nbsp;arguments&nbsp;to&nbsp;this&nbsp;class&nbsp;and&nbsp;what&nbsp;they&nbsp;mean.</tt></dd></dl>
+
+<dl><dt><a name="FlowThreeLeggedProperty-datastore_type"><strong>datastore_type</strong></a>(self)</dt><dd><tt>Deprecated&nbsp;backwards-compatible&nbsp;accessor&nbsp;method&nbsp;for&nbsp;self.<strong>data_type</strong>.</tt></dd></dl>
+
+<dl><dt><a name="FlowThreeLeggedProperty-default_value"><strong>default_value</strong></a>(self)</dt><dd><tt>Default&nbsp;value&nbsp;for&nbsp;unassigned&nbsp;values.<br>
+&nbsp;<br>
+Returns:<br>
+&nbsp;&nbsp;Default&nbsp;value&nbsp;as&nbsp;provided&nbsp;by&nbsp;<a href="#FlowThreeLeggedProperty-__init__">__init__</a>(default).</tt></dd></dl>
+
+<hr>
+Data descriptors inherited from <a href="google.appengine.ext.db.html#Property">google.appengine.ext.db.Property</a>:<br>
+<dl><dt><strong>__dict__</strong></dt>
+<dd><tt>dictionary&nbsp;for&nbsp;instance&nbsp;variables&nbsp;(if&nbsp;defined)</tt></dd>
+</dl>
+<dl><dt><strong>__weakref__</strong></dt>
+<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
+</dl>
+<hr>
+Data and other attributes inherited from <a href="google.appengine.ext.db.html#Property">google.appengine.ext.db.Property</a>:<br>
+<dl><dt><strong>creation_counter</strong> = 0</dl>
+
+</td></tr></table> <p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#ffc8d8">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#000000" face="helvetica, arial"><a name="OAuthCredentialsProperty">class <strong>OAuthCredentialsProperty</strong></a>(<a href="google.appengine.ext.db.html#Property">google.appengine.ext.db.Property</a>)</font></td></tr>
+    
+<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
+<td colspan=2><tt>Utility&nbsp;property&nbsp;that&nbsp;allows&nbsp;easy<br>
+storage&nbsp;and&nbsp;retrieval&nbsp;of<br>
+apiclient.oath.OAuthCredentials<br>&nbsp;</tt></td></tr>
+<tr><td>&nbsp;</td>
+<td width="100%"><dl><dt>Method resolution order:</dt>
+<dd><a href="apiclient.ext.appengine.html#OAuthCredentialsProperty">OAuthCredentialsProperty</a></dd>
+<dd><a href="google.appengine.ext.db.html#Property">google.appengine.ext.db.Property</a></dd>
+<dd><a href="__builtin__.html#object">__builtin__.object</a></dd>
+</dl>
+<hr>
+Methods defined here:<br>
+<dl><dt><a name="OAuthCredentialsProperty-empty"><strong>empty</strong></a>(self, value)</dt></dl>
+
+<dl><dt><a name="OAuthCredentialsProperty-get_value_for_datastore"><strong>get_value_for_datastore</strong></a>(self, model_instance)</dt><dd><tt>#&nbsp;For&nbsp;writing&nbsp;to&nbsp;datastore.</tt></dd></dl>
+
+<dl><dt><a name="OAuthCredentialsProperty-make_value_from_datastore"><strong>make_value_from_datastore</strong></a>(self, value)</dt><dd><tt>#&nbsp;For&nbsp;reading&nbsp;from&nbsp;datastore.</tt></dd></dl>
+
+<dl><dt><a name="OAuthCredentialsProperty-validate"><strong>validate</strong></a>(self, value)</dt></dl>
+
+<hr>
+Data and other attributes defined here:<br>
+<dl><dt><strong>data_type</strong> = &lt;class 'apiclient.oauth.OAuthCredentials'&gt;<dd><tt>Credentials&nbsp;object&nbsp;for&nbsp;OAuth&nbsp;1.0a</tt></dl>
+
+<hr>
+Methods inherited from <a href="google.appengine.ext.db.html#Property">google.appengine.ext.db.Property</a>:<br>
+<dl><dt><a name="OAuthCredentialsProperty-__get__"><strong>__get__</strong></a>(self, model_instance, model_class)</dt><dd><tt>Returns&nbsp;the&nbsp;value&nbsp;for&nbsp;this&nbsp;property&nbsp;on&nbsp;the&nbsp;given&nbsp;model&nbsp;instance.<br>
+&nbsp;<br>
+See&nbsp;<a href="http://docs.python.org/ref/descriptors.html">http://docs.python.org/ref/descriptors.html</a>&nbsp;for&nbsp;a&nbsp;description&nbsp;of<br>
+the&nbsp;arguments&nbsp;to&nbsp;this&nbsp;class&nbsp;and&nbsp;what&nbsp;they&nbsp;mean.</tt></dd></dl>
+
+<dl><dt><a name="OAuthCredentialsProperty-__init__"><strong>__init__</strong></a>(self, verbose_name<font color="#909090">=None</font>, name<font color="#909090">=None</font>, default<font color="#909090">=None</font>, required<font color="#909090">=False</font>, validator<font color="#909090">=None</font>, choices<font color="#909090">=None</font>, indexed<font color="#909090">=True</font>)</dt><dd><tt>Initializes&nbsp;this&nbsp;<a href="google.appengine.ext.db.html#Property">Property</a>&nbsp;with&nbsp;the&nbsp;given&nbsp;options.<br>
+&nbsp;<br>
+Args:<br>
+&nbsp;&nbsp;verbose_name:&nbsp;User&nbsp;friendly&nbsp;name&nbsp;of&nbsp;property.<br>
+&nbsp;&nbsp;name:&nbsp;Storage&nbsp;name&nbsp;for&nbsp;property.&nbsp;&nbsp;By&nbsp;default,&nbsp;uses&nbsp;attribute&nbsp;name<br>
+&nbsp;&nbsp;&nbsp;&nbsp;as&nbsp;it&nbsp;is&nbsp;assigned&nbsp;in&nbsp;the&nbsp;Model&nbsp;sub-class.<br>
+&nbsp;&nbsp;default:&nbsp;Default&nbsp;value&nbsp;for&nbsp;property&nbsp;if&nbsp;none&nbsp;is&nbsp;assigned.<br>
+&nbsp;&nbsp;required:&nbsp;Whether&nbsp;property&nbsp;is&nbsp;required.<br>
+&nbsp;&nbsp;validator:&nbsp;User&nbsp;provided&nbsp;method&nbsp;used&nbsp;for&nbsp;validation.<br>
+&nbsp;&nbsp;choices:&nbsp;User&nbsp;provided&nbsp;set&nbsp;of&nbsp;valid&nbsp;property&nbsp;values.<br>
+&nbsp;&nbsp;indexed:&nbsp;Whether&nbsp;property&nbsp;is&nbsp;indexed.</tt></dd></dl>
+
+<dl><dt><a name="OAuthCredentialsProperty-__property_config__"><strong>__property_config__</strong></a>(self, model_class, property_name)</dt><dd><tt>Configure&nbsp;property,&nbsp;connecting&nbsp;it&nbsp;to&nbsp;its&nbsp;model.<br>
+&nbsp;<br>
+Configure&nbsp;the&nbsp;property&nbsp;so&nbsp;that&nbsp;it&nbsp;knows&nbsp;its&nbsp;property&nbsp;name&nbsp;and&nbsp;what&nbsp;class<br>
+it&nbsp;belongs&nbsp;to.<br>
+&nbsp;<br>
+Args:<br>
+&nbsp;&nbsp;model_class:&nbsp;Model&nbsp;class&nbsp;which&nbsp;<a href="google.appengine.ext.db.html#Property">Property</a>&nbsp;will&nbsp;belong&nbsp;to.<br>
+&nbsp;&nbsp;property_name:&nbsp;Name&nbsp;of&nbsp;property&nbsp;within&nbsp;Model&nbsp;instance&nbsp;to&nbsp;store&nbsp;property<br>
+&nbsp;&nbsp;&nbsp;&nbsp;values&nbsp;in.&nbsp;&nbsp;By&nbsp;default&nbsp;this&nbsp;will&nbsp;be&nbsp;the&nbsp;property&nbsp;name&nbsp;preceded&nbsp;by<br>
+&nbsp;&nbsp;&nbsp;&nbsp;an&nbsp;underscore,&nbsp;but&nbsp;may&nbsp;change&nbsp;for&nbsp;different&nbsp;subclasses.</tt></dd></dl>
+
+<dl><dt><a name="OAuthCredentialsProperty-__set__"><strong>__set__</strong></a>(self, model_instance, value)</dt><dd><tt>Sets&nbsp;the&nbsp;value&nbsp;for&nbsp;this&nbsp;property&nbsp;on&nbsp;the&nbsp;given&nbsp;model&nbsp;instance.<br>
+&nbsp;<br>
+See&nbsp;<a href="http://docs.python.org/ref/descriptors.html">http://docs.python.org/ref/descriptors.html</a>&nbsp;for&nbsp;a&nbsp;description&nbsp;of<br>
+the&nbsp;arguments&nbsp;to&nbsp;this&nbsp;class&nbsp;and&nbsp;what&nbsp;they&nbsp;mean.</tt></dd></dl>
+
+<dl><dt><a name="OAuthCredentialsProperty-datastore_type"><strong>datastore_type</strong></a>(self)</dt><dd><tt>Deprecated&nbsp;backwards-compatible&nbsp;accessor&nbsp;method&nbsp;for&nbsp;self.<strong>data_type</strong>.</tt></dd></dl>
+
+<dl><dt><a name="OAuthCredentialsProperty-default_value"><strong>default_value</strong></a>(self)</dt><dd><tt>Default&nbsp;value&nbsp;for&nbsp;unassigned&nbsp;values.<br>
+&nbsp;<br>
+Returns:<br>
+&nbsp;&nbsp;Default&nbsp;value&nbsp;as&nbsp;provided&nbsp;by&nbsp;<a href="#OAuthCredentialsProperty-__init__">__init__</a>(default).</tt></dd></dl>
+
+<hr>
+Data descriptors inherited from <a href="google.appengine.ext.db.html#Property">google.appengine.ext.db.Property</a>:<br>
+<dl><dt><strong>__dict__</strong></dt>
+<dd><tt>dictionary&nbsp;for&nbsp;instance&nbsp;variables&nbsp;(if&nbsp;defined)</tt></dd>
+</dl>
+<dl><dt><strong>__weakref__</strong></dt>
+<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
+</dl>
+<hr>
+Data and other attributes inherited from <a href="google.appengine.ext.db.html#Property">google.appengine.ext.db.Property</a>:<br>
+<dl><dt><strong>creation_counter</strong> = 0</dl>
+
+</td></tr></table></td></tr></table><p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#55aa55">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#55aa55"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%"><strong>__author__</strong> = 'jcgregorio@google.com (Joe Gregorio)'</td></tr></table><p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#7799ee">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Author</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#7799ee"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%">jcgregorio@google.com&nbsp;(Joe&nbsp;Gregorio)</td></tr></table>
+</body></html>
\ No newline at end of file
diff --git a/docs/apiclient.ext.django_orm.html b/docs/apiclient.ext.django_orm.html
new file mode 100644
index 0000000..7832fcf
--- /dev/null
+++ b/docs/apiclient.ext.django_orm.html
@@ -0,0 +1,234 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><title>Python: module apiclient.ext.django_orm</title>
+</head><body bgcolor="#f0f0f8">
+
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
+<tr bgcolor="#7799ee">
+<td valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong><a href="apiclient.html"><font color="#ffffff">apiclient</font></a>.<a href="apiclient.ext.html"><font color="#ffffff">ext</font></a>.django_orm</strong></big></big></font></td
+><td align=right valign=bottom
+><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/usr/local/google/home/jcgregorio/projects/apiary/apiclient/ext/django_orm.py">/usr/local/google/home/jcgregorio/projects/apiary/apiclient/ext/django_orm.py</a></font></td></tr></table>
+    <p></p>
+<p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#aa55cc">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Modules</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#aa55cc"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="django.db.models.html">django.db.models</a><br>
+</td><td width="25%" valign=top></td><td width="25%" valign=top></td><td width="25%" valign=top></td></tr></table></td></tr></table><p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#ee77aa">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Classes</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#ee77aa"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%"><dl>
+<dt><font face="helvetica, arial"><a href="django.db.models.fields.html#Field">django.db.models.fields.Field</a>(<a href="__builtin__.html#object">__builtin__.object</a>)
+</font></dt><dd>
+<dl>
+<dt><font face="helvetica, arial"><a href="apiclient.ext.django_orm.html#FlowThreeLeggedField">FlowThreeLeggedField</a>
+</font></dt><dt><font face="helvetica, arial"><a href="apiclient.ext.django_orm.html#OAuthCredentialsField">OAuthCredentialsField</a>
+</font></dt></dl>
+</dd>
+</dl>
+ <p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#ffc8d8">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#000000" face="helvetica, arial"><a name="FlowThreeLeggedField">class <strong>FlowThreeLeggedField</strong></a>(<a href="django.db.models.fields.html#Field">django.db.models.fields.Field</a>)</font></td></tr>
+    
+<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%"><dl><dt>Method resolution order:</dt>
+<dd><a href="apiclient.ext.django_orm.html#FlowThreeLeggedField">FlowThreeLeggedField</a></dd>
+<dd><a href="django.db.models.fields.html#Field">django.db.models.fields.Field</a></dd>
+<dd><a href="__builtin__.html#object">__builtin__.object</a></dd>
+</dl>
+<hr>
+Methods defined here:<br>
+<dl><dt><a name="FlowThreeLeggedField-contribute_to_class"><strong>contribute_to_class</strong></a>(self, cls, name)</dt></dl>
+
+<dl><dt><a name="FlowThreeLeggedField-db_type"><strong>db_type</strong></a>(self)</dt></dl>
+
+<dl><dt><a name="FlowThreeLeggedField-get_db_prep_value"><strong>get_db_prep_value</strong></a>(self, value)</dt></dl>
+
+<dl><dt><a name="FlowThreeLeggedField-to_python"><strong>to_python</strong></a>(self, value)</dt></dl>
+
+<hr>
+Data and other attributes defined here:<br>
+<dl><dt><strong>__metaclass__</strong> = &lt;class 'django.db.models.fields.subclassing.SubfieldBase'&gt;<dd><tt>A&nbsp;metaclass&nbsp;for&nbsp;custom&nbsp;<a href="django.db.models.fields.html#Field">Field</a>&nbsp;subclasses.&nbsp;This&nbsp;ensures&nbsp;the&nbsp;model's&nbsp;attribute<br>
+has&nbsp;the&nbsp;descriptor&nbsp;protocol&nbsp;attached&nbsp;to&nbsp;it.</tt></dl>
+
+<hr>
+Methods inherited from <a href="django.db.models.fields.html#Field">django.db.models.fields.Field</a>:<br>
+<dl><dt><a name="FlowThreeLeggedField-__cmp__"><strong>__cmp__</strong></a>(self, other)</dt></dl>
+
+<dl><dt><a name="FlowThreeLeggedField-__deepcopy__"><strong>__deepcopy__</strong></a>(self, memodict)</dt></dl>
+
+<dl><dt><a name="FlowThreeLeggedField-__init__"><strong>__init__</strong></a>(self, verbose_name<font color="#909090">=None</font>, name<font color="#909090">=None</font>, primary_key<font color="#909090">=False</font>, max_length<font color="#909090">=None</font>, unique<font color="#909090">=False</font>, blank<font color="#909090">=False</font>, null<font color="#909090">=False</font>, db_index<font color="#909090">=False</font>, rel<font color="#909090">=None</font>, default<font color="#909090">=&lt;class django.db.models.fields.NOT_PROVIDED&gt;</font>, editable<font color="#909090">=True</font>, serialize<font color="#909090">=True</font>, unique_for_date<font color="#909090">=None</font>, unique_for_month<font color="#909090">=None</font>, unique_for_year<font color="#909090">=None</font>, choices<font color="#909090">=None</font>, help_text<font color="#909090">=''</font>, db_column<font color="#909090">=None</font>, db_tablespace<font color="#909090">=None</font>, auto_created<font color="#909090">=False</font>)</dt></dl>
+
+<dl><dt><a name="FlowThreeLeggedField-bind"><strong>bind</strong></a>(self, fieldmapping, original, bound_field_class)</dt></dl>
+
+<dl><dt><a name="FlowThreeLeggedField-formfield"><strong>formfield</strong></a>(self, form_class<font color="#909090">=&lt;class 'django.forms.fields.CharField'&gt;</font>, **kwargs)</dt><dd><tt>Returns&nbsp;a&nbsp;django.forms.<a href="django.db.models.fields.html#Field">Field</a>&nbsp;instance&nbsp;for&nbsp;this&nbsp;database&nbsp;<a href="django.db.models.fields.html#Field">Field</a>.</tt></dd></dl>
+
+<dl><dt><a name="FlowThreeLeggedField-get_attname"><strong>get_attname</strong></a>(self)</dt></dl>
+
+<dl><dt><a name="FlowThreeLeggedField-get_attname_column"><strong>get_attname_column</strong></a>(self)</dt></dl>
+
+<dl><dt><a name="FlowThreeLeggedField-get_cache_name"><strong>get_cache_name</strong></a>(self)</dt></dl>
+
+<dl><dt><a name="FlowThreeLeggedField-get_choices"><strong>get_choices</strong></a>(self, include_blank<font color="#909090">=True</font>, blank_choice<font color="#909090">=[('', '---------')]</font>)</dt><dd><tt>Returns&nbsp;choices&nbsp;with&nbsp;a&nbsp;default&nbsp;blank&nbsp;choices&nbsp;included,&nbsp;for&nbsp;use<br>
+as&nbsp;SelectField&nbsp;choices&nbsp;for&nbsp;this&nbsp;field.</tt></dd></dl>
+
+<dl><dt><a name="FlowThreeLeggedField-get_choices_default"><strong>get_choices_default</strong></a>(self)</dt></dl>
+
+<dl><dt><a name="FlowThreeLeggedField-get_db_prep_lookup"><strong>get_db_prep_lookup</strong></a>(self, lookup_type, value)</dt><dd><tt>Returns&nbsp;field's&nbsp;value&nbsp;prepared&nbsp;for&nbsp;database&nbsp;lookup.</tt></dd></dl>
+
+<dl><dt><a name="FlowThreeLeggedField-get_db_prep_save"><strong>get_db_prep_save</strong></a>(self, value)</dt><dd><tt>Returns&nbsp;field's&nbsp;value&nbsp;prepared&nbsp;for&nbsp;saving&nbsp;into&nbsp;a&nbsp;database.</tt></dd></dl>
+
+<dl><dt><a name="FlowThreeLeggedField-get_default"><strong>get_default</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;default&nbsp;value&nbsp;for&nbsp;this&nbsp;field.</tt></dd></dl>
+
+<dl><dt><a name="FlowThreeLeggedField-get_flatchoices"><strong>get_flatchoices</strong></a>(self, include_blank<font color="#909090">=True</font>, blank_choice<font color="#909090">=[('', '---------')]</font>)</dt><dd><tt>Returns&nbsp;flattened&nbsp;choices&nbsp;with&nbsp;a&nbsp;default&nbsp;blank&nbsp;choice&nbsp;included.</tt></dd></dl>
+
+<dl><dt><a name="FlowThreeLeggedField-get_internal_type"><strong>get_internal_type</strong></a>(self)</dt></dl>
+
+<dl><dt><a name="FlowThreeLeggedField-get_validator_unique_lookup_type"><strong>get_validator_unique_lookup_type</strong></a>(self)</dt></dl>
+
+<dl><dt><a name="FlowThreeLeggedField-has_default"><strong>has_default</strong></a>(self)</dt><dd><tt>Returns&nbsp;a&nbsp;boolean&nbsp;of&nbsp;whether&nbsp;this&nbsp;field&nbsp;has&nbsp;a&nbsp;default&nbsp;value.</tt></dd></dl>
+
+<dl><dt><a name="FlowThreeLeggedField-pre_save"><strong>pre_save</strong></a>(self, model_instance, add)</dt><dd><tt>Returns&nbsp;field's&nbsp;value&nbsp;just&nbsp;before&nbsp;saving.</tt></dd></dl>
+
+<dl><dt><a name="FlowThreeLeggedField-save_form_data"><strong>save_form_data</strong></a>(self, instance, data)</dt></dl>
+
+<dl><dt><a name="FlowThreeLeggedField-set_attributes_from_name"><strong>set_attributes_from_name</strong></a>(self, name)</dt></dl>
+
+<dl><dt><a name="FlowThreeLeggedField-value_from_object"><strong>value_from_object</strong></a>(self, obj)</dt><dd><tt>Returns&nbsp;the&nbsp;value&nbsp;of&nbsp;this&nbsp;field&nbsp;in&nbsp;the&nbsp;given&nbsp;model&nbsp;instance.</tt></dd></dl>
+
+<dl><dt><a name="FlowThreeLeggedField-value_to_string"><strong>value_to_string</strong></a>(self, obj)</dt><dd><tt>Returns&nbsp;a&nbsp;string&nbsp;value&nbsp;of&nbsp;this&nbsp;field&nbsp;from&nbsp;the&nbsp;passed&nbsp;obj.<br>
+This&nbsp;is&nbsp;used&nbsp;by&nbsp;the&nbsp;serialization&nbsp;framework.</tt></dd></dl>
+
+<hr>
+Data descriptors inherited from <a href="django.db.models.fields.html#Field">django.db.models.fields.Field</a>:<br>
+<dl><dt><strong>__dict__</strong></dt>
+<dd><tt>dictionary&nbsp;for&nbsp;instance&nbsp;variables&nbsp;(if&nbsp;defined)</tt></dd>
+</dl>
+<dl><dt><strong>__weakref__</strong></dt>
+<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
+</dl>
+<dl><dt><strong>choices</strong></dt>
+</dl>
+<dl><dt><strong>flatchoices</strong></dt>
+<dd><tt>Flattened&nbsp;version&nbsp;of&nbsp;choices&nbsp;tuple.</tt></dd>
+</dl>
+<dl><dt><strong>unique</strong></dt>
+</dl>
+<hr>
+Data and other attributes inherited from <a href="django.db.models.fields.html#Field">django.db.models.fields.Field</a>:<br>
+<dl><dt><strong>auto_creation_counter</strong> = -1</dl>
+
+<dl><dt><strong>creation_counter</strong> = 0</dl>
+
+<dl><dt><strong>empty_strings_allowed</strong> = True</dl>
+
+</td></tr></table> <p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#ffc8d8">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#000000" face="helvetica, arial"><a name="OAuthCredentialsField">class <strong>OAuthCredentialsField</strong></a>(<a href="django.db.models.fields.html#Field">django.db.models.fields.Field</a>)</font></td></tr>
+    
+<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%"><dl><dt>Method resolution order:</dt>
+<dd><a href="apiclient.ext.django_orm.html#OAuthCredentialsField">OAuthCredentialsField</a></dd>
+<dd><a href="django.db.models.fields.html#Field">django.db.models.fields.Field</a></dd>
+<dd><a href="__builtin__.html#object">__builtin__.object</a></dd>
+</dl>
+<hr>
+Methods defined here:<br>
+<dl><dt><a name="OAuthCredentialsField-contribute_to_class"><strong>contribute_to_class</strong></a>(self, cls, name)</dt></dl>
+
+<dl><dt><a name="OAuthCredentialsField-db_type"><strong>db_type</strong></a>(self)</dt></dl>
+
+<dl><dt><a name="OAuthCredentialsField-get_db_prep_value"><strong>get_db_prep_value</strong></a>(self, value)</dt></dl>
+
+<dl><dt><a name="OAuthCredentialsField-to_python"><strong>to_python</strong></a>(self, value)</dt></dl>
+
+<hr>
+Data and other attributes defined here:<br>
+<dl><dt><strong>__metaclass__</strong> = &lt;class 'django.db.models.fields.subclassing.SubfieldBase'&gt;<dd><tt>A&nbsp;metaclass&nbsp;for&nbsp;custom&nbsp;<a href="django.db.models.fields.html#Field">Field</a>&nbsp;subclasses.&nbsp;This&nbsp;ensures&nbsp;the&nbsp;model's&nbsp;attribute<br>
+has&nbsp;the&nbsp;descriptor&nbsp;protocol&nbsp;attached&nbsp;to&nbsp;it.</tt></dl>
+
+<hr>
+Methods inherited from <a href="django.db.models.fields.html#Field">django.db.models.fields.Field</a>:<br>
+<dl><dt><a name="OAuthCredentialsField-__cmp__"><strong>__cmp__</strong></a>(self, other)</dt></dl>
+
+<dl><dt><a name="OAuthCredentialsField-__deepcopy__"><strong>__deepcopy__</strong></a>(self, memodict)</dt></dl>
+
+<dl><dt><a name="OAuthCredentialsField-__init__"><strong>__init__</strong></a>(self, verbose_name<font color="#909090">=None</font>, name<font color="#909090">=None</font>, primary_key<font color="#909090">=False</font>, max_length<font color="#909090">=None</font>, unique<font color="#909090">=False</font>, blank<font color="#909090">=False</font>, null<font color="#909090">=False</font>, db_index<font color="#909090">=False</font>, rel<font color="#909090">=None</font>, default<font color="#909090">=&lt;class django.db.models.fields.NOT_PROVIDED&gt;</font>, editable<font color="#909090">=True</font>, serialize<font color="#909090">=True</font>, unique_for_date<font color="#909090">=None</font>, unique_for_month<font color="#909090">=None</font>, unique_for_year<font color="#909090">=None</font>, choices<font color="#909090">=None</font>, help_text<font color="#909090">=''</font>, db_column<font color="#909090">=None</font>, db_tablespace<font color="#909090">=None</font>, auto_created<font color="#909090">=False</font>)</dt></dl>
+
+<dl><dt><a name="OAuthCredentialsField-bind"><strong>bind</strong></a>(self, fieldmapping, original, bound_field_class)</dt></dl>
+
+<dl><dt><a name="OAuthCredentialsField-formfield"><strong>formfield</strong></a>(self, form_class<font color="#909090">=&lt;class 'django.forms.fields.CharField'&gt;</font>, **kwargs)</dt><dd><tt>Returns&nbsp;a&nbsp;django.forms.<a href="django.db.models.fields.html#Field">Field</a>&nbsp;instance&nbsp;for&nbsp;this&nbsp;database&nbsp;<a href="django.db.models.fields.html#Field">Field</a>.</tt></dd></dl>
+
+<dl><dt><a name="OAuthCredentialsField-get_attname"><strong>get_attname</strong></a>(self)</dt></dl>
+
+<dl><dt><a name="OAuthCredentialsField-get_attname_column"><strong>get_attname_column</strong></a>(self)</dt></dl>
+
+<dl><dt><a name="OAuthCredentialsField-get_cache_name"><strong>get_cache_name</strong></a>(self)</dt></dl>
+
+<dl><dt><a name="OAuthCredentialsField-get_choices"><strong>get_choices</strong></a>(self, include_blank<font color="#909090">=True</font>, blank_choice<font color="#909090">=[('', '---------')]</font>)</dt><dd><tt>Returns&nbsp;choices&nbsp;with&nbsp;a&nbsp;default&nbsp;blank&nbsp;choices&nbsp;included,&nbsp;for&nbsp;use<br>
+as&nbsp;SelectField&nbsp;choices&nbsp;for&nbsp;this&nbsp;field.</tt></dd></dl>
+
+<dl><dt><a name="OAuthCredentialsField-get_choices_default"><strong>get_choices_default</strong></a>(self)</dt></dl>
+
+<dl><dt><a name="OAuthCredentialsField-get_db_prep_lookup"><strong>get_db_prep_lookup</strong></a>(self, lookup_type, value)</dt><dd><tt>Returns&nbsp;field's&nbsp;value&nbsp;prepared&nbsp;for&nbsp;database&nbsp;lookup.</tt></dd></dl>
+
+<dl><dt><a name="OAuthCredentialsField-get_db_prep_save"><strong>get_db_prep_save</strong></a>(self, value)</dt><dd><tt>Returns&nbsp;field's&nbsp;value&nbsp;prepared&nbsp;for&nbsp;saving&nbsp;into&nbsp;a&nbsp;database.</tt></dd></dl>
+
+<dl><dt><a name="OAuthCredentialsField-get_default"><strong>get_default</strong></a>(self)</dt><dd><tt>Returns&nbsp;the&nbsp;default&nbsp;value&nbsp;for&nbsp;this&nbsp;field.</tt></dd></dl>
+
+<dl><dt><a name="OAuthCredentialsField-get_flatchoices"><strong>get_flatchoices</strong></a>(self, include_blank<font color="#909090">=True</font>, blank_choice<font color="#909090">=[('', '---------')]</font>)</dt><dd><tt>Returns&nbsp;flattened&nbsp;choices&nbsp;with&nbsp;a&nbsp;default&nbsp;blank&nbsp;choice&nbsp;included.</tt></dd></dl>
+
+<dl><dt><a name="OAuthCredentialsField-get_internal_type"><strong>get_internal_type</strong></a>(self)</dt></dl>
+
+<dl><dt><a name="OAuthCredentialsField-get_validator_unique_lookup_type"><strong>get_validator_unique_lookup_type</strong></a>(self)</dt></dl>
+
+<dl><dt><a name="OAuthCredentialsField-has_default"><strong>has_default</strong></a>(self)</dt><dd><tt>Returns&nbsp;a&nbsp;boolean&nbsp;of&nbsp;whether&nbsp;this&nbsp;field&nbsp;has&nbsp;a&nbsp;default&nbsp;value.</tt></dd></dl>
+
+<dl><dt><a name="OAuthCredentialsField-pre_save"><strong>pre_save</strong></a>(self, model_instance, add)</dt><dd><tt>Returns&nbsp;field's&nbsp;value&nbsp;just&nbsp;before&nbsp;saving.</tt></dd></dl>
+
+<dl><dt><a name="OAuthCredentialsField-save_form_data"><strong>save_form_data</strong></a>(self, instance, data)</dt></dl>
+
+<dl><dt><a name="OAuthCredentialsField-set_attributes_from_name"><strong>set_attributes_from_name</strong></a>(self, name)</dt></dl>
+
+<dl><dt><a name="OAuthCredentialsField-value_from_object"><strong>value_from_object</strong></a>(self, obj)</dt><dd><tt>Returns&nbsp;the&nbsp;value&nbsp;of&nbsp;this&nbsp;field&nbsp;in&nbsp;the&nbsp;given&nbsp;model&nbsp;instance.</tt></dd></dl>
+
+<dl><dt><a name="OAuthCredentialsField-value_to_string"><strong>value_to_string</strong></a>(self, obj)</dt><dd><tt>Returns&nbsp;a&nbsp;string&nbsp;value&nbsp;of&nbsp;this&nbsp;field&nbsp;from&nbsp;the&nbsp;passed&nbsp;obj.<br>
+This&nbsp;is&nbsp;used&nbsp;by&nbsp;the&nbsp;serialization&nbsp;framework.</tt></dd></dl>
+
+<hr>
+Data descriptors inherited from <a href="django.db.models.fields.html#Field">django.db.models.fields.Field</a>:<br>
+<dl><dt><strong>__dict__</strong></dt>
+<dd><tt>dictionary&nbsp;for&nbsp;instance&nbsp;variables&nbsp;(if&nbsp;defined)</tt></dd>
+</dl>
+<dl><dt><strong>__weakref__</strong></dt>
+<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
+</dl>
+<dl><dt><strong>choices</strong></dt>
+</dl>
+<dl><dt><strong>flatchoices</strong></dt>
+<dd><tt>Flattened&nbsp;version&nbsp;of&nbsp;choices&nbsp;tuple.</tt></dd>
+</dl>
+<dl><dt><strong>unique</strong></dt>
+</dl>
+<hr>
+Data and other attributes inherited from <a href="django.db.models.fields.html#Field">django.db.models.fields.Field</a>:<br>
+<dl><dt><strong>auto_creation_counter</strong> = -1</dl>
+
+<dl><dt><strong>creation_counter</strong> = 0</dl>
+
+<dl><dt><strong>empty_strings_allowed</strong> = True</dl>
+
+</td></tr></table></td></tr></table>
+</body></html>
\ No newline at end of file
diff --git a/docs/apiclient.ext.html b/docs/apiclient.ext.html
new file mode 100644
index 0000000..f9b24a0
--- /dev/null
+++ b/docs/apiclient.ext.html
@@ -0,0 +1,23 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><title>Python: package apiclient.ext</title>
+</head><body bgcolor="#f0f0f8">
+
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
+<tr bgcolor="#7799ee">
+<td valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong><a href="apiclient.html"><font color="#ffffff">apiclient</font></a>.ext</strong></big></big></font></td
+><td align=right valign=bottom
+><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/usr/local/google/home/jcgregorio/projects/apiary/apiclient/ext/__init__.py">/usr/local/google/home/jcgregorio/projects/apiary/apiclient/ext/__init__.py</a></font></td></tr></table>
+    <p></p>
+<p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#aa55cc">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Package Contents</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#aa55cc"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="apiclient.ext.appengine.html">appengine</a><br>
+</td><td width="25%" valign=top><a href="apiclient.ext.django_orm.html">django_orm</a><br>
+</td><td width="25%" valign=top></td><td width="25%" valign=top></td></tr></table></td></tr></table>
+</body></html>
\ No newline at end of file
diff --git a/docs/apiclient.html b/docs/apiclient.html
new file mode 100644
index 0000000..6b8dfbb
--- /dev/null
+++ b/docs/apiclient.html
@@ -0,0 +1,29 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><title>Python: package apiclient</title>
+</head><body bgcolor="#f0f0f8">
+
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
+<tr bgcolor="#7799ee">
+<td valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong>apiclient</strong></big></big></font></td
+><td align=right valign=bottom
+><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/usr/local/google/home/jcgregorio/projects/apiary/apiclient/__init__.py">/usr/local/google/home/jcgregorio/projects/apiary/apiclient/__init__.py</a></font></td></tr></table>
+    <p></p>
+<p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#aa55cc">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Package Contents</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#aa55cc"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="apiclient.contrib.html"><strong>contrib</strong>&nbsp;(package)</a><br>
+<a href="apiclient.discovery.html">discovery</a><br>
+</td><td width="25%" valign=top><a href="apiclient.errors.html">errors</a><br>
+<a href="apiclient.ext.html"><strong>ext</strong>&nbsp;(package)</a><br>
+</td><td width="25%" valign=top><a href="apiclient.http.html">http</a><br>
+<a href="apiclient.json.html">json</a><br>
+</td><td width="25%" valign=top><a href="apiclient.model.html">model</a><br>
+<a href="apiclient.oauth.html">oauth</a><br>
+</td></tr></table></td></tr></table>
+</body></html>
\ No newline at end of file
diff --git a/docs/apiclient.http.html b/docs/apiclient.http.html
new file mode 100644
index 0000000..9810823
--- /dev/null
+++ b/docs/apiclient.http.html
@@ -0,0 +1,149 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><title>Python: module apiclient.http</title>
+</head><body bgcolor="#f0f0f8">
+
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
+<tr bgcolor="#7799ee">
+<td valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong><a href="apiclient.html"><font color="#ffffff">apiclient</font></a>.http</strong></big></big></font></td
+><td align=right valign=bottom
+><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/usr/local/google/home/jcgregorio/projects/apiary/apiclient/http.py">/usr/local/google/home/jcgregorio/projects/apiary/apiclient/http.py</a></font></td></tr></table>
+    <p><tt>Classes&nbsp;to&nbsp;encapsulate&nbsp;a&nbsp;single&nbsp;HTTP&nbsp;request.<br>
+&nbsp;<br>
+The&nbsp;classes&nbsp;implement&nbsp;a&nbsp;command&nbsp;pattern,&nbsp;with&nbsp;every<br>
+<a href="__builtin__.html#object">object</a>&nbsp;supporting&nbsp;an&nbsp;execute()&nbsp;method&nbsp;that&nbsp;does&nbsp;the<br>
+actuall&nbsp;HTTP&nbsp;request.</tt></p>
+<p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#ee77aa">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Classes</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#ee77aa"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%"><dl>
+<dt><font face="helvetica, arial"><a href="__builtin__.html#object">__builtin__.object</a>
+</font></dt><dd>
+<dl>
+<dt><font face="helvetica, arial"><a href="apiclient.http.html#HttpRequest">HttpRequest</a>
+</font></dt><dt><font face="helvetica, arial"><a href="apiclient.http.html#RequestMockBuilder">RequestMockBuilder</a>
+</font></dt></dl>
+</dd>
+</dl>
+ <p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#ffc8d8">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#000000" face="helvetica, arial"><a name="HttpRequest">class <strong>HttpRequest</strong></a>(<a href="__builtin__.html#object">__builtin__.object</a>)</font></td></tr>
+    
+<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
+<td colspan=2><tt>Encapsulates&nbsp;a&nbsp;single&nbsp;HTTP&nbsp;request.<br>&nbsp;</tt></td></tr>
+<tr><td>&nbsp;</td>
+<td width="100%">Methods defined here:<br>
+<dl><dt><a name="HttpRequest-__init__"><strong>__init__</strong></a>(self, http, uri, method<font color="#909090">='GET'</font>, body<font color="#909090">=None</font>, headers<font color="#909090">=None</font>, postproc<font color="#909090">=None</font>, methodId<font color="#909090">=None</font>)</dt><dd><tt>Constructor&nbsp;for&nbsp;an&nbsp;<a href="#HttpRequest">HttpRequest</a>.<br>
+&nbsp;<br>
+Only&nbsp;http&nbsp;and&nbsp;uri&nbsp;are&nbsp;required.<br>
+&nbsp;<br>
+Args:<br>
+&nbsp;&nbsp;http:&nbsp;httplib2.Http,&nbsp;the&nbsp;transport&nbsp;<a href="__builtin__.html#object">object</a>&nbsp;to&nbsp;use&nbsp;to&nbsp;make&nbsp;a&nbsp;request<br>
+&nbsp;&nbsp;uri:&nbsp;string,&nbsp;the&nbsp;absolute&nbsp;URI&nbsp;to&nbsp;send&nbsp;the&nbsp;request&nbsp;to<br>
+&nbsp;&nbsp;method:&nbsp;string,&nbsp;the&nbsp;HTTP&nbsp;method&nbsp;to&nbsp;use<br>
+&nbsp;&nbsp;body:&nbsp;string,&nbsp;the&nbsp;request&nbsp;body&nbsp;of&nbsp;the&nbsp;HTTP&nbsp;request<br>
+&nbsp;&nbsp;headers:&nbsp;dict,&nbsp;the&nbsp;HTTP&nbsp;request&nbsp;headers<br>
+&nbsp;&nbsp;postproc:&nbsp;callable,&nbsp;called&nbsp;on&nbsp;the&nbsp;HTTP&nbsp;response&nbsp;and&nbsp;content&nbsp;to&nbsp;transform<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;it&nbsp;into&nbsp;a&nbsp;data&nbsp;<a href="__builtin__.html#object">object</a>&nbsp;before&nbsp;returning,&nbsp;or&nbsp;raising&nbsp;an&nbsp;exception<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;on&nbsp;an&nbsp;error.<br>
+&nbsp;&nbsp;methodId:&nbsp;string,&nbsp;a&nbsp;unique&nbsp;identifier&nbsp;for&nbsp;the&nbsp;API&nbsp;method&nbsp;being&nbsp;called.</tt></dd></dl>
+
+<dl><dt><a name="HttpRequest-execute"><strong>execute</strong></a>(self, http<font color="#909090">=None</font>)</dt><dd><tt>Execute&nbsp;the&nbsp;request.<br>
+&nbsp;<br>
+Args:<br>
+&nbsp;&nbsp;http:&nbsp;httplib2.Http,&nbsp;an&nbsp;http&nbsp;<a href="__builtin__.html#object">object</a>&nbsp;to&nbsp;be&nbsp;used&nbsp;in&nbsp;place&nbsp;of&nbsp;the<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;one&nbsp;the&nbsp;<a href="#HttpRequest">HttpRequest</a>&nbsp;request&nbsp;<a href="__builtin__.html#object">object</a>&nbsp;was&nbsp;constructed&nbsp;with.<br>
+&nbsp;<br>
+Returns:<br>
+&nbsp;&nbsp;A&nbsp;deserialized&nbsp;<a href="__builtin__.html#object">object</a>&nbsp;model&nbsp;of&nbsp;the&nbsp;response&nbsp;body&nbsp;as&nbsp;determined<br>
+&nbsp;&nbsp;by&nbsp;the&nbsp;postproc.<br>
+&nbsp;<br>
+Raises:<br>
+&nbsp;&nbsp;apiclient.errors.HttpError&nbsp;if&nbsp;the&nbsp;response&nbsp;was&nbsp;not&nbsp;a&nbsp;2xx.<br>
+&nbsp;&nbsp;httplib2.Error&nbsp;if&nbsp;a&nbsp;transport&nbsp;error&nbsp;has&nbsp;occured.</tt></dd></dl>
+
+<hr>
+Data descriptors defined here:<br>
+<dl><dt><strong>__dict__</strong></dt>
+<dd><tt>dictionary&nbsp;for&nbsp;instance&nbsp;variables&nbsp;(if&nbsp;defined)</tt></dd>
+</dl>
+<dl><dt><strong>__weakref__</strong></dt>
+<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
+</dl>
+</td></tr></table> <p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#ffc8d8">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#000000" face="helvetica, arial"><a name="RequestMockBuilder">class <strong>RequestMockBuilder</strong></a>(<a href="__builtin__.html#object">__builtin__.object</a>)</font></td></tr>
+    
+<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
+<td colspan=2><tt>A&nbsp;simple&nbsp;mock&nbsp;of&nbsp;<a href="#HttpRequest">HttpRequest</a><br>
+&nbsp;<br>
+Pass&nbsp;in&nbsp;a&nbsp;dictionary&nbsp;to&nbsp;the&nbsp;constructor&nbsp;that&nbsp;maps&nbsp;request&nbsp;methodIds&nbsp;to<br>
+tuples&nbsp;of&nbsp;(httplib2.Response,&nbsp;content)&nbsp;that&nbsp;should&nbsp;be&nbsp;returned&nbsp;when&nbsp;that<br>
+method&nbsp;is&nbsp;called.&nbsp;None&nbsp;may&nbsp;also&nbsp;be&nbsp;passed&nbsp;in&nbsp;for&nbsp;the&nbsp;httplib2.Response,&nbsp;in<br>
+which&nbsp;case&nbsp;a&nbsp;200&nbsp;OK&nbsp;response&nbsp;will&nbsp;be&nbsp;generated.<br>
+&nbsp;<br>
+Example:<br>
+&nbsp;&nbsp;response&nbsp;=&nbsp;'{"data":&nbsp;{"id":&nbsp;"tag:google.c...'<br>
+&nbsp;&nbsp;requestBuilder&nbsp;=&nbsp;<a href="#RequestMockBuilder">RequestMockBuilder</a>(<br>
+&nbsp;&nbsp;&nbsp;&nbsp;{<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'chili.activities.get':&nbsp;(None,&nbsp;response),<br>
+&nbsp;&nbsp;&nbsp;&nbsp;}<br>
+&nbsp;&nbsp;)<br>
+&nbsp;&nbsp;apiclient.discovery.build("buzz",&nbsp;"v1",&nbsp;requestBuilder=requestBuilder)<br>
+&nbsp;<br>
+Methods&nbsp;that&nbsp;you&nbsp;do&nbsp;not&nbsp;supply&nbsp;a&nbsp;response&nbsp;for&nbsp;will&nbsp;return&nbsp;a<br>
+200&nbsp;OK&nbsp;with&nbsp;an&nbsp;empty&nbsp;string&nbsp;as&nbsp;the&nbsp;response&nbsp;content.&nbsp;The&nbsp;methodId<br>
+is&nbsp;taken&nbsp;from&nbsp;the&nbsp;rpcName&nbsp;in&nbsp;the&nbsp;discovery&nbsp;document.<br>
+&nbsp;<br>
+For&nbsp;more&nbsp;details&nbsp;see&nbsp;the&nbsp;project&nbsp;wiki.<br>&nbsp;</tt></td></tr>
+<tr><td>&nbsp;</td>
+<td width="100%">Methods defined here:<br>
+<dl><dt><a name="RequestMockBuilder-__call__"><strong>__call__</strong></a>(self, http, uri, method<font color="#909090">='GET'</font>, body<font color="#909090">=None</font>, headers<font color="#909090">=None</font>, postproc<font color="#909090">=None</font>, methodId<font color="#909090">=None</font>)</dt><dd><tt>Implements&nbsp;the&nbsp;callable&nbsp;interface&nbsp;that&nbsp;discovery.build()&nbsp;expects<br>
+of&nbsp;requestBuilder,&nbsp;which&nbsp;is&nbsp;to&nbsp;build&nbsp;an&nbsp;<a href="__builtin__.html#object">object</a>&nbsp;compatible&nbsp;with<br>
+<a href="#HttpRequest">HttpRequest</a>.execute().&nbsp;See&nbsp;that&nbsp;method&nbsp;for&nbsp;the&nbsp;description&nbsp;of&nbsp;the<br>
+parameters&nbsp;and&nbsp;the&nbsp;expected&nbsp;response.</tt></dd></dl>
+
+<dl><dt><a name="RequestMockBuilder-__init__"><strong>__init__</strong></a>(self, responses)</dt><dd><tt>Constructor&nbsp;for&nbsp;<a href="#RequestMockBuilder">RequestMockBuilder</a><br>
+&nbsp;<br>
+The&nbsp;constructed&nbsp;<a href="__builtin__.html#object">object</a>&nbsp;should&nbsp;be&nbsp;a&nbsp;callable&nbsp;<a href="__builtin__.html#object">object</a><br>
+that&nbsp;can&nbsp;replace&nbsp;the&nbsp;class&nbsp;HttpResponse.<br>
+&nbsp;<br>
+responses&nbsp;-&nbsp;A&nbsp;dictionary&nbsp;that&nbsp;maps&nbsp;methodIds&nbsp;into&nbsp;tuples<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;of&nbsp;(httplib2.Response,&nbsp;content).&nbsp;The&nbsp;methodId<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;comes&nbsp;from&nbsp;the&nbsp;'rpcName'&nbsp;field&nbsp;in&nbsp;the&nbsp;discovery<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.</tt></dd></dl>
+
+<hr>
+Data descriptors defined here:<br>
+<dl><dt><strong>__dict__</strong></dt>
+<dd><tt>dictionary&nbsp;for&nbsp;instance&nbsp;variables&nbsp;(if&nbsp;defined)</tt></dd>
+</dl>
+<dl><dt><strong>__weakref__</strong></dt>
+<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
+</dl>
+</td></tr></table></td></tr></table><p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#55aa55">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#55aa55"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%"><strong>__all__</strong> = ['HttpRequest', 'RequestMockBuilder']<br>
+<strong>__author__</strong> = 'jcgregorio@google.com (Joe Gregorio)'</td></tr></table><p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#7799ee">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Author</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#7799ee"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%">jcgregorio@google.com&nbsp;(Joe&nbsp;Gregorio)</td></tr></table>
+</body></html>
\ No newline at end of file
diff --git a/docs/apiclient.json.html b/docs/apiclient.json.html
new file mode 100644
index 0000000..00c56ab
--- /dev/null
+++ b/docs/apiclient.json.html
@@ -0,0 +1,39 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><title>Python: module apiclient.json</title>
+</head><body bgcolor="#f0f0f8">
+
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
+<tr bgcolor="#7799ee">
+<td valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong><a href="apiclient.html"><font color="#ffffff">apiclient</font></a>.json</strong></big></big></font></td
+><td align=right valign=bottom
+><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/usr/local/google/home/jcgregorio/projects/apiary/apiclient/json.py">/usr/local/google/home/jcgregorio/projects/apiary/apiclient/json.py</a></font></td></tr></table>
+    <p><tt>Utility&nbsp;module&nbsp;to&nbsp;import&nbsp;a&nbsp;JSON&nbsp;module<br>
+&nbsp;<br>
+Hides&nbsp;all&nbsp;the&nbsp;messy&nbsp;details&nbsp;of&nbsp;exactly&nbsp;where<br>
+we&nbsp;get&nbsp;a&nbsp;simplejson&nbsp;module&nbsp;from.</tt></p>
+<p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#aa55cc">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Modules</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#aa55cc"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="simplejson.html">simplejson</a><br>
+</td><td width="25%" valign=top></td><td width="25%" valign=top></td><td width="25%" valign=top></td></tr></table></td></tr></table><p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#55aa55">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#55aa55"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%"><strong>__author__</strong> = 'jcgregorio@google.com (Joe Gregorio)'</td></tr></table><p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#7799ee">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Author</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#7799ee"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%">jcgregorio@google.com&nbsp;(Joe&nbsp;Gregorio)</td></tr></table>
+</body></html>
\ No newline at end of file
diff --git a/docs/apiclient.model.html b/docs/apiclient.model.html
new file mode 100644
index 0000000..32ea8b9
--- /dev/null
+++ b/docs/apiclient.model.html
@@ -0,0 +1,107 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><title>Python: module apiclient.model</title>
+</head><body bgcolor="#f0f0f8">
+
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
+<tr bgcolor="#7799ee">
+<td valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong><a href="apiclient.html"><font color="#ffffff">apiclient</font></a>.model</strong></big></big></font></td
+><td align=right valign=bottom
+><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/usr/local/google/home/jcgregorio/projects/apiary/apiclient/model.py">/usr/local/google/home/jcgregorio/projects/apiary/apiclient/model.py</a></font></td></tr></table>
+    <p><tt>Model&nbsp;objects&nbsp;for&nbsp;requests&nbsp;and&nbsp;responses<br>
+&nbsp;<br>
+Each&nbsp;API&nbsp;may&nbsp;support&nbsp;one&nbsp;or&nbsp;more&nbsp;serializations,&nbsp;such<br>
+as&nbsp;JSON,&nbsp;Atom,&nbsp;etc.&nbsp;The&nbsp;model&nbsp;classes&nbsp;are&nbsp;responsible<br>
+for&nbsp;converting&nbsp;between&nbsp;the&nbsp;wire&nbsp;format&nbsp;and&nbsp;the&nbsp;Python<br>
+<a href="__builtin__.html#object">object</a>&nbsp;representation.</tt></p>
+<p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#aa55cc">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Modules</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#aa55cc"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="logging.html">logging</a><br>
+</td><td width="25%" valign=top><a href="simplejson.html">simplejson</a><br>
+</td><td width="25%" valign=top><a href="urllib.html">urllib</a><br>
+</td><td width="25%" valign=top></td></tr></table></td></tr></table><p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#ee77aa">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Classes</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#ee77aa"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%"><dl>
+<dt><font face="helvetica, arial"><a href="__builtin__.html#object">__builtin__.object</a>
+</font></dt><dd>
+<dl>
+<dt><font face="helvetica, arial"><a href="apiclient.model.html#JsonModel">JsonModel</a>
+</font></dt></dl>
+</dd>
+</dl>
+ <p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#ffc8d8">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#000000" face="helvetica, arial"><a name="JsonModel">class <strong>JsonModel</strong></a>(<a href="__builtin__.html#object">__builtin__.object</a>)</font></td></tr>
+    
+<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
+<td colspan=2><tt>Model&nbsp;class&nbsp;for&nbsp;JSON.<br>
+&nbsp;<br>
+Serializes&nbsp;and&nbsp;de-serializes&nbsp;between&nbsp;JSON&nbsp;and&nbsp;the&nbsp;Python<br>
+<a href="__builtin__.html#object">object</a>&nbsp;representation&nbsp;of&nbsp;HTTP&nbsp;request&nbsp;and&nbsp;response&nbsp;bodies.<br>&nbsp;</tt></td></tr>
+<tr><td>&nbsp;</td>
+<td width="100%">Methods defined here:<br>
+<dl><dt><a name="JsonModel-request"><strong>request</strong></a>(self, headers, path_params, query_params, body_value)</dt><dd><tt>Updates&nbsp;outgoing&nbsp;requests&nbsp;with&nbsp;JSON&nbsp;bodies.<br>
+&nbsp;<br>
+Args:<br>
+&nbsp;&nbsp;headers:&nbsp;dict,&nbsp;request&nbsp;headers<br>
+&nbsp;&nbsp;path_params:&nbsp;dict,&nbsp;parameters&nbsp;that&nbsp;appear&nbsp;in&nbsp;the&nbsp;request&nbsp;path<br>
+&nbsp;&nbsp;query_params:&nbsp;dict,&nbsp;parameters&nbsp;that&nbsp;appear&nbsp;in&nbsp;the&nbsp;query<br>
+&nbsp;&nbsp;body_value:&nbsp;<a href="__builtin__.html#object">object</a>,&nbsp;the&nbsp;request&nbsp;body&nbsp;as&nbsp;a&nbsp;Python&nbsp;<a href="__builtin__.html#object">object</a>,&nbsp;which&nbsp;must&nbsp;be<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;serializable&nbsp;by&nbsp;simplejson.<br>
+Returns:<br>
+&nbsp;&nbsp;A&nbsp;tuple&nbsp;of&nbsp;(headers,&nbsp;path_params,&nbsp;query,&nbsp;body)<br>
+&nbsp;<br>
+&nbsp;&nbsp;headers:&nbsp;dict,&nbsp;request&nbsp;headers<br>
+&nbsp;&nbsp;path_params:&nbsp;dict,&nbsp;parameters&nbsp;that&nbsp;appear&nbsp;in&nbsp;the&nbsp;request&nbsp;path<br>
+&nbsp;&nbsp;query:&nbsp;string,&nbsp;query&nbsp;part&nbsp;of&nbsp;the&nbsp;request&nbsp;URI<br>
+&nbsp;&nbsp;body:&nbsp;string,&nbsp;the&nbsp;body&nbsp;serialized&nbsp;as&nbsp;JSON</tt></dd></dl>
+
+<dl><dt><a name="JsonModel-response"><strong>response</strong></a>(self, resp, content)</dt><dd><tt>Convert&nbsp;the&nbsp;response&nbsp;wire&nbsp;format&nbsp;into&nbsp;a&nbsp;Python&nbsp;<a href="__builtin__.html#object">object</a>.<br>
+&nbsp;<br>
+Args:<br>
+&nbsp;&nbsp;resp:&nbsp;httplib2.Response,&nbsp;the&nbsp;HTTP&nbsp;response&nbsp;headers&nbsp;and&nbsp;status<br>
+&nbsp;&nbsp;content:&nbsp;string,&nbsp;the&nbsp;body&nbsp;of&nbsp;the&nbsp;HTTP&nbsp;response<br>
+&nbsp;<br>
+Returns:<br>
+&nbsp;&nbsp;The&nbsp;body&nbsp;de-serialized&nbsp;as&nbsp;a&nbsp;Python&nbsp;<a href="__builtin__.html#object">object</a>.<br>
+&nbsp;<br>
+Raises:<br>
+&nbsp;&nbsp;apiclient.errors.HttpError&nbsp;if&nbsp;a&nbsp;non&nbsp;2xx&nbsp;response&nbsp;is&nbsp;received.</tt></dd></dl>
+
+<hr>
+Data descriptors defined here:<br>
+<dl><dt><strong>__dict__</strong></dt>
+<dd><tt>dictionary&nbsp;for&nbsp;instance&nbsp;variables&nbsp;(if&nbsp;defined)</tt></dd>
+</dl>
+<dl><dt><strong>__weakref__</strong></dt>
+<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
+</dl>
+</td></tr></table></td></tr></table><p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#55aa55">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#55aa55"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%"><strong>__author__</strong> = 'jcgregorio@google.com (Joe Gregorio)'</td></tr></table><p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#7799ee">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Author</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#7799ee"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%">jcgregorio@google.com&nbsp;(Joe&nbsp;Gregorio)</td></tr></table>
+</body></html>
\ No newline at end of file
diff --git a/docs/apiclient.oauth.html b/docs/apiclient.oauth.html
new file mode 100644
index 0000000..e55af8c
--- /dev/null
+++ b/docs/apiclient.oauth.html
@@ -0,0 +1,375 @@
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html><head><title>Python: module apiclient.oauth</title>
+</head><body bgcolor="#f0f0f8">
+
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="heading">
+<tr bgcolor="#7799ee">
+<td valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial">&nbsp;<br><big><big><strong><a href="apiclient.html"><font color="#ffffff">apiclient</font></a>.oauth</strong></big></big></font></td
+><td align=right valign=bottom
+><font color="#ffffff" face="helvetica, arial"><a href=".">index</a><br><a href="file:/usr/local/google/home/jcgregorio/projects/apiary/apiclient/oauth.py">/usr/local/google/home/jcgregorio/projects/apiary/apiclient/oauth.py</a></font></td></tr></table>
+    <p><tt>Utilities&nbsp;for&nbsp;OAuth.<br>
+&nbsp;<br>
+Utilities&nbsp;for&nbsp;making&nbsp;it&nbsp;easier&nbsp;to&nbsp;work&nbsp;with&nbsp;OAuth.</tt></p>
+<p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#aa55cc">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Modules</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#aa55cc"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%"><table width="100%" summary="list"><tr><td width="25%" valign=top><a href="copy.html">copy</a><br>
+<a href="httplib2.html">httplib2</a><br>
+</td><td width="25%" valign=top><a href="logging.html">logging</a><br>
+<a href="oauth2.html">oauth2</a><br>
+</td><td width="25%" valign=top><a href="urllib.html">urllib</a><br>
+</td><td width="25%" valign=top></td></tr></table></td></tr></table><p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#ee77aa">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Classes</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#ee77aa"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%"><dl>
+<dt><font face="helvetica, arial"><a href="__builtin__.html#object">__builtin__.object</a>
+</font></dt><dd>
+<dl>
+<dt><font face="helvetica, arial"><a href="apiclient.oauth.html#Credentials">Credentials</a>
+</font></dt><dd>
+<dl>
+<dt><font face="helvetica, arial"><a href="apiclient.oauth.html#OAuthCredentials">OAuthCredentials</a>
+</font></dt></dl>
+</dd>
+<dt><font face="helvetica, arial"><a href="apiclient.oauth.html#FlowThreeLegged">FlowThreeLegged</a>
+</font></dt></dl>
+</dd>
+<dt><font face="helvetica, arial"><a href="exceptions.html#Exception">exceptions.Exception</a>(<a href="exceptions.html#BaseException">exceptions.BaseException</a>)
+</font></dt><dd>
+<dl>
+<dt><font face="helvetica, arial"><a href="apiclient.oauth.html#Error">Error</a>
+</font></dt><dd>
+<dl>
+<dt><font face="helvetica, arial"><a href="apiclient.oauth.html#MissingParameter">MissingParameter</a>
+</font></dt><dt><font face="helvetica, arial"><a href="apiclient.oauth.html#RequestError">RequestError</a>
+</font></dt></dl>
+</dd>
+</dl>
+</dd>
+</dl>
+ <p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#ffc8d8">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#000000" face="helvetica, arial"><a name="Credentials">class <strong>Credentials</strong></a>(<a href="__builtin__.html#object">__builtin__.object</a>)</font></td></tr>
+    
+<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
+<td colspan=2><tt>Base&nbsp;class&nbsp;for&nbsp;all&nbsp;<a href="#Credentials">Credentials</a>&nbsp;objects.<br>
+&nbsp;<br>
+Subclasses&nbsp;must&nbsp;define&nbsp;an&nbsp;<a href="#Credentials-authorize">authorize</a>()&nbsp;method<br>
+that&nbsp;applies&nbsp;the&nbsp;credentials&nbsp;to&nbsp;an&nbsp;HTTP&nbsp;transport.<br>&nbsp;</tt></td></tr>
+<tr><td>&nbsp;</td>
+<td width="100%">Methods defined here:<br>
+<dl><dt><a name="Credentials-authorize"><strong>authorize</strong></a>(self, http)</dt><dd><tt>Take&nbsp;an&nbsp;httplib2.Http&nbsp;instance&nbsp;(or&nbsp;equivalent)&nbsp;and<br>
+authorizes&nbsp;it&nbsp;for&nbsp;the&nbsp;set&nbsp;of&nbsp;credentials,&nbsp;usually&nbsp;by<br>
+replacing&nbsp;http.request()&nbsp;with&nbsp;a&nbsp;method&nbsp;that&nbsp;adds&nbsp;in<br>
+the&nbsp;appropriate&nbsp;headers&nbsp;and&nbsp;then&nbsp;delegates&nbsp;to&nbsp;the&nbsp;original<br>
+Http.request()&nbsp;method.</tt></dd></dl>
+
+<hr>
+Data descriptors defined here:<br>
+<dl><dt><strong>__dict__</strong></dt>
+<dd><tt>dictionary&nbsp;for&nbsp;instance&nbsp;variables&nbsp;(if&nbsp;defined)</tt></dd>
+</dl>
+<dl><dt><strong>__weakref__</strong></dt>
+<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
+</dl>
+</td></tr></table> <p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#ffc8d8">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#000000" face="helvetica, arial"><a name="Error">class <strong>Error</strong></a>(<a href="exceptions.html#Exception">exceptions.Exception</a>)</font></td></tr>
+    
+<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
+<td colspan=2><tt>Base&nbsp;error&nbsp;for&nbsp;this&nbsp;module.<br>&nbsp;</tt></td></tr>
+<tr><td>&nbsp;</td>
+<td width="100%"><dl><dt>Method resolution order:</dt>
+<dd><a href="apiclient.oauth.html#Error">Error</a></dd>
+<dd><a href="exceptions.html#Exception">exceptions.Exception</a></dd>
+<dd><a href="exceptions.html#BaseException">exceptions.BaseException</a></dd>
+<dd><a href="__builtin__.html#object">__builtin__.object</a></dd>
+</dl>
+<hr>
+Data descriptors defined here:<br>
+<dl><dt><strong>__weakref__</strong></dt>
+<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
+</dl>
+<hr>
+Methods inherited from <a href="exceptions.html#Exception">exceptions.Exception</a>:<br>
+<dl><dt><a name="Error-__init__"><strong>__init__</strong></a>(...)</dt><dd><tt>x.<a href="#Error-__init__">__init__</a>(...)&nbsp;initializes&nbsp;x;&nbsp;see&nbsp;x.__class__.__doc__&nbsp;for&nbsp;signature</tt></dd></dl>
+
+<hr>
+Data and other attributes inherited from <a href="exceptions.html#Exception">exceptions.Exception</a>:<br>
+<dl><dt><strong>__new__</strong> = &lt;built-in method __new__ of type object&gt;<dd><tt>T.<a href="#Error-__new__">__new__</a>(S,&nbsp;...)&nbsp;-&gt;&nbsp;a&nbsp;new&nbsp;<a href="__builtin__.html#object">object</a>&nbsp;with&nbsp;type&nbsp;S,&nbsp;a&nbsp;subtype&nbsp;of&nbsp;T</tt></dl>
+
+<hr>
+Methods inherited from <a href="exceptions.html#BaseException">exceptions.BaseException</a>:<br>
+<dl><dt><a name="Error-__delattr__"><strong>__delattr__</strong></a>(...)</dt><dd><tt>x.<a href="#Error-__delattr__">__delattr__</a>('name')&nbsp;&lt;==&gt;&nbsp;del&nbsp;x.name</tt></dd></dl>
+
+<dl><dt><a name="Error-__getattribute__"><strong>__getattribute__</strong></a>(...)</dt><dd><tt>x.<a href="#Error-__getattribute__">__getattribute__</a>('name')&nbsp;&lt;==&gt;&nbsp;x.name</tt></dd></dl>
+
+<dl><dt><a name="Error-__getitem__"><strong>__getitem__</strong></a>(...)</dt><dd><tt>x.<a href="#Error-__getitem__">__getitem__</a>(y)&nbsp;&lt;==&gt;&nbsp;x[y]</tt></dd></dl>
+
+<dl><dt><a name="Error-__getslice__"><strong>__getslice__</strong></a>(...)</dt><dd><tt>x.<a href="#Error-__getslice__">__getslice__</a>(i,&nbsp;j)&nbsp;&lt;==&gt;&nbsp;x[i:j]<br>
+&nbsp;<br>
+Use&nbsp;of&nbsp;negative&nbsp;indices&nbsp;is&nbsp;not&nbsp;supported.</tt></dd></dl>
+
+<dl><dt><a name="Error-__reduce__"><strong>__reduce__</strong></a>(...)</dt></dl>
+
+<dl><dt><a name="Error-__repr__"><strong>__repr__</strong></a>(...)</dt><dd><tt>x.<a href="#Error-__repr__">__repr__</a>()&nbsp;&lt;==&gt;&nbsp;repr(x)</tt></dd></dl>
+
+<dl><dt><a name="Error-__setattr__"><strong>__setattr__</strong></a>(...)</dt><dd><tt>x.<a href="#Error-__setattr__">__setattr__</a>('name',&nbsp;value)&nbsp;&lt;==&gt;&nbsp;x.name&nbsp;=&nbsp;value</tt></dd></dl>
+
+<dl><dt><a name="Error-__setstate__"><strong>__setstate__</strong></a>(...)</dt></dl>
+
+<dl><dt><a name="Error-__str__"><strong>__str__</strong></a>(...)</dt><dd><tt>x.<a href="#Error-__str__">__str__</a>()&nbsp;&lt;==&gt;&nbsp;str(x)</tt></dd></dl>
+
+<dl><dt><a name="Error-__unicode__"><strong>__unicode__</strong></a>(...)</dt></dl>
+
+<hr>
+Data descriptors inherited from <a href="exceptions.html#BaseException">exceptions.BaseException</a>:<br>
+<dl><dt><strong>__dict__</strong></dt>
+</dl>
+<dl><dt><strong>args</strong></dt>
+</dl>
+<dl><dt><strong>message</strong></dt>
+</dl>
+</td></tr></table> <p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#ffc8d8">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#000000" face="helvetica, arial"><a name="FlowThreeLegged">class <strong>FlowThreeLegged</strong></a>(<a href="__builtin__.html#object">__builtin__.object</a>)</font></td></tr>
+    
+<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
+<td colspan=2><tt>Does&nbsp;the&nbsp;Three&nbsp;Legged&nbsp;Dance&nbsp;for&nbsp;OAuth&nbsp;1.0a.<br>&nbsp;</tt></td></tr>
+<tr><td>&nbsp;</td>
+<td width="100%">Methods defined here:<br>
+<dl><dt><a name="FlowThreeLegged-__init__"><strong>__init__</strong></a>(self, discovery, consumer_key, consumer_secret, user_agent, **kwargs)</dt><dd><tt>discovery&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;Section&nbsp;of&nbsp;the&nbsp;API&nbsp;discovery&nbsp;document&nbsp;that&nbsp;describes<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the&nbsp;OAuth&nbsp;endpoints.<br>
+consumer_key&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;OAuth&nbsp;consumer&nbsp;key<br>
+consumer_secret&nbsp;-&nbsp;OAuth&nbsp;consumer&nbsp;secret<br>
+user_agent&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;The&nbsp;HTTP&nbsp;User-Agent&nbsp;that&nbsp;identifies&nbsp;the&nbsp;application.<br>
+**kwargs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;The&nbsp;keyword&nbsp;arguments&nbsp;are&nbsp;all&nbsp;optional&nbsp;and&nbsp;required<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parameters&nbsp;for&nbsp;the&nbsp;OAuth&nbsp;calls.</tt></dd></dl>
+
+<dl><dt><a name="FlowThreeLegged-step1_get_authorize_url"><strong>step1_get_authorize_url</strong></a>(self, oauth_callback<font color="#909090">='oob'</font>)</dt><dd><tt>Returns&nbsp;a&nbsp;URI&nbsp;to&nbsp;redirect&nbsp;to&nbsp;the&nbsp;provider.<br>
+&nbsp;<br>
+oauth_callback&nbsp;-&nbsp;Either&nbsp;the&nbsp;string&nbsp;'oob'&nbsp;for&nbsp;a&nbsp;non-web-based&nbsp;application,<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;or&nbsp;a&nbsp;URI&nbsp;that&nbsp;handles&nbsp;the&nbsp;callback&nbsp;from&nbsp;the&nbsp;authorization<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;server.<br>
+&nbsp;<br>
+If&nbsp;oauth_callback&nbsp;is&nbsp;'oob'&nbsp;then&nbsp;pass&nbsp;in&nbsp;the<br>
+generated&nbsp;verification&nbsp;code&nbsp;to&nbsp;step2_exchange,<br>
+otherwise&nbsp;pass&nbsp;in&nbsp;the&nbsp;query&nbsp;parameters&nbsp;received<br>
+at&nbsp;the&nbsp;callback&nbsp;uri&nbsp;to&nbsp;step2_exchange.</tt></dd></dl>
+
+<dl><dt><a name="FlowThreeLegged-step2_exchange"><strong>step2_exchange</strong></a>(self, verifier)</dt><dd><tt>Exhanges&nbsp;an&nbsp;authorized&nbsp;request&nbsp;token<br>
+for&nbsp;<a href="#OAuthCredentials">OAuthCredentials</a>.<br>
+&nbsp;<br>
+verifier&nbsp;-&nbsp;either&nbsp;the&nbsp;verifier&nbsp;token,&nbsp;or&nbsp;a&nbsp;dictionary<br>
+&nbsp;&nbsp;&nbsp;&nbsp;of&nbsp;the&nbsp;query&nbsp;parameters&nbsp;to&nbsp;the&nbsp;callback,&nbsp;which&nbsp;contains<br>
+&nbsp;&nbsp;&nbsp;&nbsp;the&nbsp;oauth_verifier.</tt></dd></dl>
+
+<hr>
+Data descriptors defined here:<br>
+<dl><dt><strong>__dict__</strong></dt>
+<dd><tt>dictionary&nbsp;for&nbsp;instance&nbsp;variables&nbsp;(if&nbsp;defined)</tt></dd>
+</dl>
+<dl><dt><strong>__weakref__</strong></dt>
+<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
+</dl>
+</td></tr></table> <p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#ffc8d8">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#000000" face="helvetica, arial"><a name="MissingParameter">class <strong>MissingParameter</strong></a>(<a href="apiclient.oauth.html#Error">Error</a>)</font></td></tr>
+    
+<tr><td bgcolor="#ffc8d8"><tt>&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%"><dl><dt>Method resolution order:</dt>
+<dd><a href="apiclient.oauth.html#MissingParameter">MissingParameter</a></dd>
+<dd><a href="apiclient.oauth.html#Error">Error</a></dd>
+<dd><a href="exceptions.html#Exception">exceptions.Exception</a></dd>
+<dd><a href="exceptions.html#BaseException">exceptions.BaseException</a></dd>
+<dd><a href="__builtin__.html#object">__builtin__.object</a></dd>
+</dl>
+<hr>
+Data descriptors inherited from <a href="apiclient.oauth.html#Error">Error</a>:<br>
+<dl><dt><strong>__weakref__</strong></dt>
+<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
+</dl>
+<hr>
+Methods inherited from <a href="exceptions.html#Exception">exceptions.Exception</a>:<br>
+<dl><dt><a name="MissingParameter-__init__"><strong>__init__</strong></a>(...)</dt><dd><tt>x.<a href="#MissingParameter-__init__">__init__</a>(...)&nbsp;initializes&nbsp;x;&nbsp;see&nbsp;x.__class__.__doc__&nbsp;for&nbsp;signature</tt></dd></dl>
+
+<hr>
+Data and other attributes inherited from <a href="exceptions.html#Exception">exceptions.Exception</a>:<br>
+<dl><dt><strong>__new__</strong> = &lt;built-in method __new__ of type object&gt;<dd><tt>T.<a href="#MissingParameter-__new__">__new__</a>(S,&nbsp;...)&nbsp;-&gt;&nbsp;a&nbsp;new&nbsp;<a href="__builtin__.html#object">object</a>&nbsp;with&nbsp;type&nbsp;S,&nbsp;a&nbsp;subtype&nbsp;of&nbsp;T</tt></dl>
+
+<hr>
+Methods inherited from <a href="exceptions.html#BaseException">exceptions.BaseException</a>:<br>
+<dl><dt><a name="MissingParameter-__delattr__"><strong>__delattr__</strong></a>(...)</dt><dd><tt>x.<a href="#MissingParameter-__delattr__">__delattr__</a>('name')&nbsp;&lt;==&gt;&nbsp;del&nbsp;x.name</tt></dd></dl>
+
+<dl><dt><a name="MissingParameter-__getattribute__"><strong>__getattribute__</strong></a>(...)</dt><dd><tt>x.<a href="#MissingParameter-__getattribute__">__getattribute__</a>('name')&nbsp;&lt;==&gt;&nbsp;x.name</tt></dd></dl>
+
+<dl><dt><a name="MissingParameter-__getitem__"><strong>__getitem__</strong></a>(...)</dt><dd><tt>x.<a href="#MissingParameter-__getitem__">__getitem__</a>(y)&nbsp;&lt;==&gt;&nbsp;x[y]</tt></dd></dl>
+
+<dl><dt><a name="MissingParameter-__getslice__"><strong>__getslice__</strong></a>(...)</dt><dd><tt>x.<a href="#MissingParameter-__getslice__">__getslice__</a>(i,&nbsp;j)&nbsp;&lt;==&gt;&nbsp;x[i:j]<br>
+&nbsp;<br>
+Use&nbsp;of&nbsp;negative&nbsp;indices&nbsp;is&nbsp;not&nbsp;supported.</tt></dd></dl>
+
+<dl><dt><a name="MissingParameter-__reduce__"><strong>__reduce__</strong></a>(...)</dt></dl>
+
+<dl><dt><a name="MissingParameter-__repr__"><strong>__repr__</strong></a>(...)</dt><dd><tt>x.<a href="#MissingParameter-__repr__">__repr__</a>()&nbsp;&lt;==&gt;&nbsp;repr(x)</tt></dd></dl>
+
+<dl><dt><a name="MissingParameter-__setattr__"><strong>__setattr__</strong></a>(...)</dt><dd><tt>x.<a href="#MissingParameter-__setattr__">__setattr__</a>('name',&nbsp;value)&nbsp;&lt;==&gt;&nbsp;x.name&nbsp;=&nbsp;value</tt></dd></dl>
+
+<dl><dt><a name="MissingParameter-__setstate__"><strong>__setstate__</strong></a>(...)</dt></dl>
+
+<dl><dt><a name="MissingParameter-__str__"><strong>__str__</strong></a>(...)</dt><dd><tt>x.<a href="#MissingParameter-__str__">__str__</a>()&nbsp;&lt;==&gt;&nbsp;str(x)</tt></dd></dl>
+
+<dl><dt><a name="MissingParameter-__unicode__"><strong>__unicode__</strong></a>(...)</dt></dl>
+
+<hr>
+Data descriptors inherited from <a href="exceptions.html#BaseException">exceptions.BaseException</a>:<br>
+<dl><dt><strong>__dict__</strong></dt>
+</dl>
+<dl><dt><strong>args</strong></dt>
+</dl>
+<dl><dt><strong>message</strong></dt>
+</dl>
+</td></tr></table> <p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#ffc8d8">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#000000" face="helvetica, arial"><a name="OAuthCredentials">class <strong>OAuthCredentials</strong></a>(<a href="apiclient.oauth.html#Credentials">Credentials</a>)</font></td></tr>
+    
+<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
+<td colspan=2><tt><a href="#Credentials">Credentials</a>&nbsp;<a href="__builtin__.html#object">object</a>&nbsp;for&nbsp;OAuth&nbsp;1.0a<br>&nbsp;</tt></td></tr>
+<tr><td>&nbsp;</td>
+<td width="100%"><dl><dt>Method resolution order:</dt>
+<dd><a href="apiclient.oauth.html#OAuthCredentials">OAuthCredentials</a></dd>
+<dd><a href="apiclient.oauth.html#Credentials">Credentials</a></dd>
+<dd><a href="__builtin__.html#object">__builtin__.object</a></dd>
+</dl>
+<hr>
+Methods defined here:<br>
+<dl><dt><a name="OAuthCredentials-__init__"><strong>__init__</strong></a>(self, consumer, token, user_agent)</dt><dd><tt>consumer&nbsp;&nbsp;&nbsp;-&nbsp;An&nbsp;instance&nbsp;of&nbsp;oauth.Consumer.<br>
+token&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;An&nbsp;instance&nbsp;of&nbsp;oauth.Token&nbsp;constructed&nbsp;with<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the&nbsp;access&nbsp;token&nbsp;and&nbsp;secret.<br>
+user_agent&nbsp;-&nbsp;The&nbsp;HTTP&nbsp;User-Agent&nbsp;to&nbsp;provide&nbsp;for&nbsp;this&nbsp;application.</tt></dd></dl>
+
+<dl><dt><a name="OAuthCredentials-authorize"><strong>authorize</strong></a>(self, http)</dt><dd><tt>Args:<br>
+&nbsp;&nbsp;&nbsp;http&nbsp;-&nbsp;An&nbsp;instance&nbsp;of&nbsp;httplib2.Http<br>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;or&nbsp;something&nbsp;that&nbsp;acts&nbsp;like&nbsp;it.<br>
+&nbsp;<br>
+Returns:<br>
+&nbsp;&nbsp;&nbsp;A&nbsp;modified&nbsp;instance&nbsp;of&nbsp;http&nbsp;that&nbsp;was&nbsp;passed&nbsp;in.<br>
+&nbsp;<br>
+Example:<br>
+&nbsp;<br>
+&nbsp;&nbsp;h&nbsp;=&nbsp;httplib2.Http()<br>
+&nbsp;&nbsp;h&nbsp;=&nbsp;credentials.<a href="#OAuthCredentials-authorize">authorize</a>(h)<br>
+&nbsp;<br>
+You&nbsp;can't&nbsp;create&nbsp;a&nbsp;new&nbsp;OAuth<br>
+subclass&nbsp;of&nbsp;httplib2.Authenication&nbsp;because<br>
+it&nbsp;never&nbsp;gets&nbsp;passed&nbsp;the&nbsp;absolute&nbsp;URI,&nbsp;which&nbsp;is<br>
+needed&nbsp;for&nbsp;signing.&nbsp;So&nbsp;instead&nbsp;we&nbsp;have&nbsp;to&nbsp;overload<br>
+'request'&nbsp;with&nbsp;a&nbsp;closure&nbsp;that&nbsp;adds&nbsp;in&nbsp;the<br>
+Authorization&nbsp;header&nbsp;and&nbsp;then&nbsp;calls&nbsp;the&nbsp;original&nbsp;version<br>
+of&nbsp;'request()'.</tt></dd></dl>
+
+<hr>
+Data descriptors inherited from <a href="apiclient.oauth.html#Credentials">Credentials</a>:<br>
+<dl><dt><strong>__dict__</strong></dt>
+<dd><tt>dictionary&nbsp;for&nbsp;instance&nbsp;variables&nbsp;(if&nbsp;defined)</tt></dd>
+</dl>
+<dl><dt><strong>__weakref__</strong></dt>
+<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
+</dl>
+</td></tr></table> <p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#ffc8d8">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#000000" face="helvetica, arial"><a name="RequestError">class <strong>RequestError</strong></a>(<a href="apiclient.oauth.html#Error">Error</a>)</font></td></tr>
+    
+<tr bgcolor="#ffc8d8"><td rowspan=2><tt>&nbsp;&nbsp;&nbsp;</tt></td>
+<td colspan=2><tt><a href="#Error">Error</a>&nbsp;occurred&nbsp;during&nbsp;request.<br>&nbsp;</tt></td></tr>
+<tr><td>&nbsp;</td>
+<td width="100%"><dl><dt>Method resolution order:</dt>
+<dd><a href="apiclient.oauth.html#RequestError">RequestError</a></dd>
+<dd><a href="apiclient.oauth.html#Error">Error</a></dd>
+<dd><a href="exceptions.html#Exception">exceptions.Exception</a></dd>
+<dd><a href="exceptions.html#BaseException">exceptions.BaseException</a></dd>
+<dd><a href="__builtin__.html#object">__builtin__.object</a></dd>
+</dl>
+<hr>
+Data descriptors inherited from <a href="apiclient.oauth.html#Error">Error</a>:<br>
+<dl><dt><strong>__weakref__</strong></dt>
+<dd><tt>list&nbsp;of&nbsp;weak&nbsp;references&nbsp;to&nbsp;the&nbsp;object&nbsp;(if&nbsp;defined)</tt></dd>
+</dl>
+<hr>
+Methods inherited from <a href="exceptions.html#Exception">exceptions.Exception</a>:<br>
+<dl><dt><a name="RequestError-__init__"><strong>__init__</strong></a>(...)</dt><dd><tt>x.<a href="#RequestError-__init__">__init__</a>(...)&nbsp;initializes&nbsp;x;&nbsp;see&nbsp;x.__class__.__doc__&nbsp;for&nbsp;signature</tt></dd></dl>
+
+<hr>
+Data and other attributes inherited from <a href="exceptions.html#Exception">exceptions.Exception</a>:<br>
+<dl><dt><strong>__new__</strong> = &lt;built-in method __new__ of type object&gt;<dd><tt>T.<a href="#RequestError-__new__">__new__</a>(S,&nbsp;...)&nbsp;-&gt;&nbsp;a&nbsp;new&nbsp;<a href="__builtin__.html#object">object</a>&nbsp;with&nbsp;type&nbsp;S,&nbsp;a&nbsp;subtype&nbsp;of&nbsp;T</tt></dl>
+
+<hr>
+Methods inherited from <a href="exceptions.html#BaseException">exceptions.BaseException</a>:<br>
+<dl><dt><a name="RequestError-__delattr__"><strong>__delattr__</strong></a>(...)</dt><dd><tt>x.<a href="#RequestError-__delattr__">__delattr__</a>('name')&nbsp;&lt;==&gt;&nbsp;del&nbsp;x.name</tt></dd></dl>
+
+<dl><dt><a name="RequestError-__getattribute__"><strong>__getattribute__</strong></a>(...)</dt><dd><tt>x.<a href="#RequestError-__getattribute__">__getattribute__</a>('name')&nbsp;&lt;==&gt;&nbsp;x.name</tt></dd></dl>
+
+<dl><dt><a name="RequestError-__getitem__"><strong>__getitem__</strong></a>(...)</dt><dd><tt>x.<a href="#RequestError-__getitem__">__getitem__</a>(y)&nbsp;&lt;==&gt;&nbsp;x[y]</tt></dd></dl>
+
+<dl><dt><a name="RequestError-__getslice__"><strong>__getslice__</strong></a>(...)</dt><dd><tt>x.<a href="#RequestError-__getslice__">__getslice__</a>(i,&nbsp;j)&nbsp;&lt;==&gt;&nbsp;x[i:j]<br>
+&nbsp;<br>
+Use&nbsp;of&nbsp;negative&nbsp;indices&nbsp;is&nbsp;not&nbsp;supported.</tt></dd></dl>
+
+<dl><dt><a name="RequestError-__reduce__"><strong>__reduce__</strong></a>(...)</dt></dl>
+
+<dl><dt><a name="RequestError-__repr__"><strong>__repr__</strong></a>(...)</dt><dd><tt>x.<a href="#RequestError-__repr__">__repr__</a>()&nbsp;&lt;==&gt;&nbsp;repr(x)</tt></dd></dl>
+
+<dl><dt><a name="RequestError-__setattr__"><strong>__setattr__</strong></a>(...)</dt><dd><tt>x.<a href="#RequestError-__setattr__">__setattr__</a>('name',&nbsp;value)&nbsp;&lt;==&gt;&nbsp;x.name&nbsp;=&nbsp;value</tt></dd></dl>
+
+<dl><dt><a name="RequestError-__setstate__"><strong>__setstate__</strong></a>(...)</dt></dl>
+
+<dl><dt><a name="RequestError-__str__"><strong>__str__</strong></a>(...)</dt><dd><tt>x.<a href="#RequestError-__str__">__str__</a>()&nbsp;&lt;==&gt;&nbsp;str(x)</tt></dd></dl>
+
+<dl><dt><a name="RequestError-__unicode__"><strong>__unicode__</strong></a>(...)</dt></dl>
+
+<hr>
+Data descriptors inherited from <a href="exceptions.html#BaseException">exceptions.BaseException</a>:<br>
+<dl><dt><strong>__dict__</strong></dt>
+</dl>
+<dl><dt><strong>args</strong></dt>
+</dl>
+<dl><dt><strong>message</strong></dt>
+</dl>
+</td></tr></table></td></tr></table><p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#55aa55">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Data</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#55aa55"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%"><strong>__author__</strong> = 'jcgregorio@google.com (Joe Gregorio)'</td></tr></table><p>
+<table width="100%" cellspacing=0 cellpadding=2 border=0 summary="section">
+<tr bgcolor="#7799ee">
+<td colspan=3 valign=bottom>&nbsp;<br>
+<font color="#ffffff" face="helvetica, arial"><big><strong>Author</strong></big></font></td></tr>
+    
+<tr><td bgcolor="#7799ee"><tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</tt></td><td>&nbsp;</td>
+<td width="100%">jcgregorio@google.com&nbsp;(Joe&nbsp;Gregorio)</td></tr></table>
+</body></html>
\ No newline at end of file
diff --git a/docs/build.sh b/docs/build.sh
new file mode 100755
index 0000000..1ea5060
--- /dev/null
+++ b/docs/build.sh
@@ -0,0 +1,16 @@
+#!/bin/bash
+#
+# Copyright 2010 Google Inc. All Rights Reserved.
+# Author: jcgregorio@google.com (Joe Gregorio)
+#
+# Creates the documentation set for the library by
+# running pydoc on all the files in apiclient.
+#
+# Notes: You may have to update the location of the
+#        App Engine library for your local system.
+
+set GOOGLE_APPENGINE=$HOME/projects/google_appengine/
+set DJANGO_SETTINGS_MODULE=fakesettings
+set PYTHONPATH=`pwd`/..:$GOOGLE_APPENGINE
+find ../apiclient/ -name "*.py" | sed "s/\/__init__.py//" | sed "s/\.py//" | sed "s/^\.\.\///" | sed "s#/#.#g" | xargs pydoc -w
+
diff --git a/docs/fakesettings.py b/docs/fakesettings.py
new file mode 100644
index 0000000..565d2e5
--- /dev/null
+++ b/docs/fakesettings.py
@@ -0,0 +1,83 @@
+# Django settings for django_sample project.
+import os
+
+DEBUG = True
+TEMPLATE_DEBUG = DEBUG
+
+ADMINS = (
+    # ('Your Name', 'your_email@domain.com'),
+)
+
+MANAGERS = ADMINS
+
+DATABASE_ENGINE = 'sqlite3'
+DATABASE_NAME = 'database.sqlite3'
+DATABASE_USER = ''
+DATABASE_PASSWORD = ''
+DATABASE_HOST = ''
+DATABASE_PORT = ''
+
+# Local time zone for this installation. Choices can be found here:
+# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
+# although not all choices may be available on all operating systems.
+# If running in a Windows environment this must be set to the same as your
+# system time zone.
+TIME_ZONE = 'America/New_York'
+
+# Language code for this installation. All choices can be found here:
+# http://www.i18nguy.com/unicode/language-identifiers.html
+LANGUAGE_CODE = 'en-us'
+
+SITE_ID = 1
+
+# If you set this to False, Django will make some optimizations so as not
+# to load the internationalization machinery.
+USE_I18N = True
+
+# Absolute path to the directory that holds media.
+# Example: "/home/media/media.lawrence.com/"
+MEDIA_ROOT = ''
+
+# URL that handles the media served from MEDIA_ROOT. Make sure to use a
+# trailing slash if there is a path component (optional in other cases).
+# Examples: "http://media.lawrence.com", "http://example.com/media/"
+MEDIA_URL = ''
+
+# URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a
+# trailing slash.
+# Examples: "http://foo.com/media/", "/media/".
+ADMIN_MEDIA_PREFIX = '/media/'
+
+# Make this unique, and don't share it with anybody.
+SECRET_KEY = '_=9hq-$t_uv1ckf&s!y2$9g$1dm*6p1cl%*!^mg=7gr)!zj32d'
+
+# List of callables that know how to import templates from various sources.
+TEMPLATE_LOADERS = (
+    'django.template.loaders.filesystem.load_template_source',
+    'django.template.loaders.app_directories.load_template_source',
+#     'django.template.loaders.eggs.load_template_source',
+)
+
+MIDDLEWARE_CLASSES = (
+    'django.middleware.common.CommonMiddleware',
+    'django.contrib.sessions.middleware.SessionMiddleware',
+    'django.contrib.auth.middleware.AuthenticationMiddleware',
+)
+
+ROOT_URLCONF = 'django_sample.urls'
+
+TEMPLATE_DIRS = (
+    # Put strings here, like "/home/html/django_templates"
+    # Always use forward slashes, even on Windows.
+    # Don't forget to use absolute paths, not relative paths.
+    os.path.join(os.path.dirname(__file__), 'templates')
+)
+
+INSTALLED_APPS = (
+    'django.contrib.admin',
+    'django.contrib.auth',
+    'django.contrib.contenttypes',
+    'django.contrib.sessions',
+    'django.contrib.sites',
+    'django_sample.buzz'
+)
diff --git a/samples/api-python-client-doc/main.py b/samples/api-python-client-doc/main.py
index 366f4b0..d5ae558 100755
--- a/samples/api-python-client-doc/main.py
+++ b/samples/api-python-client-doc/main.py
@@ -28,7 +28,11 @@
 from google.appengine.ext.webapp import util
 
 # Replicate render_doc here from pydoc.py as it isn't available in Python 2.5
-class _OldStyleClass: pass
+
+
+class _OldStyleClass:
+  pass
+
 
 def render_doc(thing, title='Python Library Documentation: %s', forceload=0):
     """Render text documentation, given an object or a path to an object."""
@@ -77,7 +81,8 @@
 
   def get(self, service_name, version):
     service = build(service_name, version)
-    page = "<p><a href='/'>Home</a></p><pre>%s</pre>" % pydoc.plain(render_doc(service))
+    page = "<p><a href='/'>Home</a></p><pre>%s</pre>" % (
+        pydoc.plain(render_doc(service)),)
 
     collections = []
     for name in dir(service):
@@ -85,7 +90,8 @@
         collections.append(name)
 
     for name in collections:
-      page = re.sub('(%s) =' % name, r'<a href="/%s/%s/%s">\1</a> =' % (service_name, version, name), page)
+      page = re.sub('(%s) =' % name, r'<a href="/%s/%s/%s">\1</a> =' % (
+          service_name, version, name), page)
 
     self.response.out.write(page)
 
@@ -101,16 +107,19 @@
         service = getattr(service, method)()
     method = getattr(service, path[-1])
     obj = method()
-    page = "<p><a href='/'>Home</a></p><pre>%s</pre>" % pydoc.plain(render_doc(obj))
+    page = "<p><a href='/'>Home</a></p><pre>%s</pre>" % (
+        pydoc.plain(render_doc(obj)),)
 
     if hasattr(method, '__is_resource__'):
       collections = []
       for name in dir(obj):
-        if not "_" in name and callable(getattr(obj, name)) and hasattr(getattr(obj, name), '__is_resource__'):
+        if not "_" in name and callable(getattr(obj, name)) and hasattr(
+            getattr(obj, name), '__is_resource__'):
           collections.append(name)
 
       for name in collections:
-        page = re.sub('(%s) =' % name, r'<a href="/%s/%s/%s">\1</a> =' % (service_name, version, collection + "/" + name), page)
+        page = re.sub('(%s) =' % name, r'<a href="/%s/%s/%s">\1</a> =' % (
+            service_name, version, collection + "/" + name), page)
 
     self.response.out.write(page)
 
diff --git a/samples/buzz/buzz.py b/samples/buzz/buzz.py
index 9cebd79..18bdfb0 100644
--- a/samples/buzz/buzz.py
+++ b/samples/buzz/buzz.py
@@ -20,6 +20,7 @@
 # Uncomment the next line to get very detailed logging
 #httplib2.debuglevel = 4
 
+
 def main():
   f = open("buzz.dat", "r")
   credentials = pickle.loads(f.read())
diff --git a/samples/customsearch/main.py b/samples/customsearch/main.py
index d13f53c..105f891 100644
--- a/samples/customsearch/main.py
+++ b/samples/customsearch/main.py
@@ -17,9 +17,10 @@
 # Uncomment the next line to get very detailed logging
 # httplib2.debuglevel = 4
 
-def main():
 
-  p = build("customsearch", "v1", developerKey="AIzaSyDRRpR3GS1F1_jKNNM9HCNd2wJQyPG3oN0")
+def main():
+  p = build("customsearch", "v1",
+            developerKey="AIzaSyDRRpR3GS1F1_jKNNM9HCNd2wJQyPG3oN0")
   res = p.cse().list(
       q='lectures',
       cx='017576662512468239146:omuauf_lfve',
diff --git a/samples/diacritize/main.py b/samples/diacritize/main.py
index e9bee69..1935868 100644
--- a/samples/diacritize/main.py
+++ b/samples/diacritize/main.py
@@ -20,9 +20,10 @@
 # Uncomment the next line to get very detailed logging
 # httplib2.debuglevel = 4
 
-def main():
 
-  p = build("diacritize", "v1", developerKey="AIzaSyDRRpR3GS1F1_jKNNM9HCNd2wJQyPG3oN0")
+def main():
+  p = build("diacritize", "v1",
+            developerKey="AIzaSyDRRpR3GS1F1_jKNNM9HCNd2wJQyPG3oN0")
   print p.diacritize().corpus().get(
       lang='ar',
       last_letter='false',
diff --git a/samples/django_sample/buzz/models.py b/samples/django_sample/buzz/models.py
index 10a83ef..11a408d 100644
--- a/samples/django_sample/buzz/models.py
+++ b/samples/django_sample/buzz/models.py
@@ -8,22 +8,26 @@
 from apiclient.ext.django_orm import FlowThreeLeggedField
 from apiclient.ext.django_orm import OAuthCredentialsField
 
-# Create your models here.
-
 # The Flow could also be stored in memcache since it is short lived.
+
+
 class Flow(models.Model):
   id = models.ForeignKey(User, primary_key=True)
   flow = FlowThreeLeggedField()
 
+
 class Credential(models.Model):
   id = models.ForeignKey(User, primary_key=True)
   credential = OAuthCredentialsField()
 
+
 class CredentialAdmin(admin.ModelAdmin):
     pass
 
+
 class FlowAdmin(admin.ModelAdmin):
     pass
 
+
 admin.site.register(Credential, CredentialAdmin)
 admin.site.register(Flow, FlowAdmin)
diff --git a/samples/django_sample/buzz/tests.py b/samples/django_sample/buzz/tests.py
index 2247054..927cadf 100644
--- a/samples/django_sample/buzz/tests.py
+++ b/samples/django_sample/buzz/tests.py
@@ -7,7 +7,9 @@
 
 from django.test import TestCase
 
+
 class SimpleTest(TestCase):
+
     def test_basic_addition(self):
         """
         Tests that 1 + 1 always equals 2.
@@ -20,4 +22,3 @@
 >>> 1 + 1 == 2
 True
 """}
-
diff --git a/samples/django_sample/buzz/views.py b/samples/django_sample/buzz/views.py
index aeb0ca2..5c5a5d1 100644
--- a/samples/django_sample/buzz/views.py
+++ b/samples/django_sample/buzz/views.py
@@ -11,9 +11,9 @@
 from django.http import HttpResponseRedirect
 from django.shortcuts import render_to_response
 
-print os.environ
 STEP2_URI = 'http://localhost:8000/auth_return'
 
+
 @login_required
 def index(request):
   try:
@@ -45,6 +45,7 @@
     f.save()
     return HttpResponseRedirect(authorize_url)
 
+
 @login_required
 def auth_return(request):
     try:
diff --git a/samples/django_sample/settings.py b/samples/django_sample/settings.py
index 834ce1f..565d2e5 100644
--- a/samples/django_sample/settings.py
+++ b/samples/django_sample/settings.py
@@ -10,12 +10,12 @@
 
 MANAGERS = ADMINS
 
-DATABASE_ENGINE = 'sqlite3'           # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
-DATABASE_NAME = 'database.sqlite3'             # Or path to database file if using sqlite3.
-DATABASE_USER = ''             # Not used with sqlite3.
-DATABASE_PASSWORD = ''         # Not used with sqlite3.
-DATABASE_HOST = ''             # Set to empty string for localhost. Not used with sqlite3.
-DATABASE_PORT = ''             # Set to empty string for default. Not used with sqlite3.
+DATABASE_ENGINE = 'sqlite3'
+DATABASE_NAME = 'database.sqlite3'
+DATABASE_USER = ''
+DATABASE_PASSWORD = ''
+DATABASE_HOST = ''
+DATABASE_PORT = ''
 
 # Local time zone for this installation. Choices can be found here:
 # http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
@@ -67,7 +67,7 @@
 ROOT_URLCONF = 'django_sample.urls'
 
 TEMPLATE_DIRS = (
-    # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
+    # Put strings here, like "/home/html/django_templates"
     # Always use forward slashes, even on Windows.
     # Don't forget to use absolute paths, not relative paths.
     os.path.join(os.path.dirname(__file__), 'templates')
diff --git a/samples/latitude/latitude.py b/samples/latitude/latitude.py
index 492300c..029b74a 100644
--- a/samples/latitude/latitude.py
+++ b/samples/latitude/latitude.py
@@ -20,6 +20,7 @@
 # Uncomment to get detailed logging
 # httplib2.debuglevel = 4
 
+
 def main():
   f = open("latitude.dat", "r")
   credentials = pickle.loads(f.read())
@@ -32,11 +33,11 @@
 
   body = {
       "data": {
-          "kind":"latitude#location",
-          "latitude":37.420352,
-          "longitude":-122.083389,
-          "accuracy":130,
-          "altitude":35
+          "kind": "latitude#location",
+          "latitude": 37.420352,
+          "longitude": -122.083389,
+          "accuracy": 130,
+          "altitude": 35
           }
       }
   print p.currentLocation().insert(body=body).execute()
diff --git a/samples/latitude/three_legged_dance.py b/samples/latitude/three_legged_dance.py
index d8d89ba..56f4f59 100644
--- a/samples/latitude/three_legged_dance.py
+++ b/samples/latitude/three_legged_dance.py
@@ -36,10 +36,10 @@
                        # https://www.google.com/accounts/ManageDomains
                        consumer_key='REGISTERED DOMAIN NAME',
                        consumer_secret='KEY GIVEN DURING REGISTRATION',
-                       user_agent='google-api-client-python-latitude-cmdline/1.0',
+                       user_agent='google-api-client-python-latitude/1.0',
                        domain='REGISTERED DOMAIN NAME',
                        scope='https://www.googleapis.com/auth/latitude',
-                       xoauth_displayname='Google API Latitude Client Example App',
+                       xoauth_displayname='Google API Latitude Example',
                        location='current',
                        granularity='city'
                        )
diff --git a/samples/local/main.py b/samples/local/main.py
index 7c62fef..472ac5a 100644
--- a/samples/local/main.py
+++ b/samples/local/main.py
@@ -22,9 +22,10 @@
 import pickle
 import pprint
 
-DISCOVERY_URI = ('http://gregorio-ub.i:3990/discovery/v0.2beta1/describe/'
+DISCOVERY_URI = ('http://localhost:3990/discovery/v0.2beta1/describe/'
   '{api}/{apiVersion}')
 
+
 def main():
   http = httplib2.Http()
 
diff --git a/samples/moderator/moderator.py b/samples/moderator/moderator.py
index da8d344..89ec9ca 100644
--- a/samples/moderator/moderator.py
+++ b/samples/moderator/moderator.py
@@ -20,6 +20,7 @@
 # Uncomment to get detailed logging
 # httplib2.debuglevel = 4
 
+
 def main():
   f = open("moderator.dat", "r")
   credentials = pickle.loads(f.read())
@@ -32,7 +33,7 @@
 
   series_body = {
       "data": {
-        "description": "Share and rank tips for eating healthily on the cheaps!",
+        "description": "Share and rank tips for eating healthy and cheap!",
         "name": "Eating Healthy & Cheap",
         "videoSubmissionAllowed": False
         }
@@ -47,7 +48,8 @@
         "presenter": "liz"
         }
       }
-  topic = p.topics().insert(seriesId=series['id']['seriesId'], body=topic_body).execute()
+  topic = p.topics().insert(seriesId=series['id']['seriesId'],
+                            body=topic_body).execute()
   print "Created a new topic"
 
   submission_body = {
@@ -69,7 +71,9 @@
         "vote": "PLUS"
         }
       }
-  p.votes().insert(seriesId=topic['id']['seriesId'], submissionId=submission['id']['submissionId'], body=vote_body)
+  p.votes().insert(seriesId=topic['id']['seriesId'],
+                   submissionId=submission['id']['submissionId'],
+                   body=vote_body)
   print "Voted on the submission"
 
 
diff --git a/samples/threadqueue/main.py b/samples/threadqueue/main.py
index 1b3b6af..4e5c511 100644
--- a/samples/threadqueue/main.py
+++ b/samples/threadqueue/main.py
@@ -22,6 +22,7 @@
 
   Implements an exponential backoff algorithm.
   """
+
   def __init__(self, maxretries=8):
     self.retry = 0
     self.maxretries = maxretries
@@ -36,7 +37,7 @@
 
   def fail(self):
     self.retry += 1
-    delay = 2**self.retry
+    delay = 2 ** self.retry
     time.sleep(delay)
 
 
@@ -67,8 +68,8 @@
     t.daemon = True
     t.start()
 
-def main():
 
+def main():
   f = open("moderator.dat", "r")
   credentials = pickle.loads(f.read())
   f.close()
@@ -98,7 +99,8 @@
           "presenter": "me"
           }
         }
-    topic_request = p.topics().insert(seriesId=series['id']['seriesId'], body=topic_body)
+    topic_request = p.topics().insert(seriesId=series['id']['seriesId'],
+                                      body=topic_body)
     print "Adding request to queue"
     queue.put(topic_request)
 
diff --git a/samples/threadqueue/three_legged_dance.py b/samples/threadqueue/three_legged_dance.py
index 97f4d11..b833e3a 100644
--- a/samples/threadqueue/three_legged_dance.py
+++ b/samples/threadqueue/three_legged_dance.py
@@ -32,7 +32,7 @@
 flow = FlowThreeLegged(moderator_discovery,
                        consumer_key='anonymous',
                        consumer_secret='anonymous',
-                       user_agent='google-api-client-python-threadqueue-sample/1.0',
+                       user_agent='google-api-client-python-thread-sample/1.0',
                        domain='anonymous',
                        scope='https://www.googleapis.com/auth/moderator',
                        #scope='tag:google.com,2010:auth/moderator',
diff --git a/samples/translate/main.py b/samples/translate/main.py
index cf0e4e7..24f0648 100644
--- a/samples/translate/main.py
+++ b/samples/translate/main.py
@@ -18,9 +18,11 @@
 # Uncomment the next line to get very detailed logging
 # httplib2.debuglevel = 4
 
+
 def main():
 
-  p = build("translate", "v2", developerKey="AIzaSyDRRpR3GS1F1_jKNNM9HCNd2wJQyPG3oN0")
+  p = build("translate", "v2",
+            developerKey="AIzaSyDRRpR3GS1F1_jKNNM9HCNd2wJQyPG3oN0")
   print p.translations().list(
       source="en",
       target="fr",
diff --git a/setup.py b/setup.py
index a34514f..dac0ce4 100644
--- a/setup.py
+++ b/setup.py
@@ -37,7 +37,7 @@
 else:
   print 'Loaded setuptools'
 
-long_desc = """The Google API Client for Python is a client library for 
+long_desc = """The Google API Client for Python is a client library for
 accessing the Buzz, Moderator, and Latitude APIs."""
 
 setup(name="google-api-python-client",
diff --git a/tests/test_discovery.py b/tests/test_discovery.py
index 7d52b3d..44dbd6a 100644
--- a/tests/test_discovery.py
+++ b/tests/test_discovery.py
@@ -32,20 +32,7 @@
     from cgi import parse_qs
 
 from apiclient.discovery import build, key2param
-
-DATA_DIR = os.path.join(os.path.dirname(__file__), 'data')
-
-
-class HttpMock(object):
-
-  def __init__(self, filename, headers):
-    f = file(os.path.join(DATA_DIR, filename), 'r')
-    self.data = f.read()
-    f.close()
-    self.headers = headers
-
-  def request(self, uri, method="GET", body=None, headers=None, redirections=1, connection_type=None):
-    return httplib2.Response(self.headers), self.data
+from tests.util import HttpMock
 
 
 class Utilities(unittest.TestCase):
diff --git a/tests/test_mocks.py b/tests/test_mocks.py
new file mode 100644
index 0000000..3216a06
--- /dev/null
+++ b/tests/test_mocks.py
@@ -0,0 +1,72 @@
+#!/usr/bin/python2.4
+#
+# Copyright 2010 Google Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Mock tests
+
+Unit tests for the Mocks.
+"""
+
+__author__ = 'jcgregorio@google.com (Joe Gregorio)'
+
+from apiclient.discovery import HttpError
+from apiclient.discovery import build
+from apiclient.http import RequestMockBuilder
+from tests.util import HttpMock
+
+import unittest
+import httplib2
+
+
+class Mocks(unittest.TestCase):
+  def setUp(self):
+    self.http = HttpMock('buzz.json', {'status': '200'})
+
+  def test_default_response(self):
+    requestBuilder = RequestMockBuilder({})
+    buzz = build('buzz', 'v1', http=self.http, requestBuilder=requestBuilder)
+    activity = buzz.activities().get(postId='tag:blah', userId='@me').execute()
+    self.assertEqual({}, activity)
+
+  def test_simple_response(self):
+    requestBuilder = RequestMockBuilder({
+        'chili.activities.get': (None, '{"data": {"foo": "bar"}}')
+        })
+    buzz = build('buzz', 'v1', http=self.http, requestBuilder=requestBuilder)
+
+    activity = buzz.activities().get(postId='tag:blah', userId='@me').execute()
+    self.assertEqual({"foo": "bar"}, activity)
+
+
+  def test_errors(self):
+    errorResponse = httplib2.Response({'status': 500, 'reason': 'Server Error'})
+    requestBuilder = RequestMockBuilder({
+        'chili.activities.list': (errorResponse, '{}')
+        })
+    buzz = build('buzz', 'v1', http=self.http, requestBuilder=requestBuilder)
+
+    try:
+      activity = buzz.activities().list(scope='@self', userId='@me').execute()
+      self.fail('An exception should have been thrown')
+    except HttpError, e:
+      self.assertEqual('500 Server Error', e.detail)
+      self.assertEqual(500, e.resp.status)
+      self.assertEqual('Server Error', e.resp.reason)
+
+
+
+
+if __name__ == '__main__':
+  unittest.main()
diff --git a/tests/util.py b/tests/util.py
new file mode 100644
index 0000000..101079f
--- /dev/null
+++ b/tests/util.py
@@ -0,0 +1,27 @@
+#!/usr/bin/python2.4
+#
+# Copyright 2010 Google Inc. All Rights Reserved.
+
+"""One-line documentation for util module.
+
+A detailed description of util.
+"""
+
+__author__ = 'jcgregorio@google.com (Joe Gregorio)'
+
+import httplib2
+import os
+
+DATA_DIR = os.path.join(os.path.dirname(__file__), 'data')
+
+
+class HttpMock(object):
+
+  def __init__(self, filename, headers):
+    f = file(os.path.join(DATA_DIR, filename), 'r')
+    self.data = f.read()
+    f.close()
+    self.headers = headers
+
+  def request(self, uri, method="GET", body=None, headers=None, redirections=1, connection_type=None):
+    return httplib2.Response(self.headers), self.data