Create index file for dynamically generated docs. (#702)

diff --git a/describe.py b/describe.py
index e5203d8..eb7a0f1 100755
--- a/describe.py
+++ b/describe.py
@@ -23,7 +23,9 @@
 
 __author__ = 'jcgregorio@google.com (Joe Gregorio)'
 
+from collections import OrderedDict
 import argparse
+import collections
 import json
 import os
 import re
@@ -394,6 +396,7 @@
   if FLAGS.discovery_uri:
     document_api_from_discovery_document(FLAGS.discovery_uri)
   else:
+    api_directory = collections.defaultdict(list)
     http = build_http()
     resp, content = http.request(
         FLAGS.directory_uri,
@@ -402,5 +405,22 @@
       directory = json.loads(content)['items']
       for api in directory:
         document_api(api['name'], api['version'])
+        api_directory[api['name']].append(api['version'])
+      
+      # sort by api name and version number
+      for api in api_directory:
+        api_directory[api] = sorted(api_directory[api])
+      api_directory = OrderedDict(sorted(api_directory.items(), key = lambda x: x[0]))
+
+      markdown = []
+      for api, versions in api_directory.items():
+          markdown.append('## %s' % api)
+          for version in versions:
+              markdown.append('* [%s](http://googleapis.github.io/google-api-python-client/docs/dyn/%s_%s.html)' % (version, api, version))
+          markdown.append('\n')
+
+      with open('docs/dyn/index.md', 'w') as f:
+        f.write('\n'.join(markdown).encode('utf-8'))
+
     else:
       sys.exit("Failed to load the discovery document.")