Regen all docs. (#700)

* Stop recursing if discovery == {}

* Generate docs with 'make docs'.
diff --git a/docs/dyn/content_v2.pos.html b/docs/dyn/content_v2.pos.html
new file mode 100644
index 0000000..3e1276a
--- /dev/null
+++ b/docs/dyn/content_v2.pos.html
@@ -0,0 +1,388 @@
+<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="content_v2.html">Content API for Shopping</a> . <a href="content_v2.pos.html">pos</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+  <code><a href="#custombatch">custombatch(body, dryRun=None)</a></code></p>
+<p class="firstline">Batches multiple POS-related calls in a single request.</p>
+<p class="toc_element">
+  <code><a href="#delete">delete(merchantId, targetMerchantId, storeCode, dryRun=None)</a></code></p>
+<p class="firstline">Deletes a store for the given merchant.</p>
+<p class="toc_element">
+  <code><a href="#get">get(merchantId, targetMerchantId, storeCode)</a></code></p>
+<p class="firstline">Retrieves information about the given store.</p>
+<p class="toc_element">
+  <code><a href="#insert">insert(merchantId, targetMerchantId, body, dryRun=None)</a></code></p>
+<p class="firstline">Creates a store for the given merchant.</p>
+<p class="toc_element">
+  <code><a href="#inventory">inventory(merchantId, targetMerchantId, body, dryRun=None)</a></code></p>
+<p class="firstline">Submit inventory for the given merchant.</p>
+<p class="toc_element">
+  <code><a href="#list">list(merchantId, targetMerchantId)</a></code></p>
+<p class="firstline">Lists the stores of the target merchant.</p>
+<p class="toc_element">
+  <code><a href="#sale">sale(merchantId, targetMerchantId, body, dryRun=None)</a></code></p>
+<p class="firstline">Submit a sale event for the given merchant.</p>
+<h3>Method Details</h3>
+<div class="method">
+    <code class="details" id="custombatch">custombatch(body, dryRun=None)</code>
+  <pre>Batches multiple POS-related calls in a single request.
+
+Args:
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{
+    "entries": [ # The request entries to be processed in the batch.
+      {
+        "storeCode": "A String", # The store code. Set this only if the method is delete or get.
+        "targetMerchantId": "A String", # The ID of the account for which to get/submit data.
+        "sale": { # The change of the available quantity of an item at the given store. # The sale information to submit. Set this only if the method is sale.
+          "itemId": "A String", # A unique identifier for the item.
+          "storeCode": "A String", # The identifier of the merchant's store. Either a storeCode inserted via the API or the code of the store in Google My Business.
+          "kind": "content#posSale", # Identifies what kind of resource this is. Value: the fixed string "content#posSale".
+          "contentLanguage": "A String", # The two-letter ISO 639-1 language code for the item.
+          "timestamp": "A String", # The inventory timestamp, in ISO 8601 format.
+          "price": { # The price of the item.
+            "currency": "A String", # The currency of the price.
+            "value": "A String", # The price represented as a number.
+          },
+          "targetCountry": "A String", # The CLDR territory code for the item.
+          "gtin": "A String", # Global Trade Item Number.
+          "saleId": "A String", # A unique ID to group items from the same sale event.
+          "quantity": "A String", # The relative change of the available quantity. Negative for items returned.
+        },
+        "merchantId": "A String", # The ID of the POS data provider.
+        "batchId": 42, # An entry ID, unique within the batch request.
+        "inventory": { # The absolute quantity of an item available at the given store. # The inventory to submit. Set this only if the method is inventory.
+          "itemId": "A String", # A unique identifier for the item.
+          "storeCode": "A String", # The identifier of the merchant's store. Either a storeCode inserted via the API or the code of the store in Google My Business.
+          "kind": "content#posInventory", # Identifies what kind of resource this is. Value: the fixed string "content#posInventory".
+          "contentLanguage": "A String", # The two-letter ISO 639-1 language code for the item.
+          "timestamp": "A String", # The inventory timestamp, in ISO 8601 format.
+          "price": { # The current price of the item.
+            "currency": "A String", # The currency of the price.
+            "value": "A String", # The price represented as a number.
+          },
+          "targetCountry": "A String", # The CLDR territory code for the item.
+          "gtin": "A String", # Global Trade Item Number.
+          "quantity": "A String", # The available quantity of the item.
+        },
+        "method": "A String",
+        "store": { # Store resource. # The store information to submit. Set this only if the method is insert.
+            "storeAddress": "A String", # The street address of the store.
+            "kind": "content#posStore", # Identifies what kind of resource this is. Value: the fixed string "content#posStore".
+            "storeCode": "A String", # A store identifier that is unique for the given merchant.
+          },
+      },
+    ],
+  }
+
+  dryRun: boolean, Flag to simulate a request like in a live environment. If set to true, dry-run mode checks the validity of the request and returns errors (if any).
+
+Returns:
+  An object of the form:
+
+    {
+    "kind": "content#posCustomBatchResponse", # Identifies what kind of resource this is. Value: the fixed string "content#posCustomBatchResponse".
+    "entries": [ # The result of the execution of the batch requests.
+      {
+        "kind": "content#posCustomBatchResponseEntry", # Identifies what kind of resource this is. Value: the fixed string "content#posCustomBatchResponseEntry".
+        "errors": { # A list of errors returned by a failed batch entry. # A list of errors defined if, and only if, the request failed.
+          "message": "A String", # The message of the first error in errors.
+          "code": 42, # The HTTP status of the first error in errors.
+          "errors": [ # A list of errors.
+            { # An error returned by the API.
+              "reason": "A String", # The error code.
+              "domain": "A String", # The domain of the error.
+              "message": "A String", # A description of the error.
+            },
+          ],
+        },
+        "sale": { # The change of the available quantity of an item at the given store. # The updated sale information.
+          "itemId": "A String", # A unique identifier for the item.
+          "storeCode": "A String", # The identifier of the merchant's store. Either a storeCode inserted via the API or the code of the store in Google My Business.
+          "kind": "content#posSale", # Identifies what kind of resource this is. Value: the fixed string "content#posSale".
+          "contentLanguage": "A String", # The two-letter ISO 639-1 language code for the item.
+          "timestamp": "A String", # The inventory timestamp, in ISO 8601 format.
+          "price": { # The price of the item.
+            "currency": "A String", # The currency of the price.
+            "value": "A String", # The price represented as a number.
+          },
+          "targetCountry": "A String", # The CLDR territory code for the item.
+          "gtin": "A String", # Global Trade Item Number.
+          "saleId": "A String", # A unique ID to group items from the same sale event.
+          "quantity": "A String", # The relative change of the available quantity. Negative for items returned.
+        },
+        "batchId": 42, # The ID of the request entry to which this entry responds.
+        "inventory": { # The absolute quantity of an item available at the given store. # The updated inventory information.
+          "itemId": "A String", # A unique identifier for the item.
+          "storeCode": "A String", # The identifier of the merchant's store. Either a storeCode inserted via the API or the code of the store in Google My Business.
+          "kind": "content#posInventory", # Identifies what kind of resource this is. Value: the fixed string "content#posInventory".
+          "contentLanguage": "A String", # The two-letter ISO 639-1 language code for the item.
+          "timestamp": "A String", # The inventory timestamp, in ISO 8601 format.
+          "price": { # The current price of the item.
+            "currency": "A String", # The currency of the price.
+            "value": "A String", # The price represented as a number.
+          },
+          "targetCountry": "A String", # The CLDR territory code for the item.
+          "gtin": "A String", # Global Trade Item Number.
+          "quantity": "A String", # The available quantity of the item.
+        },
+        "store": { # Store resource. # The retrieved or updated store information.
+            "storeAddress": "A String", # The street address of the store.
+            "kind": "content#posStore", # Identifies what kind of resource this is. Value: the fixed string "content#posStore".
+            "storeCode": "A String", # A store identifier that is unique for the given merchant.
+          },
+      },
+    ],
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="delete">delete(merchantId, targetMerchantId, storeCode, dryRun=None)</code>
+  <pre>Deletes a store for the given merchant.
+
+Args:
+  merchantId: string, The ID of the POS or inventory data provider. (required)
+  targetMerchantId: string, The ID of the target merchant. (required)
+  storeCode: string, A store code that is unique per merchant. (required)
+  dryRun: boolean, Flag to simulate a request like in a live environment. If set to true, dry-run mode checks the validity of the request and returns errors (if any).
+</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="get">get(merchantId, targetMerchantId, storeCode)</code>
+  <pre>Retrieves information about the given store.
+
+Args:
+  merchantId: string, The ID of the POS or inventory data provider. (required)
+  targetMerchantId: string, The ID of the target merchant. (required)
+  storeCode: string, A store code that is unique per merchant. (required)
+
+Returns:
+  An object of the form:
+
+    { # Store resource.
+      "storeAddress": "A String", # The street address of the store.
+      "kind": "content#posStore", # Identifies what kind of resource this is. Value: the fixed string "content#posStore".
+      "storeCode": "A String", # A store identifier that is unique for the given merchant.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="insert">insert(merchantId, targetMerchantId, body, dryRun=None)</code>
+  <pre>Creates a store for the given merchant.
+
+Args:
+  merchantId: string, The ID of the POS or inventory data provider. (required)
+  targetMerchantId: string, The ID of the target merchant. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Store resource.
+    "storeAddress": "A String", # The street address of the store.
+    "kind": "content#posStore", # Identifies what kind of resource this is. Value: the fixed string "content#posStore".
+    "storeCode": "A String", # A store identifier that is unique for the given merchant.
+  }
+
+  dryRun: boolean, Flag to simulate a request like in a live environment. If set to true, dry-run mode checks the validity of the request and returns errors (if any).
+
+Returns:
+  An object of the form:
+
+    { # Store resource.
+      "storeAddress": "A String", # The street address of the store.
+      "kind": "content#posStore", # Identifies what kind of resource this is. Value: the fixed string "content#posStore".
+      "storeCode": "A String", # A store identifier that is unique for the given merchant.
+    }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="inventory">inventory(merchantId, targetMerchantId, body, dryRun=None)</code>
+  <pre>Submit inventory for the given merchant.
+
+Args:
+  merchantId: string, The ID of the POS or inventory data provider. (required)
+  targetMerchantId: string, The ID of the target merchant. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{
+    "itemId": "A String", # A unique identifier for the item.
+    "storeCode": "A String", # The identifier of the merchant's store. Either a storeCode inserted via the API or the code of the store in Google My Business.
+    "targetCountry": "A String", # The CLDR territory code for the item.
+    "contentLanguage": "A String", # The two-letter ISO 639-1 language code for the item.
+    "timestamp": "A String", # The inventory timestamp, in ISO 8601 format.
+    "price": { # The current price of the item.
+      "currency": "A String", # The currency of the price.
+      "value": "A String", # The price represented as a number.
+    },
+    "gtin": "A String", # Global Trade Item Number.
+    "quantity": "A String", # The available quantity of the item.
+  }
+
+  dryRun: boolean, Flag to simulate a request like in a live environment. If set to true, dry-run mode checks the validity of the request and returns errors (if any).
+
+Returns:
+  An object of the form:
+
+    {
+    "itemId": "A String", # A unique identifier for the item.
+    "storeCode": "A String", # The identifier of the merchant's store. Either a storeCode inserted via the API or the code of the store in Google My Business.
+    "kind": "content#posInventoryResponse", # Identifies what kind of resource this is. Value: the fixed string "content#posInventoryResponse".
+    "contentLanguage": "A String", # The two-letter ISO 639-1 language code for the item.
+    "timestamp": "A String", # The inventory timestamp, in ISO 8601 format.
+    "price": { # The current price of the item.
+      "currency": "A String", # The currency of the price.
+      "value": "A String", # The price represented as a number.
+    },
+    "targetCountry": "A String", # The CLDR territory code for the item.
+    "gtin": "A String", # Global Trade Item Number.
+    "quantity": "A String", # The available quantity of the item.
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="list">list(merchantId, targetMerchantId)</code>
+  <pre>Lists the stores of the target merchant.
+
+Args:
+  merchantId: string, The ID of the POS or inventory data provider. (required)
+  targetMerchantId: string, The ID of the target merchant. (required)
+
+Returns:
+  An object of the form:
+
+    {
+    "kind": "content#posListResponse", # Identifies what kind of resource this is. Value: the fixed string "content#posListResponse".
+    "resources": [
+      { # Store resource.
+          "storeAddress": "A String", # The street address of the store.
+          "kind": "content#posStore", # Identifies what kind of resource this is. Value: the fixed string "content#posStore".
+          "storeCode": "A String", # A store identifier that is unique for the given merchant.
+        },
+    ],
+  }</pre>
+</div>
+
+<div class="method">
+    <code class="details" id="sale">sale(merchantId, targetMerchantId, body, dryRun=None)</code>
+  <pre>Submit a sale event for the given merchant.
+
+Args:
+  merchantId: string, The ID of the POS or inventory data provider. (required)
+  targetMerchantId: string, The ID of the target merchant. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{
+    "itemId": "A String", # A unique identifier for the item.
+    "storeCode": "A String", # The identifier of the merchant's store. Either a storeCode inserted via the API or the code of the store in Google My Business.
+    "targetCountry": "A String", # The CLDR territory code for the item.
+    "contentLanguage": "A String", # The two-letter ISO 639-1 language code for the item.
+    "timestamp": "A String", # The inventory timestamp, in ISO 8601 format.
+    "price": { # The price of the item.
+      "currency": "A String", # The currency of the price.
+      "value": "A String", # The price represented as a number.
+    },
+    "saleId": "A String", # A unique ID to group items from the same sale event.
+    "gtin": "A String", # Global Trade Item Number.
+    "quantity": "A String", # The relative change of the available quantity. Negative for items returned.
+  }
+
+  dryRun: boolean, Flag to simulate a request like in a live environment. If set to true, dry-run mode checks the validity of the request and returns errors (if any).
+
+Returns:
+  An object of the form:
+
+    {
+    "itemId": "A String", # A unique identifier for the item.
+    "storeCode": "A String", # The identifier of the merchant's store. Either a storeCode inserted via the API or the code of the store in Google My Business.
+    "kind": "content#posSaleResponse", # Identifies what kind of resource this is. Value: the fixed string "content#posSaleResponse".
+    "contentLanguage": "A String", # The two-letter ISO 639-1 language code for the item.
+    "timestamp": "A String", # The inventory timestamp, in ISO 8601 format.
+    "price": { # The price of the item.
+      "currency": "A String", # The currency of the price.
+      "value": "A String", # The price represented as a number.
+    },
+    "targetCountry": "A String", # The CLDR territory code for the item.
+    "gtin": "A String", # Global Trade Item Number.
+    "saleId": "A String", # A unique ID to group items from the same sale event.
+    "quantity": "A String", # The relative change of the available quantity. Negative for items returned.
+  }</pre>
+</div>
+
+</body></html>
\ No newline at end of file