Regen all docs. (#700)

* Stop recursing if discovery == {}

* Generate docs with 'make docs'.
diff --git a/docs/dyn/alertcenter_v1beta1.alerts.html b/docs/dyn/alertcenter_v1beta1.alerts.html
new file mode 100644
index 0000000..346f4aa
--- /dev/null
+++ b/docs/dyn/alertcenter_v1beta1.alerts.html
@@ -0,0 +1,339 @@
+<html><body>
+<style>
+
+body, h1, h2, h3, div, span, p, pre, a {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-weight: inherit;
+  font-style: inherit;
+  font-size: 100%;
+  font-family: inherit;
+  vertical-align: baseline;
+}
+
+body {
+  font-size: 13px;
+  padding: 1em;
+}
+
+h1 {
+  font-size: 26px;
+  margin-bottom: 1em;
+}
+
+h2 {
+  font-size: 24px;
+  margin-bottom: 1em;
+}
+
+h3 {
+  font-size: 20px;
+  margin-bottom: 1em;
+  margin-top: 1em;
+}
+
+pre, code {
+  line-height: 1.5;
+  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
+}
+
+pre {
+  margin-top: 0.5em;
+}
+
+h1, h2, h3, p {
+  font-family: Arial, sans serif;
+}
+
+h1, h2, h3 {
+  border-bottom: solid #CCC 1px;
+}
+
+.toc_element {
+  margin-top: 0.5em;
+}
+
+.firstline {
+  margin-left: 2 em;
+}
+
+.method  {
+  margin-top: 1em;
+  border: solid 1px #CCC;
+  padding: 1em;
+  background: #EEE;
+}
+
+.details {
+  font-weight: bold;
+  font-size: 14px;
+}
+
+</style>
+
+<h1><a href="alertcenter_v1beta1.html">G Suite Alert Center API</a> . <a href="alertcenter_v1beta1.alerts.html">alerts</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="alertcenter_v1beta1.alerts.feedback.html">feedback()</a></code>
+</p>
+<p class="firstline">Returns the feedback Resource.</p>
+
+<p class="toc_element">
+  <code><a href="#delete">delete(alertId, customerId=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Marks the specified alert for deletion. An alert that has been marked for</p>
+<p class="toc_element">
+  <code><a href="#get">get(alertId, customerId=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Gets the specified alert. Attempting to get a nonexistent alert returns</p>
+<p class="toc_element">
+  <code><a href="#list">list(orderBy=None, pageSize=None, pageToken=None, customerId=None, x__xgafv=None, filter=None)</a></code></p>
+<p class="firstline">Lists the alerts.</p>
+<p class="toc_element">
+  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
+<p class="firstline">Retrieves the next page of results.</p>
+<p class="toc_element">
+  <code><a href="#undelete">undelete(alertId, body, x__xgafv=None)</a></code></p>
+<p class="firstline">Restores, or "undeletes", an alert that was marked for deletion within the</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="delete">delete(alertId, customerId=None, x__xgafv=None)</code>
+  <pre>Marks the specified alert for deletion. An alert that has been marked for
+deletion is removed from Alert Center after 30 days.
+Marking an alert for deletion has no effect on an alert which has
+already been marked for deletion. Attempting to mark a nonexistent alert
+for deletion results in a `NOT_FOUND` error.
+
+Args:
+  alertId: string, Required. The identifier of the alert to delete. (required)
+  customerId: string, Optional. The unique identifier of the G Suite organization account of the
+customer the alert is associated with.
+Inferred from the caller identity if not provided.
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # A generic empty message that you can re-use to avoid defining duplicated
+      # empty messages in your APIs. A typical example is to use it as the request
+      # or the response type of an API method. For instance:
+      #
+      #     service Foo {
+      #       rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);
+      #     }
+      #
+      # The JSON representation for `Empty` is empty JSON object `{}`.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="get">get(alertId, customerId=None, x__xgafv=None)</code>
+  <pre>Gets the specified alert. Attempting to get a nonexistent alert returns
+`NOT_FOUND` error.
+
+Args:
+  alertId: string, Required. The identifier of the alert to retrieve. (required)
+  customerId: string, Optional. The unique identifier of the G Suite organization account of the
+customer the alert is associated with.
+Inferred from the caller identity if not provided.
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # An alert affecting a customer.
+    "updateTime": "A String", # Output only. The time this alert was last updated.
+    "alertId": "A String", # Output only. The unique identifier for the alert.
+    "deleted": True or False, # Output only. `True` if this alert is marked for deletion.
+    "type": "A String", # Required. The type of the alert.
+        # This is output only after alert is created.
+        # For a list of available alert types see
+        # [G Suite Alert types](/admin-sdk/alertcenter/reference/alert-types).
+    "createTime": "A String", # Output only. The time this alert was created.
+    "source": "A String", # Required. A unique identifier for the system that reported the alert.
+        # This is output only after alert is created.
+        #
+        # Supported sources are any of the following:
+        #
+        # * Google Operations
+        # * Mobile device management
+        # * Gmail phishing
+        # * Domain wide takeout
+        # * Government attack warning
+        # * Google identity
+    "startTime": "A String", # Required. The time the event that caused this alert was started or
+        # detected.
+    "endTime": "A String", # Optional. The time the event that caused this alert ceased being active.
+        # If provided, the end time must not be earlier than the start time.
+        # If not provided, it indicates an ongoing alert.
+    "data": { # Optional. The data associated with this alert, for example
+        # google.apps.alertcenter.type.DeviceCompromised.
+      "a_key": "", # Properties of the object. Contains field @type with type URL.
+    },
+    "customerId": "A String", # Output only. The unique identifier of the Google account of the customer.
+    "securityInvestigationToolLink": "A String", # Output only. An optional
+        # [Security Investigation Tool](https://support.google.com/a/answer/7575955)
+        # query for this alert.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(orderBy=None, pageSize=None, pageToken=None, customerId=None, x__xgafv=None, filter=None)</code>
+  <pre>Lists the alerts.
+
+Args:
+  orderBy: string, Optional. The sort order of the list results.
+If not specified results may be returned in arbitrary order.
+You can sort the results in descending order based on the creation
+timestamp using `order_by="create_time desc"`.
+Currently, supported sorting are `create_time asc`, `create_time desc`,
+`update_time desc`
+  pageSize: integer, Optional. The requested page size. Server may return fewer items than
+requested. If unspecified, server picks an appropriate default.
+  pageToken: string, Optional. A token identifying a page of results the server should return.
+If empty, a new iteration is started. To continue an iteration, pass in
+the value from the previous ListAlertsResponse's
+next_page_token field.
+  customerId: string, Optional. The unique identifier of the G Suite organization account of the
+customer the alerts are associated with.
+Inferred from the caller identity if not provided.
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+  filter: string, Optional. A query string for filtering alert results.
+For more details, see [Query
+filters](/admin-sdk/alertcenter/guides/query-filters) and [Supported
+query filter
+fields](/admin-sdk/alertcenter/reference/filter-fields#alerts.list).
+
+Returns:
+  An object of the form:
+
+    { # Response message for an alert listing request.
+    "nextPageToken": "A String", # The token for the next page. If not empty, indicates that there may be more
+        # alerts that match the listing request; this value can be used in a
+        # subsequent ListAlertsRequest to get alerts continuing from last result
+        # of the current list call.
+    "alerts": [ # The list of alerts.
+      { # An alert affecting a customer.
+        "updateTime": "A String", # Output only. The time this alert was last updated.
+        "alertId": "A String", # Output only. The unique identifier for the alert.
+        "deleted": True or False, # Output only. `True` if this alert is marked for deletion.
+        "type": "A String", # Required. The type of the alert.
+            # This is output only after alert is created.
+            # For a list of available alert types see
+            # [G Suite Alert types](/admin-sdk/alertcenter/reference/alert-types).
+        "createTime": "A String", # Output only. The time this alert was created.
+        "source": "A String", # Required. A unique identifier for the system that reported the alert.
+            # This is output only after alert is created.
+            #
+            # Supported sources are any of the following:
+            #
+            # * Google Operations
+            # * Mobile device management
+            # * Gmail phishing
+            # * Domain wide takeout
+            # * Government attack warning
+            # * Google identity
+        "startTime": "A String", # Required. The time the event that caused this alert was started or
+            # detected.
+        "endTime": "A String", # Optional. The time the event that caused this alert ceased being active.
+            # If provided, the end time must not be earlier than the start time.
+            # If not provided, it indicates an ongoing alert.
+        "data": { # Optional. The data associated with this alert, for example
+            # google.apps.alertcenter.type.DeviceCompromised.
+          "a_key": "", # Properties of the object. Contains field @type with type URL.
+        },
+        "customerId": "A String", # Output only. The unique identifier of the Google account of the customer.
+        "securityInvestigationToolLink": "A String", # Output only. An optional
+            # [Security Investigation Tool](https://support.google.com/a/answer/7575955)
+            # query for this alert.
+      },
+    ],
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
+  <pre>Retrieves the next page of results.
+
+Args:
+  previous_request: The request for the previous page. (required)
+  previous_response: The response from the request for the previous page. (required)
+
+Returns:
+  A request object that you can call 'execute()' on to request the next
+  page. Returns None if there are no more items in the collection.
+    </pre>
+</div>
+
+<div class="method">
+    <code class="details" id="undelete">undelete(alertId, body, x__xgafv=None)</code>
+  <pre>Restores, or "undeletes", an alert that was marked for deletion within the
+past 30 days. Attempting to undelete an alert which was marked for deletion
+over 30 days ago (which has been removed from the Alert Center database) or
+a nonexistent alert returns a `NOT_FOUND` error. Attempting to
+undelete an alert which has not been marked for deletion has no effect.
+
+Args:
+  alertId: string, Required. The identifier of the alert to undelete. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # A request to undelete a specific alert that was marked for deletion.
+    "customerId": "A String", # Optional. The unique identifier of the G Suite organization account of the
+        # customer the alert is associated with.
+        # Inferred from the caller identity if not provided.
+  }
+
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # An alert affecting a customer.
+    "updateTime": "A String", # Output only. The time this alert was last updated.
+    "alertId": "A String", # Output only. The unique identifier for the alert.
+    "deleted": True or False, # Output only. `True` if this alert is marked for deletion.
+    "type": "A String", # Required. The type of the alert.
+        # This is output only after alert is created.
+        # For a list of available alert types see
+        # [G Suite Alert types](/admin-sdk/alertcenter/reference/alert-types).
+    "createTime": "A String", # Output only. The time this alert was created.
+    "source": "A String", # Required. A unique identifier for the system that reported the alert.
+        # This is output only after alert is created.
+        #
+        # Supported sources are any of the following:
+        #
+        # * Google Operations
+        # * Mobile device management
+        # * Gmail phishing
+        # * Domain wide takeout
+        # * Government attack warning
+        # * Google identity
+    "startTime": "A String", # Required. The time the event that caused this alert was started or
+        # detected.
+    "endTime": "A String", # Optional. The time the event that caused this alert ceased being active.
+        # If provided, the end time must not be earlier than the start time.
+        # If not provided, it indicates an ongoing alert.
+    "data": { # Optional. The data associated with this alert, for example
+        # google.apps.alertcenter.type.DeviceCompromised.
+      "a_key": "", # Properties of the object. Contains field @type with type URL.
+    },
+    "customerId": "A String", # Output only. The unique identifier of the Google account of the customer.
+    "securityInvestigationToolLink": "A String", # Output only. An optional
+        # [Security Investigation Tool](https://support.google.com/a/answer/7575955)
+        # query for this alert.
+  }</pre>
+</div>
+
+</body></html>
\ No newline at end of file