Regen all docs. (#700)

* Stop recursing if discovery == {}

* Generate docs with 'make docs'.
diff --git a/docs/dyn/pagespeedonline_v5.pagespeedapi.html b/docs/dyn/pagespeedonline_v5.pagespeedapi.html
new file mode 100644
index 0000000..bd2bf16
--- /dev/null
+++ b/docs/dyn/pagespeedonline_v5.pagespeedapi.html
@@ -0,0 +1,304 @@
+<html><body>
+<style>
+
+body, h1, h2, h3, div, span, p, pre, a {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-weight: inherit;
+  font-style: inherit;
+  font-size: 100%;
+  font-family: inherit;
+  vertical-align: baseline;
+}
+
+body {
+  font-size: 13px;
+  padding: 1em;
+}
+
+h1 {
+  font-size: 26px;
+  margin-bottom: 1em;
+}
+
+h2 {
+  font-size: 24px;
+  margin-bottom: 1em;
+}
+
+h3 {
+  font-size: 20px;
+  margin-bottom: 1em;
+  margin-top: 1em;
+}
+
+pre, code {
+  line-height: 1.5;
+  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
+}
+
+pre {
+  margin-top: 0.5em;
+}
+
+h1, h2, h3, p {
+  font-family: Arial, sans serif;
+}
+
+h1, h2, h3 {
+  border-bottom: solid #CCC 1px;
+}
+
+.toc_element {
+  margin-top: 0.5em;
+}
+
+.firstline {
+  margin-left: 2 em;
+}
+
+.method  {
+  margin-top: 1em;
+  border: solid 1px #CCC;
+  padding: 1em;
+  background: #EEE;
+}
+
+.details {
+  font-weight: bold;
+  font-size: 14px;
+}
+
+</style>
+
+<h1><a href="pagespeedonline_v5.html">PageSpeed Insights API</a> . <a href="pagespeedonline_v5.pagespeedapi.html">pagespeedapi</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#runpagespeed">runpagespeed(url, category=None, utm_campaign=None, locale=None, utm_source=None, strategy=None)</a></code></p>
+<p class="firstline">Runs PageSpeed analysis on the page at the specified URL, and returns PageSpeed scores, a list of suggestions to make that page faster, and other information.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="runpagespeed">runpagespeed(url, category=None, utm_campaign=None, locale=None, utm_source=None, strategy=None)</code>
+  <pre>Runs PageSpeed analysis on the page at the specified URL, and returns PageSpeed scores, a list of suggestions to make that page faster, and other information.
+
+Args:
+  url: string, The URL to fetch and analyze (required)
+  category: string, A Lighthouse category to run; if none are given, only Performance category will be run (repeated)
+    Allowed values
+      accessibility - 
+      best-practices - 
+      performance - 
+      pwa - 
+      seo - 
+  utm_campaign: string, Campaign name for analytics.
+  locale: string, The locale used to localize formatted results
+  utm_source: string, Campaign source for analytics.
+  strategy: string, The analysis strategy (desktop or mobile) to use, and desktop is the default
+    Allowed values
+      desktop - Fetch and analyze the URL for desktop browsers
+      mobile - Fetch and analyze the URL for mobile devices
+
+Returns:
+  An object of the form:
+
+    {
+    "kind": "pagespeedonline#result", # Kind of result.
+    "captchaResult": "A String", # The captcha verify result
+    "originLoadingExperience": { # Metrics of the aggregated page loading experience of the origin
+      "metrics": {
+        "a_key": { # The type of the metric.
+          "category": "A String",
+          "percentile": 42,
+          "distributions": [
+            {
+              "max": 42,
+              "proportion": 3.14,
+              "min": 42,
+            },
+          ],
+        },
+      },
+      "id": "A String", # The url, pattern or origin which the metrics are on.
+      "overall_category": "A String",
+      "initial_url": "A String",
+    },
+    "loadingExperience": { # Metrics of end users' page loading experience.
+      "metrics": {
+        "a_key": { # The type of the metric.
+          "category": "A String",
+          "percentile": 42,
+          "distributions": [
+            {
+              "max": 42,
+              "proportion": 3.14,
+              "min": 42,
+            },
+          ],
+        },
+      },
+      "id": "A String", # The url, pattern or origin which the metrics are on.
+      "overall_category": "A String",
+      "initial_url": "A String",
+    },
+    "version": { # The version of PageSpeed used to generate these results.
+      "major": 42, # The major version number of PageSpeed used to generate these results.
+      "minor": 42, # The minor version number of PageSpeed used to generate these results.
+    },
+    "analysisUTCTimestamp": "A String", # The UTC timestamp of this analysis.
+    "lighthouseResult": { # Lighthouse response for the audit url as an object.
+      "stackPacks": [ # The Stack Pack advice strings.
+        {
+          "id": "A String", # The stack pack id.
+          "title": "A String", # The stack pack title.
+          "descriptions": { # The stack pack advice strings.
+            "a_key": "A String", # The specific stack pack description.
+          },
+          "iconDataURL": "A String", # The stack pack icon data uri.
+        },
+      ],
+      "fetchTime": "A String", # The time that this run was fetched.
+      "categoryGroups": { # Map of category groups in the LHR.
+        "a_key": { # A grouping contained in a category that groups similar audits together.
+          "description": "A String", # An optional human readable description of the category group.
+          "title": "A String", # The title of the category group.
+        },
+      },
+      "configSettings": { # The configuration settings for this LHR.
+        "locale": "A String", # The locale setting.
+        "onlyCategories": "",
+        "emulatedFormFactor": "A String", # The form factor the emulation should use.
+      },
+      "runWarnings": [ # List of all run warnings in the LHR. Will always output to at least `[]`.
+        "",
+      ],
+      "finalUrl": "A String", # The final resolved url that was audited.
+      "lighthouseVersion": "A String", # The lighthouse version that was used to generate this LHR.
+      "environment": { # Environment settings that were used when making this LHR.
+        "benchmarkIndex": 3.14, # The benchmark index number that indicates rough device class.
+        "networkUserAgent": "A String", # The user agent string that was sent over the network.
+        "hostUserAgent": "A String", # The user agent string of the version of Chrome used.
+      },
+      "timing": { # Timing information for this LHR.
+        "total": 3.14, # The total duration of Lighthouse's run.
+      },
+      "i18n": { # The internationalization strings that are required to render the LHR.
+        "rendererFormattedStrings": { # Internationalized strings that are formatted to the locale in configSettings.
+          "toplevelWarningsMessage": "A String", # The label shown preceding important warnings that may have invalidated an entire report.
+          "labDataTitle": "A String", # The title of the lab data performance category.
+          "passedAuditsGroupTitle": "A String", # The heading that is shown above a list of audits that are passing.
+          "auditGroupExpandTooltip": "A String", # The tooltip text on an expandable chevron icon.
+          "warningHeader": "A String", # The label shown above a bulleted list of warnings.
+          "notApplicableAuditsGroupTitle": "A String", # The heading shown above a list of audits that do not apply to a page.
+          "crcLongestDurationLabel": "A String", # The label for values shown in the summary of critical request chains.
+          "opportunitySavingsColumnLabel": "A String", # The heading for the estimated page load savings of opportunity audits.
+          "errorMissingAuditInfo": "A String", # The error string shown next to an erroring audit.
+          "varianceDisclaimer": "A String", # The disclaimer shown below a performance metric value.
+          "lsPerformanceCategoryDescription": "A String", # The disclaimer shown under performance explaning that the network can vary.
+          "manualAuditsGroupTitle": "A String", # The heading shown above a list of audits that were not computerd in the run.
+          "opportunityResourceColumnLabel": "A String", # The heading for the estimated page load savings opportunity of an audit.
+          "crcInitialNavigation": "A String", # The label for the initial request in a critical request chain.
+          "scorescaleLabel": "A String", # The label that explains the score gauges scale (0-49, 50-89, 90-100).
+          "errorLabel": "A String", # The label shown next to an audit or metric that has had an error.
+        },
+      },
+      "userAgent": "A String", # The user agent that was used to run this LHR.
+      "audits": { # Map of audits in the LHR.
+        "a_key": { # An audit that was performed in this run. Keyed by audit id.
+          "description": "A String", # The description of the audit.
+          "title": "A String", # The human readable title.
+          "explanation": "A String", # An explanation of the errors in the audit.
+          "errorMessage": "A String", # An error message from a thrown error inside the audit.
+          "score": "",
+          "details": { # Freeform details section of the audit.
+            "a_key": "",
+          },
+          "warnings": "",
+          "scoreDisplayMode": "A String", # The enumerated score display mode.
+          "displayValue": "A String", # The value that should be displayed on the UI for this audit.
+          "id": "A String", # The audit's id.
+        },
+      },
+      "runtimeError": { # A top-level error message that, if present, indicates a serious enough problem that this Lighthouse result may need to be discarded.
+        "message": "A String", # A human readable message explaining the error code.
+        "code": "A String", # The enumerated Lighthouse Error code.
+      },
+      "categories": { # Map of categories in the LHR.
+        "seo": { # The Search-Engine-Optimization (SEO) category, containing all seo related audits.
+          "description": "A String", # A more detailed description of the category and its importance.
+          "title": "A String", # The human-friendly name of the category.
+          "auditRefs": [ # An array of references to all the audit members of this category.
+            {
+              "group": "A String", # The category group that the audit belongs to (optional).
+              "id": "A String", # The audit ref id.
+              "weight": 3.14, # The weight this audit's score has on the overall category score.
+            },
+          ],
+          "manualDescription": "A String", # A description for the manual audits in the category.
+          "score": "",
+          "id": "A String", # The string identifier of the category.
+        },
+        "best-practices": { # The best practices category, containing all web best practice related audits.
+          "description": "A String", # A more detailed description of the category and its importance.
+          "title": "A String", # The human-friendly name of the category.
+          "auditRefs": [ # An array of references to all the audit members of this category.
+            {
+              "group": "A String", # The category group that the audit belongs to (optional).
+              "id": "A String", # The audit ref id.
+              "weight": 3.14, # The weight this audit's score has on the overall category score.
+            },
+          ],
+          "manualDescription": "A String", # A description for the manual audits in the category.
+          "score": "",
+          "id": "A String", # The string identifier of the category.
+        },
+        "pwa": { # The Progressive-Web-App (PWA) category, containing all pwa related audits.
+          "description": "A String", # A more detailed description of the category and its importance.
+          "title": "A String", # The human-friendly name of the category.
+          "auditRefs": [ # An array of references to all the audit members of this category.
+            {
+              "group": "A String", # The category group that the audit belongs to (optional).
+              "id": "A String", # The audit ref id.
+              "weight": 3.14, # The weight this audit's score has on the overall category score.
+            },
+          ],
+          "manualDescription": "A String", # A description for the manual audits in the category.
+          "score": "",
+          "id": "A String", # The string identifier of the category.
+        },
+        "accessibility": { # The accessibility category, containing all accessibility related audits.
+          "description": "A String", # A more detailed description of the category and its importance.
+          "title": "A String", # The human-friendly name of the category.
+          "auditRefs": [ # An array of references to all the audit members of this category.
+            {
+              "group": "A String", # The category group that the audit belongs to (optional).
+              "id": "A String", # The audit ref id.
+              "weight": 3.14, # The weight this audit's score has on the overall category score.
+            },
+          ],
+          "manualDescription": "A String", # A description for the manual audits in the category.
+          "score": "",
+          "id": "A String", # The string identifier of the category.
+        },
+        "performance": { # The performance category, containing all performance related audits.
+          "description": "A String", # A more detailed description of the category and its importance.
+          "title": "A String", # The human-friendly name of the category.
+          "auditRefs": [ # An array of references to all the audit members of this category.
+            {
+              "group": "A String", # The category group that the audit belongs to (optional).
+              "id": "A String", # The audit ref id.
+              "weight": 3.14, # The weight this audit's score has on the overall category score.
+            },
+          ],
+          "manualDescription": "A String", # A description for the manual audits in the category.
+          "score": "",
+          "id": "A String", # The string identifier of the category.
+        },
+      },
+      "requestedUrl": "A String", # The original requested url.
+    },
+    "id": "A String", # Canonicalized and final URL for the document, after following page redirects (if any).
+  }</pre>
+</div>
+
+</body></html>
\ No newline at end of file